// Copyright 2024 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_DEVTOOLS_DEVTOOLS_WINDOW_RUNNER_H_ #define CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_RUNNER_H_ #pragma once #include #include "base/memory/weak_ptr.h" #include "cef/include/cef_client.h" class CefBrowserHostBase; class ChromeBrowserHostImpl; // Parameters passed to ShowDevTools. struct CefShowDevToolsParams { CefShowDevToolsParams(const CefWindowInfo& windowInfo, CefRefPtr client, const CefBrowserSettings& settings, const CefPoint& inspect_element_at) : window_info_(windowInfo), client_(client), settings_(settings), inspect_element_at_(inspect_element_at) {} CefWindowInfo window_info_; CefRefPtr client_; CefBrowserSettings settings_; CefPoint inspect_element_at_; }; // Creates and runs a DevTools window instance. Only accessed on the UI thread. class CefDevToolsWindowRunner final { public: CefDevToolsWindowRunner() = default; CefDevToolsWindowRunner(const CefDevToolsWindowRunner&) = delete; CefDevToolsWindowRunner& operator=(const CefDevToolsWindowRunner&) = delete; void ShowDevTools(CefBrowserHostBase* opener, std::unique_ptr params); void CloseDevTools(); bool HasDevTools(); std::unique_ptr TakePendingParams(); void SetDevToolsBrowserHost( base::WeakPtr browser_host); private: std::unique_ptr pending_params_; base::WeakPtr browser_host_; }; #endif // CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_WINDOW_RUNNER_H_