mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			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 083af135d890c..799ef161a493a 100644
 | |
| --- third_party/blink/public/web/web_view.h
 | |
| +++ third_party/blink/public/web/web_view.h
 | |
| @@ -344,6 +344,7 @@ class BLINK_EXPORT WebView {
 | |
|  
 | |
|    // Sets whether select popup menus should be rendered by the browser.
 | |
|    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 041ef7c3079f4..f209f54ba5b8f 100644
 | |
| --- third_party/blink/renderer/core/exported/web_view_impl.cc
 | |
| +++ third_party/blink/renderer/core/exported/web_view_impl.cc
 | |
| @@ -257,8 +257,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 {
 | |
| @@ -615,6 +620,7 @@ WebViewImpl::WebViewImpl(
 | |
|            blink::ZoomFactorToZoomLevel(kMinimumBrowserZoomFactor)),
 | |
|        maximum_zoom_level_(
 | |
|            blink::ZoomFactorToZoomLevel(kMaximumBrowserZoomFactor)),
 | |
| +      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
 | |
| index 4f77ef1379390..9f4a3f4e10295 100644
 | |
| --- third_party/blink/renderer/core/exported/web_view_impl.h
 | |
| +++ third_party/blink/renderer/core/exported/web_view_impl.h
 | |
| @@ -140,7 +140,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_; }
 | |
| @@ -882,6 +883,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;
 | |
|    gfx::Transform 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 79ccb4e526071..9d5585032d1eb 100644
 | |
| --- third_party/blink/renderer/core/page/chrome_client_impl.cc
 | |
| +++ third_party/blink/renderer/core/page/chrome_client_impl.cc
 | |
| @@ -971,7 +971,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame,
 | |
|                                             HTMLSelectElement& select) {
 | |
|    NotifyPopupOpeningObservers();
 | |
|  
 | |
| -  if (WebViewImpl::UseExternalPopupMenus()) {
 | |
| +  if (web_view_->UseExternalPopupMenus()) {
 | |
|      return MakeGarbageCollected<ExternalPopupMenu>(frame, select);
 | |
|    }
 | |
|  
 |