diff --git third_party/WebKit/Source/core/exported/WebViewImpl.cpp third_party/WebKit/Source/core/exported/WebViewImpl.cpp index 494a9bc0f294..a766c5d047b0 100644 --- third_party/WebKit/Source/core/exported/WebViewImpl.cpp +++ third_party/WebKit/Source/core/exported/WebViewImpl.cpp @@ -253,8 +253,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { g_should_use_external_popup_menus = use_external_popup_menus; } -bool WebViewImpl::UseExternalPopupMenus() { - return g_should_use_external_popup_menus; +void WebViewImpl::SetUseExternalPopupMenusThisInstance( + bool use_external_popup_menus) { + should_use_external_popup_menus_ = use_external_popup_menus; +} + +bool WebViewImpl::UseExternalPopupMenus() const { + return should_use_external_popup_menus_; } namespace { @@ -345,6 +350,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), diff --git third_party/WebKit/Source/core/exported/WebViewImpl.h third_party/WebKit/Source/core/exported/WebViewImpl.h index 4e820e7746b7..52c6eaaf2f89 100644 --- third_party/WebKit/Source/core/exported/WebViewImpl.h +++ third_party/WebKit/Source/core/exported/WebViewImpl.h @@ -106,7 +106,8 @@ class CORE_EXPORT WebViewImpl final static HashSet& AllInstances(); // 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; // WebWidget methods: void Close() override; @@ -256,7 +257,7 @@ class CORE_EXPORT WebViewImpl final HitTestResult CoreHitTestResultAt(const WebPoint&); void InvalidateRect(const IntRect&); - void SetBaseBackgroundColor(WebColor); + void SetBaseBackgroundColor(WebColor) override; void SetBaseBackgroundColorOverride(WebColor); void ClearBaseBackgroundColorOverride(); void SetBackgroundColorOverride(WebColor); @@ -602,6 +603,8 @@ class CORE_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/Source/core/page/ChromeClientImpl.cpp third_party/WebKit/Source/core/page/ChromeClientImpl.cpp index fd6ddf8f6c82..c953adec0b27 100644 --- third_party/WebKit/Source/core/page/ChromeClientImpl.cpp +++ third_party/WebKit/Source/core/page/ChromeClientImpl.cpp @@ -779,7 +779,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, return nullptr; NotifyPopupOpeningObservers(); - if (WebViewImpl::UseExternalPopupMenus()) + if (web_view_->UseExternalPopupMenus()) return new ExternalPopupMenu(frame, select, *web_view_); DCHECK(RuntimeEnabledFeatures::PagePopupEnabled()); diff --git third_party/WebKit/public/web/WebView.h third_party/WebKit/public/web/WebView.h index 8fc376c9973c..4f2ee40e800c 100644 --- third_party/WebKit/public/web/WebView.h +++ third_party/WebKit/public/web/WebView.h @@ -361,6 +361,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; @@ -391,6 +392,8 @@ class WebView : protected WebWidget { unsigned inactive_background_color, unsigned inactive_foreground_color) = 0; + virtual void SetBaseBackgroundColor(WebColor color) = 0; + // Modal dialog support ------------------------------------------------ // Call these methods before and after running a nested, modal event loop