mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
chrome: Change popup default behavior with native parent (see issue #3294)
When using a Views-hosted browser window the client receives Views-related callbacks for popups and can thereby customize the Views-hosted popup behavior. When using an external parent window no Views-related callbacks are delivered and customization options are restricted to providing a new parent handle via OnBeforePopup. Consequently, we should default to a normal browser window in the external parent case instead of the very minimial Views-hosted default. To test (A): 1. Run `cefclient --use-default-popup --enable-chrome-runtime --use-native` 2. Select Tests > Popup Window 3. Get a normal Chrome browser window To test (B): 1. Run `cefclient --use-default-popup [--enable-chrome-runtime] [--use-views]` 2. Select Tests > Popup Window 3. Get a native or Views-hosted browser window with title bar only
This commit is contained in:
@@ -179,7 +179,16 @@ bool CefBrowserInfoManager::CanCreateWindow(
|
||||
if (allow) {
|
||||
CefBrowserCreateParams create_params;
|
||||
create_params.MaybeSetWindowInfo(window_info);
|
||||
create_params.popup_with_views_hosted_opener = browser->HasView();
|
||||
|
||||
// In most cases, Views-hosted browsers should create Views-hosted popups
|
||||
// and native browsers should use default popup handling. The one exception
|
||||
// is with the Chrome runtime where a Views-hosted browser may have an
|
||||
// external parent. In that case we want to use default popup handling even
|
||||
// though the parent is (technically) Views-hosted.
|
||||
create_params.popup_with_views_hosted_opener =
|
||||
browser->HasView() &&
|
||||
!browser->platform_delegate()->HasExternalParent();
|
||||
|
||||
create_params.settings = pending_popup->settings;
|
||||
create_params.client = pending_popup->client;
|
||||
create_params.extra_info = pending_popup->extra_info;
|
||||
|
Reference in New Issue
Block a user