cefclient: Use default window for DevTools non-Views popup (see #3681)
Chrome runtime only supports creation of a Views-hosted DevTools popup in ChromeBrowserDelegate::CreateDevToolsBrowser if the parent is also Views-hosted. To test: - Run `cefclient --use-native` - Right click, select "Show DevTools" - Close both windows and the app should exit
This commit is contained in:
parent
5a2cfb6907
commit
48137b9538
|
@ -58,9 +58,13 @@ class ClientRequestContextHandler : public CefRequestContextHandler {
|
||||||
|
|
||||||
// Ensure a compatible set of window creation attributes.
|
// Ensure a compatible set of window creation attributes.
|
||||||
void SanityCheckWindowConfig(const bool is_devtools,
|
void SanityCheckWindowConfig(const bool is_devtools,
|
||||||
bool& use_views,
|
const bool use_views,
|
||||||
bool& use_alloy_style,
|
bool& use_alloy_style,
|
||||||
bool& with_osr) {
|
bool& with_osr) {
|
||||||
|
// This configuration is not supported by cefclient architecture and
|
||||||
|
// should use default window creation instead.
|
||||||
|
CHECK(!(is_devtools && !use_views));
|
||||||
|
|
||||||
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
|
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
|
||||||
if (MainContext::Get()->UseChromeBootstrap())
|
if (MainContext::Get()->UseChromeBootstrap())
|
||||||
#endif
|
#endif
|
||||||
|
@ -71,13 +75,6 @@ void SanityCheckWindowConfig(const bool is_devtools,
|
||||||
" using Chrome style.";
|
" using Chrome style.";
|
||||||
use_alloy_style = false;
|
use_alloy_style = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_devtools && !use_views) {
|
|
||||||
LOG(WARNING)
|
|
||||||
<< "Native parent is not supported with Chrome runtime DevTools;"
|
|
||||||
" using Views.";
|
|
||||||
use_views = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!use_alloy_style && with_osr) {
|
if (!use_alloy_style && with_osr) {
|
||||||
|
@ -141,15 +138,15 @@ scoped_refptr<RootWindow> RootWindowManager::CreateRootWindowAsPopup(
|
||||||
CefBrowserSettings& settings) {
|
CefBrowserSettings& settings) {
|
||||||
CEF_REQUIRE_UI_THREAD();
|
CEF_REQUIRE_UI_THREAD();
|
||||||
|
|
||||||
SanityCheckWindowConfig(is_devtools, use_views, use_alloy_style, with_osr);
|
if (MainContext::Get()->UseDefaultPopup() || (is_devtools && !use_views)) {
|
||||||
|
|
||||||
if (MainContext::Get()->UseDefaultPopup()) {
|
|
||||||
// Use default window creation for the popup. A new |client| instance is
|
// Use default window creation for the popup. A new |client| instance is
|
||||||
// still required by cefclient architecture.
|
// still required by cefclient architecture.
|
||||||
client = new DefaultClientHandler();
|
client = new DefaultClientHandler();
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SanityCheckWindowConfig(is_devtools, use_views, use_alloy_style, with_osr);
|
||||||
|
|
||||||
if (!temp_window_) {
|
if (!temp_window_) {
|
||||||
// TempWindow must be created on the UI thread.
|
// TempWindow must be created on the UI thread.
|
||||||
temp_window_.reset(new TempWindow());
|
temp_window_.reset(new TempWindow());
|
||||||
|
|
Loading…
Reference in New Issue