2021-07-23 18:40:13 +02:00
|
|
|
diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h
|
2024-09-27 16:15:44 +02:00
|
|
|
index 746af7113a66d..63346d59fe411 100644
|
2021-07-23 18:40:13 +02:00
|
|
|
--- third_party/blink/public/web/web_view.h
|
|
|
|
+++ third_party/blink/public/web/web_view.h
|
2024-09-27 16:15:44 +02:00
|
|
|
@@ -341,6 +341,7 @@ class BLINK_EXPORT WebView {
|
2021-07-23 18:40:13 +02:00
|
|
|
|
|
|
|
// Sets whether select popup menus should be rendered by the browser.
|
2022-09-26 21:30:45 +02:00
|
|
|
static void SetUseExternalPopupMenus(bool);
|
2021-07-23 18:40:13 +02:00
|
|
|
+ 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
|
2024-09-27 16:15:44 +02:00
|
|
|
index 8f3603538170a..70366efd02575 100644
|
2021-07-23 18:40:13 +02:00
|
|
|
--- third_party/blink/renderer/core/exported/web_view_impl.cc
|
|
|
|
+++ third_party/blink/renderer/core/exported/web_view_impl.cc
|
2024-09-27 16:15:44 +02:00
|
|
|
@@ -253,8 +253,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) {
|
2021-07-23 18:40:13 +02:00
|
|
|
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 {
|
2024-09-27 16:15:44 +02:00
|
|
|
@@ -616,6 +621,7 @@ WebViewImpl::WebViewImpl(
|
2024-07-29 19:09:20 +02:00
|
|
|
blink::ZoomFactorToZoomLevel(kMinimumBrowserZoomFactor)),
|
|
|
|
maximum_zoom_level_(
|
|
|
|
blink::ZoomFactorToZoomLevel(kMaximumBrowserZoomFactor)),
|
2021-07-23 18:40:13 +02:00
|
|
|
+ should_use_external_popup_menus_(g_should_use_external_popup_menus),
|
|
|
|
does_composite_(does_composite),
|
|
|
|
fullscreen_controller_(std::make_unique<FullscreenController>(this)),
|
|
|
|
page_base_background_color_(
|
|
|
|
diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h
|
2024-09-27 16:15:44 +02:00
|
|
|
index 69318d9676ed6..84c2d95694146 100644
|
2021-07-23 18:40:13 +02:00
|
|
|
--- third_party/blink/renderer/core/exported/web_view_impl.h
|
|
|
|
+++ third_party/blink/renderer/core/exported/web_view_impl.h
|
2024-09-27 16:15:44 +02:00
|
|
|
@@ -140,7 +140,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
|
2021-07-23 18:40:13 +02:00
|
|
|
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;
|
|
|
|
|
|
|
|
// Returns whether frames under this WebView are backed by a compositor.
|
|
|
|
bool does_composite() const { return does_composite_; }
|
2024-09-27 16:15:44 +02:00
|
|
|
@@ -873,6 +874,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
|
2021-07-23 18:40:13 +02:00
|
|
|
float fake_page_scale_animation_page_scale_factor_ = 0.f;
|
|
|
|
bool fake_page_scale_animation_use_anchor_ = false;
|
|
|
|
|
|
|
|
+ bool should_use_external_popup_menus_;
|
|
|
|
+
|
|
|
|
float compositor_device_scale_factor_override_ = 0.f;
|
2022-11-15 18:50:53 +01:00
|
|
|
gfx::Transform device_emulation_transform_;
|
2021-07-23 18:40:13 +02:00
|
|
|
|
|
|
|
diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc
|
2024-08-26 14:44:25 +02:00
|
|
|
index 1536a0c7089d7..0376e3a663d98 100644
|
2021-07-23 18:40:13 +02:00
|
|
|
--- third_party/blink/renderer/core/page/chrome_client_impl.cc
|
|
|
|
+++ third_party/blink/renderer/core/page/chrome_client_impl.cc
|
2024-08-26 14:44:25 +02:00
|
|
|
@@ -973,7 +973,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame,
|
2021-07-23 18:40:13 +02:00
|
|
|
HTMLSelectElement& select) {
|
|
|
|
NotifyPopupOpeningObservers();
|
|
|
|
|
2024-02-22 19:36:15 +01:00
|
|
|
- if (WebViewImpl::UseExternalPopupMenus()) {
|
|
|
|
+ if (web_view_->UseExternalPopupMenus()) {
|
|
|
|
return MakeGarbageCollected<ExternalPopupMenu>(frame, select);
|
|
|
|
}
|
|
|
|
|