mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Add new CefBrowserHost::[Can]ExecuteChromeCommand methods for executing arbitrary Chrome commands. Add support for existing CefBrowserHost::ShowDevTools, CloseDevTools and HasDevTools methods. DevTools windows now support the same Views callbacks as normal popup windows with the new CefLifeSpanHandler::OnBeforeDevToolsPopup callback as the DevTools-specific equivalent of OnBeforePopup. Always create DevTools as an undocked window to support use of ShowDevTools with default Chrome browser windows. To test: Run `ceftests --enable-chrome-runtime [--use-views] --gtest_filter=V8Test.OnUncaughtExceptionDevTools` OR: 1. Run `cefclient --enable-chrome-runtime [--use-native]` 2. Select "Show DevTools", "Close DevTools" or "Inspect" from the right-click menu. 3. Notice that the DevTools window is Views-hosted (or native-hosted) and works as expected. Add --use-default-popup to get a default styled popup in step 3.
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
// $hash=d141b95304de99ab093db8f6c524a05e26f4edb5$
|
||||
// $hash=d85695db88a025b1f7e4e4604f3085da29d5eabf$
|
||||
//
|
||||
|
||||
#include "libcef_dll/ctocpp/life_span_handler_ctocpp.h"
|
||||
@@ -109,6 +109,76 @@ bool CefLifeSpanHandlerCToCpp::OnBeforePopup(
|
||||
return _retval ? true : false;
|
||||
}
|
||||
|
||||
NO_SANITIZE("cfi-icall")
|
||||
void CefLifeSpanHandlerCToCpp::OnBeforeDevToolsPopup(
|
||||
CefRefPtr<CefBrowser> browser,
|
||||
CefWindowInfo& windowInfo,
|
||||
CefRefPtr<CefClient>& client,
|
||||
CefBrowserSettings& settings,
|
||||
CefRefPtr<CefDictionaryValue>& extra_info,
|
||||
bool* use_default_window) {
|
||||
shutdown_checker::AssertNotShutdown();
|
||||
|
||||
cef_life_span_handler_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, on_before_dev_tools_popup)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: browser; type: refptr_diff
|
||||
DCHECK(browser.get());
|
||||
if (!browser.get()) {
|
||||
return;
|
||||
}
|
||||
// Verify param: use_default_window; type: bool_byaddr
|
||||
DCHECK(use_default_window);
|
||||
if (!use_default_window) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Translate param: client; type: refptr_same_byref
|
||||
cef_client_t* clientStruct = NULL;
|
||||
if (client.get()) {
|
||||
clientStruct = CefClientCToCpp::Unwrap(client);
|
||||
}
|
||||
cef_client_t* clientOrig = clientStruct;
|
||||
// Translate param: extra_info; type: refptr_diff_byref
|
||||
cef_dictionary_value_t* extra_infoStruct = NULL;
|
||||
if (extra_info.get()) {
|
||||
extra_infoStruct = CefDictionaryValueCppToC::Wrap(extra_info);
|
||||
}
|
||||
cef_dictionary_value_t* extra_infoOrig = extra_infoStruct;
|
||||
// Translate param: use_default_window; type: bool_byaddr
|
||||
int use_default_windowInt = use_default_window ? *use_default_window : 0;
|
||||
|
||||
// Execute
|
||||
_struct->on_before_dev_tools_popup(_struct, CefBrowserCppToC::Wrap(browser),
|
||||
&windowInfo, &clientStruct, &settings,
|
||||
&extra_infoStruct, &use_default_windowInt);
|
||||
|
||||
// Restore param:client; type: refptr_same_byref
|
||||
if (clientStruct) {
|
||||
if (clientStruct != clientOrig) {
|
||||
client = CefClientCToCpp::Wrap(clientStruct);
|
||||
}
|
||||
} else {
|
||||
client = nullptr;
|
||||
}
|
||||
// Restore param:extra_info; type: refptr_diff_byref
|
||||
if (extra_infoStruct) {
|
||||
if (extra_infoStruct != extra_infoOrig) {
|
||||
extra_info = CefDictionaryValueCppToC::Unwrap(extra_infoStruct);
|
||||
}
|
||||
} else {
|
||||
extra_info = nullptr;
|
||||
}
|
||||
// Restore param:use_default_window; type: bool_byaddr
|
||||
if (use_default_window) {
|
||||
*use_default_window = use_default_windowInt ? true : false;
|
||||
}
|
||||
}
|
||||
|
||||
NO_SANITIZE("cfi-icall")
|
||||
void CefLifeSpanHandlerCToCpp::OnAfterCreated(CefRefPtr<CefBrowser> browser) {
|
||||
shutdown_checker::AssertNotShutdown();
|
||||
|
Reference in New Issue
Block a user