12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // Copyright 2022 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef FUCHSIA_WEB_WEBINSTANCE_HOST_FUCHSIA_WEB_DEBUG_PROXY_H_
- #define FUCHSIA_WEB_WEBINSTANCE_HOST_FUCHSIA_WEB_DEBUG_PROXY_H_
- #include <fuchsia/web/cpp/fidl.h>
- #include <lib/fidl/cpp/binding_set.h>
- #include <lib/fidl/cpp/interface_ptr_set.h>
- // Proxies the fuchsia.web.Debug protocol to one or more registered
- // fuchsia.web.Debug implementations, allowing clients to use a single
- // fuchsia.web.Debug instance to observe DevTools availability across
- // multiple components (e.g. multiple web instances).
- class FuchsiaWebDebugProxy final : public fuchsia::web::Debug,
- public fuchsia::web::DevToolsListener {
- public:
- explicit FuchsiaWebDebugProxy();
- ~FuchsiaWebDebugProxy() override;
- // Returns true if one or more clients are active.
- bool has_clients() const { return devtools_listeners_.size() != 0u; }
- // Registers a new fuchsia.web.Debug protocol to be proxied.
- void RegisterInstance(fidl::InterfaceHandle<fuchsia::web::Debug> debug);
- // fuchsia::web::Debug implementation.
- void EnableDevTools(
- fidl::InterfaceHandle<fuchsia::web::DevToolsListener> listener,
- EnableDevToolsCallback callback) override;
- private:
- // fuchsia::web::DevToolsListener implementation.
- void OnContextDevToolsAvailable(
- fidl::InterfaceRequest<fuchsia::web::DevToolsPerContextListener> request)
- override;
- // DevToolsListeners registered by clients via the Debug interface.
- fidl::InterfacePtrSet<fuchsia::web::DevToolsListener> devtools_listeners_;
- // DevToolsListener bindings, connected to active web instances.
- fidl::BindingSet<fuchsia::web::DevToolsListener> instance_bindings_;
- };
- #endif // FUCHSIA_WEB_WEBINSTANCE_HOST_FUCHSIA_WEB_DEBUG_PROXY_H_
|