// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_SERVICES_AUCTION_WORKLET_AUCTION_V8_DEVTOOLS_AGENT_H_ #define CONTENT_SERVICES_AUCTION_WORKLET_AUCTION_V8_DEVTOOLS_AGENT_H_ #include <map> #include <set> #include <string> #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "mojo/public/cpp/bindings/associated_receiver_set.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "mojo/public/cpp/bindings/pending_associated_remote.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/unique_associated_receiver_set.h" #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" #include "v8/include/v8-inspector.h" namespace auction_worklet { class AuctionV8Helper; class AuctionV8DevToolsSession; class DebugCommandQueue; // Implementation of blink.mojom.DevToolsAgent for things run via // AuctionV8Helper. // // Responsible for hooking up DevTools to V8 for auction worklets. Lives // entirely on the V8 thread, including receiving Mojo messages there, though // creates DevTools IO session receivers on `io_session_receiver_sequence`, // as they are required to be on a different thread for use when the V8 // thread is busy. // // Receiver for per-context group blink::mojom::DevToolsAgent pipes. // Creates/manages the lifetimes of the blink::mojom::DevToolsSessions. Also // serves as the v8_inspector::V8InspectorClient to handle pause/resume calls // received back from V8. // // To summarize, the thread split is as follows: // // Mojo thread: // - AuctionWorkletService & its Mojo interface // - BidderWorklet and SellerWorklet objects & their Mojo interfaces // - IOSession objects & their Mojo interfaces // // V8 thread: // - V8 parsing and running the worklet JavaScript. // - AuctionV8DevToolsAgent and its mojo // - AuctionV8DevToolsSession and its mojo class AuctionV8DevToolsAgent : public blink::mojom::DevToolsAgent, public v8_inspector::V8InspectorClient { … }; } // namespace auction_worklet #endif // CONTENT_SERVICES_AUCTION_WORKLET_AUCTION_V8_DEVTOOLS_AGENT_H_