diff --git third_party/WebKit/Source/core/exported/WebViewBase.h third_party/WebKit/Source/core/exported/WebViewBase.h index 5b6db09f..73c2260 100644 --- third_party/WebKit/Source/core/exported/WebViewBase.h +++ third_party/WebKit/Source/core/exported/WebViewBase.h @@ -157,7 +157,7 @@ class WebViewBase : public WebView, public RefCounted { // Returns true if popup menus should be rendered by the browser, false if // they should be rendered by WebKit (which is the default). - static bool UseExternalPopupMenus(); + virtual bool UseExternalPopupMenus() const = 0; virtual GraphicsLayer* RootGraphicsLayer() = 0; virtual void RegisterViewportLayersWithCompositor() = 0; diff --git third_party/WebKit/Source/web/ChromeClientImpl.cpp third_party/WebKit/Source/web/ChromeClientImpl.cpp index cf36ed93..e508f14 100644 --- third_party/WebKit/Source/web/ChromeClientImpl.cpp +++ third_party/WebKit/Source/web/ChromeClientImpl.cpp @@ -781,7 +781,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, return nullptr; NotifyPopupOpeningObservers(); - if (WebViewBase::UseExternalPopupMenus()) + if (web_view_->UseExternalPopupMenus()) return new ExternalPopupMenu(frame, select, *web_view_); DCHECK(RuntimeEnabledFeatures::PagePopupEnabled()); diff --git third_party/WebKit/Source/web/WebViewImpl.cpp third_party/WebKit/Source/web/WebViewImpl.cpp index f7fc7dd..7aa4f01 100644 --- third_party/WebKit/Source/web/WebViewImpl.cpp +++ third_party/WebKit/Source/web/WebViewImpl.cpp @@ -320,6 +320,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client, enable_fake_page_scale_animation_for_testing_(false), fake_page_scale_animation_page_scale_factor_(0), fake_page_scale_animation_use_anchor_(false), + should_use_external_popup_menus_(g_should_use_external_popup_menus), compositor_device_scale_factor_override_(0), suppress_next_keypress_event_(false), ime_accept_events_(true), @@ -3644,12 +3645,13 @@ void WebViewImpl::MainFrameScrollOffsetChanged() { dev_tools_emulator_->MainFrameScrollOrScaleChanged(); } -bool WebViewBase::UseExternalPopupMenus() { - return WebViewImpl::UseExternalPopupMenus(); +void WebViewImpl::SetUseExternalPopupMenusThisInstance( + bool useExternalPopupMenus) { + should_use_external_popup_menus_ = useExternalPopupMenus; } -bool WebViewImpl::UseExternalPopupMenus() { - return g_should_use_external_popup_menus; +bool WebViewImpl::UseExternalPopupMenus() const { + return should_use_external_popup_menus_; } void WebViewImpl::SetBackgroundColorOverride(WebColor color) { diff --git third_party/WebKit/Source/web/WebViewImpl.h third_party/WebKit/Source/web/WebViewImpl.h index 5ea6e7b..5c7b4d8 100644 --- third_party/WebKit/Source/web/WebViewImpl.h +++ third_party/WebKit/Source/web/WebViewImpl.h @@ -345,7 +345,8 @@ class WEB_EXPORT WebViewImpl final // Returns true if popup menus should be rendered by the browser, false if // they should be rendered by WebKit (which is the default). - static bool UseExternalPopupMenus(); + void SetUseExternalPopupMenusThisInstance(bool); + bool UseExternalPopupMenus() const override; bool ShouldAutoResize() const override { return should_auto_resize_; } @@ -637,6 +638,8 @@ class WEB_EXPORT WebViewImpl final float fake_page_scale_animation_page_scale_factor_; bool fake_page_scale_animation_use_anchor_; + bool should_use_external_popup_menus_; + float compositor_device_scale_factor_override_; TransformationMatrix device_emulation_transform_; diff --git third_party/WebKit/public/web/WebView.h third_party/WebKit/public/web/WebView.h index 1917509..536c147 100644 --- third_party/WebKit/public/web/WebView.h +++ third_party/WebKit/public/web/WebView.h @@ -374,6 +374,7 @@ class WebView : protected WebWidget { // Sets whether select popup menus should be rendered by the browser. BLINK_EXPORT static void SetUseExternalPopupMenus(bool); + virtual void SetUseExternalPopupMenusThisInstance(bool) = 0; // Hides any popup (suggestions, selects...) that might be showing. virtual void HidePopups() = 0;