mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h
 | |
| index a6d03eca18db..d84e8615150c 100644
 | |
| --- third_party/blink/public/web/web_view.h
 | |
| +++ third_party/blink/public/web/web_view.h
 | |
| @@ -367,6 +367,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 e713926c6ebb..788b8443f8aa 100644
 | |
| --- third_party/blink/renderer/core/exported/web_view_impl.cc
 | |
| +++ third_party/blink/renderer/core/exported/web_view_impl.cc
 | |
| @@ -216,8 +216,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 {
 | |
| @@ -275,6 +280,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client,
 | |
|        chrome_client_(MakeGarbageCollected<ChromeClientImpl>(this)),
 | |
|        minimum_zoom_level_(PageZoomFactorToZoomLevel(kMinimumPageZoomFactor)),
 | |
|        maximum_zoom_level_(PageZoomFactorToZoomLevel(kMaximumPageZoomFactor)),
 | |
| +      should_use_external_popup_menus_(g_should_use_external_popup_menus),
 | |
|        does_composite_(does_composite),
 | |
|        fullscreen_controller_(std::make_unique<FullscreenController>(this)) {
 | |
|    if (!AsView().client) {
 | |
| diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h
 | |
| index 710607bd9112..829d2f55d79d 100644
 | |
| --- third_party/blink/renderer/core/exported/web_view_impl.h
 | |
| +++ third_party/blink/renderer/core/exported/web_view_impl.h
 | |
| @@ -112,7 +112,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;
 | |
|  
 | |
|    // Returns whether frames under this WebView are backed by a compositor.
 | |
|    bool does_composite() const { return does_composite_; }
 | |
| @@ -610,6 +611,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
 | |
|    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;
 | |
|    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 bd1ea48823f0..4b13696f3996 100644
 | |
| --- third_party/blink/renderer/core/page/chrome_client_impl.cc
 | |
| +++ third_party/blink/renderer/core/page/chrome_client_impl.cc
 | |
| @@ -850,7 +850,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);
 | |
|  
 | |
|    DCHECK(RuntimeEnabledFeatures::PagePopupEnabled());
 |