mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Set enable_background_mode=false by default (see issue #2969)
This mode doesn't make sense with CEF, and it was causing strange shutdown crashes when running with Chrome mode enabled.
This commit is contained in:
108
patch/patches/chrome_browser_background_mode_1100085.patch
Normal file
108
patch/patches/chrome_browser_background_mode_1100085.patch
Normal file
@@ -0,0 +1,108 @@
|
||||
diff --git chrome/browser/browser_process.h chrome/browser/browser_process.h
|
||||
index 6332572ac884..bf555124ce59 100644
|
||||
--- chrome/browser/browser_process.h
|
||||
+++ chrome/browser/browser_process.h
|
||||
@@ -197,10 +197,12 @@ class BrowserProcess {
|
||||
virtual DownloadStatusUpdater* download_status_updater() = 0;
|
||||
virtual DownloadRequestLimiter* download_request_limiter() = 0;
|
||||
|
||||
+#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
// Returns the object that manages background applications.
|
||||
virtual BackgroundModeManager* background_mode_manager() = 0;
|
||||
virtual void set_background_mode_manager_for_test(
|
||||
std::unique_ptr<BackgroundModeManager> manager) = 0;
|
||||
+#endif
|
||||
|
||||
// Returns the StatusTray, which provides an API for displaying status icons
|
||||
// in the system status tray. Returns NULL if status icons are not supported
|
||||
diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc
|
||||
index 13958187a750..0017954a32da 100644
|
||||
--- chrome/browser/browser_process_impl.cc
|
||||
+++ chrome/browser/browser_process_impl.cc
|
||||
@@ -963,24 +963,19 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() {
|
||||
return download_request_limiter_.get();
|
||||
}
|
||||
|
||||
+#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
BackgroundModeManager* BrowserProcessImpl::background_mode_manager() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
-#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
if (!background_mode_manager_)
|
||||
CreateBackgroundModeManager();
|
||||
return background_mode_manager_.get();
|
||||
-#else
|
||||
- NOTIMPLEMENTED();
|
||||
- return NULL;
|
||||
-#endif
|
||||
}
|
||||
|
||||
void BrowserProcessImpl::set_background_mode_manager_for_test(
|
||||
std::unique_ptr<BackgroundModeManager> manager) {
|
||||
-#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
background_mode_manager_ = std::move(manager);
|
||||
-#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
StatusTray* BrowserProcessImpl::status_tray() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
diff --git chrome/browser/browser_process_impl.h chrome/browser/browser_process_impl.h
|
||||
index 12c76fb96762..60637b2b0044 100644
|
||||
--- chrome/browser/browser_process_impl.h
|
||||
+++ chrome/browser/browser_process_impl.h
|
||||
@@ -164,9 +164,11 @@ class BrowserProcessImpl : public BrowserProcess,
|
||||
void SetApplicationLocale(const std::string& actual_locale) override;
|
||||
DownloadStatusUpdater* download_status_updater() override;
|
||||
DownloadRequestLimiter* download_request_limiter() override;
|
||||
+#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
BackgroundModeManager* background_mode_manager() override;
|
||||
void set_background_mode_manager_for_test(
|
||||
std::unique_ptr<BackgroundModeManager> manager) override;
|
||||
+#endif
|
||||
StatusTray* status_tray() override;
|
||||
safe_browsing::SafeBrowsingService* safe_browsing_service() override;
|
||||
subresource_filter::RulesetService* subresource_filter_ruleset_service()
|
||||
diff --git chrome/browser/lifetime/browser_close_manager.cc chrome/browser/lifetime/browser_close_manager.cc
|
||||
index bc7995a47fbd..28d3658d2885 100644
|
||||
--- chrome/browser/lifetime/browser_close_manager.cc
|
||||
+++ chrome/browser/lifetime/browser_close_manager.cc
|
||||
@@ -147,12 +147,14 @@ void BrowserCloseManager::CloseBrowsers() {
|
||||
// exit can restore all browsers open before exiting.
|
||||
ProfileManager::ShutdownSessionServices();
|
||||
#endif
|
||||
+#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
if (!browser_shutdown::IsTryingToQuit()) {
|
||||
BackgroundModeManager* background_mode_manager =
|
||||
g_browser_process->background_mode_manager();
|
||||
if (background_mode_manager)
|
||||
background_mode_manager->SuspendBackgroundMode();
|
||||
}
|
||||
+#endif
|
||||
|
||||
// Make a copy of the BrowserList to simplify the case where we need to
|
||||
// destroy a Browser during the loop.
|
||||
diff --git chrome/browser/sessions/session_service.cc chrome/browser/sessions/session_service.cc
|
||||
index f5079f6d2189..a43a981d471b 100644
|
||||
--- chrome/browser/sessions/session_service.cc
|
||||
+++ chrome/browser/sessions/session_service.cc
|
||||
@@ -942,12 +942,19 @@ void SessionService::MaybeDeleteSessionOnlyData() {
|
||||
if (!profile() || profile()->AsTestingProfile())
|
||||
return;
|
||||
|
||||
+#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
+ const bool background_mode_active =
|
||||
+ g_browser_process->background_mode_manager()->IsBackgroundModeActive();
|
||||
+#else
|
||||
+ const bool background_mode_active = false;
|
||||
+#endif
|
||||
+
|
||||
// Clear session data if the last window for a profile has been closed and
|
||||
// closing the last window would normally close Chrome, unless background mode
|
||||
// is active. Tests don't have a background_mode_manager.
|
||||
if (has_open_trackable_browsers_ ||
|
||||
browser_defaults::kBrowserAliveWithNoWindows ||
|
||||
- g_browser_process->background_mode_manager()->IsBackgroundModeActive()) {
|
||||
+ background_mode_active) {
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user