mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	Fix Chrome toolbar initialization (fixes #3898)
Change BrowserWindowFeatures initialization to consider CEF browsers with TYPE_POPUP as normal.
This commit is contained in:
		| @@ -648,3 +648,59 @@ index f12ba73369a65..23c43dcb1dd24 100644 | ||||
|    NavigateParams params(browser, std::move(new_contents)); | ||||
|    params.source_contents = source_contents; | ||||
|    params.url = target_url; | ||||
| diff --git chrome/browser/ui/browser_window/browser_window_features.cc chrome/browser/ui/browser_window/browser_window_features.cc | ||||
| index e584d77d67bda..a38a8504abd85 100644 | ||||
| --- chrome/browser/ui/browser_window/browser_window_features.cc | ||||
| +++ chrome/browser/ui/browser_window/browser_window_features.cc | ||||
| @@ -67,6 +67,14 @@ BrowserWindowFeatures::BrowserWindowFeaturesFactory& GetFactory() { | ||||
|    return *factory; | ||||
|  } | ||||
|   | ||||
| +bool IsNormalBrowser(Browser* browser) { | ||||
| +  // CEF normal browsers have TYPE_POPUP. | ||||
| +  if (browser->is_type_popup() && browser->cef_delegate()) { | ||||
| +    return true; | ||||
| +  } | ||||
| +  return browser->is_type_normal(); | ||||
| +} | ||||
| + | ||||
|  }  // namespace | ||||
|   | ||||
|  // static | ||||
| @@ -153,10 +161,12 @@ void BrowserWindowFeatures::Init(BrowserWindowInterface* browser) { | ||||
|  } | ||||
|   | ||||
|  void BrowserWindowFeatures::InitPostWindowConstruction(Browser* browser) { | ||||
| +  const bool supports_toolbar = IsNormalBrowser(browser); | ||||
| + | ||||
|    // Features that are only enabled for normal browser windows (e.g. a window | ||||
|    // with an omnibox and a tab strip). By default most features should be | ||||
|    // instantiated in this block. | ||||
| -  if (browser->is_type_normal()) { | ||||
| +  if (supports_toolbar) { | ||||
|      if (IsChromeLabsEnabled()) { | ||||
|        chrome_labs_coordinator_ = | ||||
|            std::make_unique<ChromeLabsCoordinator>(browser); | ||||
| @@ -198,7 +208,7 @@ void BrowserWindowFeatures::InitPostWindowConstruction(Browser* browser) { | ||||
|      } | ||||
|    } | ||||
|   | ||||
| -  if ((browser->is_type_normal() || browser->is_type_app()) && | ||||
| +  if ((supports_toolbar || browser->is_type_app()) && | ||||
|        base::FeatureList::IsEnabled(toast_features::kToastFramework)) { | ||||
|      toast_service_ = std::make_unique<ToastService>(browser); | ||||
|    } | ||||
| @@ -231,10 +241,12 @@ void BrowserWindowFeatures::InitPostBrowserViewConstruction( | ||||
|            browser_view->browser(), | ||||
|            side_panel_coordinator_->GetWindowRegistry()); | ||||
|   | ||||
| +  const bool supports_toolbar = IsNormalBrowser(browser_view->browser()); | ||||
| + | ||||
|    // Memory Saver mode is default off but is available to turn on. | ||||
|    // The controller relies on performance manager which isn't initialized in | ||||
|    // some unit tests without browser view. | ||||
| -  if (browser_view->GetIsNormalType()) { | ||||
| +  if (supports_toolbar) { | ||||
|      memory_saver_opt_in_iph_controller_ = | ||||
|          std::make_unique<MemorySaverOptInIPHController>( | ||||
|              browser_view->browser()); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user