77 lines
3.6 KiB
Diff
77 lines
3.6 KiB
Diff
diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h
|
|
index f7f0ae5b0c70..005b4c37fc7d 100644
|
|
--- third_party/blink/public/web/web_view.h
|
|
+++ third_party/blink/public/web/web_view.h
|
|
@@ -344,6 +344,7 @@ class WebView {
|
|
|
|
// Sets whether select popup menus should be rendered by the browser.
|
|
BLINK_EXPORT static void SetUseExternalPopupMenus(bool);
|
|
+ virtual void SetUseExternalPopupMenusThisInstance(bool) = 0;
|
|
|
|
// Cancels and hides the current popup (datetime, select...) if any.
|
|
virtual void CancelPagePopup() = 0;
|
|
diff --git third_party/blink/renderer/core/exported/web_view_impl.cc third_party/blink/renderer/core/exported/web_view_impl.cc
|
|
index 2455c3728620..3182a7999e05 100644
|
|
--- third_party/blink/renderer/core/exported/web_view_impl.cc
|
|
+++ third_party/blink/renderer/core/exported/web_view_impl.cc
|
|
@@ -236,8 +236,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 {
|
|
@@ -308,6 +313,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/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h
|
|
index c83d975c7b04..f6a1e331cc31 100644
|
|
--- third_party/blink/renderer/core/exported/web_view_impl.h
|
|
+++ third_party/blink/renderer/core/exported/web_view_impl.h
|
|
@@ -107,7 +107,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
|
|
static HashSet<WebViewImpl*>& 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) override;
|
|
+ bool UseExternalPopupMenus() const;
|
|
|
|
// WebView methods:
|
|
void SetWebWidgetClient(WebWidgetClient*) override;
|
|
@@ -607,6 +608,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
|
|
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/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc
|
|
index 939f59cac349..2609c587d80d 100644
|
|
--- third_party/blink/renderer/core/page/chrome_client_impl.cc
|
|
+++ third_party/blink/renderer/core/page/chrome_client_impl.cc
|
|
@@ -809,7 +809,7 @@ bool ChromeClientImpl::HasOpenedPopup() const {
|
|
PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame,
|
|
HTMLSelectElement& select) {
|
|
NotifyPopupOpeningObservers();
|
|
- if (WebViewImpl::UseExternalPopupMenus())
|
|
+ if (web_view_->UseExternalPopupMenus())
|
|
return MakeGarbageCollected<ExternalPopupMenu>(frame, select, *web_view_);
|
|
|
|
DCHECK(RuntimeEnabledFeatures::PagePopupEnabled());
|