// Copyright 2021 The Chromium Embedded Framework 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 CEF_LIBCEF_BROWSER_BROWSER_MANAGER_H_ #define CEF_LIBCEF_BROWSER_BROWSER_MANAGER_H_ #include "cef/libcef/common/mojom/cef.mojom.h" #include "mojo/public/cpp/bindings/remote.h" #include "services/service_manager/public/cpp/binder_registry.h" namespace blink { class AssociatedInterfaceRegistry; } namespace content { class RenderProcessHost; } class CefBrowserManager : public cef::mojom::BrowserManager { public: explicit CefBrowserManager(int render_process_id); CefBrowserManager(const CefBrowserManager&) = delete; CefBrowserManager& operator=(const CefBrowserManager&) = delete; ~CefBrowserManager() override; // Called from the ContentBrowserClient method of the same name. // |associated_registry| is used for interfaces which must be associated with // some IPC::ChannelProxy, meaning that messages on the interface retain FIFO // with respect to legacy Chrome IPC messages sent or dispatched on the // channel. static void ExposeInterfacesToRenderer( service_manager::BinderRegistry* registry, blink::AssociatedInterfaceRegistry* associated_registry, content::RenderProcessHost* host); // Connects to CefRenderManager in the render process. static mojo::Remote GetRenderManagerForProcess( content::RenderProcessHost* host); private: // cef::mojom::BrowserManager methods: void GetNewRenderThreadInfo( cef::mojom::BrowserManager::GetNewRenderThreadInfoCallback callback) override; void GetNewBrowserInfo( int32_t render_frame_routing_id, cef::mojom::BrowserManager::GetNewBrowserInfoCallback callback) override; // The process ID of the renderer. const int render_process_id_; }; #endif // CEF_LIBCEF_BROWSER_BROWSER_MANAGER_H_