1diff --git chrome/browser/app_controller_mac.mm chrome/browser/app_controller_mac.mm 2index 8fd9ba22110e..327c788df2d3 100644 3--- chrome/browser/app_controller_mac.mm 4+++ chrome/browser/app_controller_mac.mm 5@@ -31,6 +31,7 @@ 6 #include "base/threading/scoped_blocking_call.h" 7 #include "base/threading/thread_restrictions.h" 8 #include "build/branding_buildflags.h" 9+#include "cef/libcef/features/features.h" 10 #include "chrome/app/chrome_command_ids.h" 11 #include "chrome/browser/apps/app_shim/app_shim_manager_mac.h" 12 #include "chrome/browser/apps/app_shim/app_shim_termination_manager.h" 13@@ -1211,6 +1212,7 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session; 14 15 // Run a (background) application in a new tab. 16 - (void)executeApplication:(id)sender { 17+#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 18 NSInteger tag = [sender tag]; 19 Profile* profile = [self lastProfile]; 20 DCHECK(profile); 21@@ -1219,6 +1221,7 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session; 22 tag < static_cast<int>(applications.size())); 23 const extensions::Extension* extension = applications.GetExtension(tag); 24 BackgroundModeManager::LaunchBackgroundApplication(profile, extension); 25+#endif // BUILDFLAG(ENABLE_BACKGROUND_MODE) 26 } 27 28 // Same as |-commandDispatch:|, but executes commands using a disposition 29@@ -1607,6 +1610,7 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session; 30 // TODO(rickcam): Mock out BackgroundApplicationListModel, then add unit 31 // tests which use the mock in place of the profile-initialized model. 32 33+#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 34 // Avoid breaking unit tests which have no profile. 35 if (profile) { 36 BackgroundApplicationListModel applications(profile); 37@@ -1633,6 +1637,7 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session; 38 } 39 } 40 } 41+#endif // BUILDFLAG(ENABLE_BACKGROUND_MODE) 42 43 return dockMenu; 44 } 45@@ -1862,11 +1867,13 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session; 46 namespace { 47 48 void UpdateProfileInUse(Profile* profile, Profile::CreateStatus status) { 49+#if !BUILDFLAG(ENABLE_CEF) 50 if (status == Profile::CREATE_STATUS_INITIALIZED) { 51 AppController* controller = 52 base::mac::ObjCCastStrict<AppController>([NSApp delegate]); 53 [controller windowChangedToProfile:profile]; 54 } 55+#endif // !BUILDFLAG(ENABLE_CEF) 56 } 57 58 } // namespace 59diff --git chrome/browser/browser_process.h chrome/browser/browser_process.h 60index 3d634db18900..96e44ad48e5e 100644 61--- chrome/browser/browser_process.h 62+++ chrome/browser/browser_process.h 63@@ -197,9 +197,9 @@ class BrowserProcess { 64 virtual DownloadStatusUpdater* download_status_updater() = 0; 65 virtual DownloadRequestLimiter* download_request_limiter() = 0; 66 67+#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 68 // Returns the object that manages background applications. 69 virtual BackgroundModeManager* background_mode_manager() = 0; 70-#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 71 virtual void set_background_mode_manager_for_test( 72 std::unique_ptr<BackgroundModeManager> manager) = 0; 73 #endif 74diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc 75index 89a682d5c935..946ccbda587c 100644 76--- chrome/browser/browser_process_impl.cc 77+++ chrome/browser/browser_process_impl.cc 78@@ -947,18 +947,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { 79 return download_request_limiter_.get(); 80 } 81 82-BackgroundModeManager* BrowserProcessImpl::background_mode_manager() { 83 #if BUILDFLAG(ENABLE_BACKGROUND_MODE) 84+BackgroundModeManager* BrowserProcessImpl::background_mode_manager() { 85 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 86 if (!background_mode_manager_) 87 CreateBackgroundModeManager(); 88 return background_mode_manager_.get(); 89-#else 90- return nullptr; 91-#endif 92 } 93 94-#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 95 void BrowserProcessImpl::set_background_mode_manager_for_test( 96 std::unique_ptr<BackgroundModeManager> manager) { 97 background_mode_manager_ = std::move(manager); 98diff --git chrome/browser/browser_process_impl.h chrome/browser/browser_process_impl.h 99index b4ceefbccd08..7d60206c83b1 100644 100--- chrome/browser/browser_process_impl.h 101+++ chrome/browser/browser_process_impl.h 102@@ -169,8 +169,8 @@ class BrowserProcessImpl : public BrowserProcess, 103 void SetApplicationLocale(const std::string& actual_locale) override; 104 DownloadStatusUpdater* download_status_updater() override; 105 DownloadRequestLimiter* download_request_limiter() override; 106- BackgroundModeManager* background_mode_manager() override; 107 #if BUILDFLAG(ENABLE_BACKGROUND_MODE) 108+ BackgroundModeManager* background_mode_manager() override; 109 void set_background_mode_manager_for_test( 110 std::unique_ptr<BackgroundModeManager> manager) override; 111 #endif 112diff --git chrome/browser/lifetime/browser_close_manager.cc chrome/browser/lifetime/browser_close_manager.cc 113index e0cafee5eedd..06ded156be3c 100644 114--- chrome/browser/lifetime/browser_close_manager.cc 115+++ chrome/browser/lifetime/browser_close_manager.cc 116@@ -148,12 +148,14 @@ void BrowserCloseManager::CloseBrowsers() { 117 // exit can restore all browsers open before exiting. 118 ProfileManager::ShutdownSessionServices(); 119 #endif 120+#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 121 if (!browser_shutdown::IsTryingToQuit()) { 122 BackgroundModeManager* background_mode_manager = 123 g_browser_process->background_mode_manager(); 124 if (background_mode_manager) 125 background_mode_manager->SuspendBackgroundMode(); 126 } 127+#endif 128 129 // Make a copy of the BrowserList to simplify the case where we need to 130 // destroy a Browser during the loop. 131diff --git chrome/browser/sessions/session_service.cc chrome/browser/sessions/session_service.cc 132index 24a6b1a3634d..abcb36d783de 100644 133--- chrome/browser/sessions/session_service.cc 134+++ chrome/browser/sessions/session_service.cc 135@@ -516,12 +516,19 @@ void SessionService::MaybeDeleteSessionOnlyData() { 136 if (profile()->AsTestingProfile()) 137 return; 138 139+#if BUILDFLAG(ENABLE_BACKGROUND_MODE) 140+ const bool background_mode_active = 141+ g_browser_process->background_mode_manager()->IsBackgroundModeActive(); 142+#else 143+ const bool background_mode_active = false; 144+#endif 145+ 146 // Clear session data if the last window for a profile has been closed and 147 // closing the last window would normally close Chrome, unless background mode 148 // is active. Tests don't have a background_mode_manager. 149 if (has_open_trackable_browsers_ || 150 browser_defaults::kBrowserAliveWithNoWindows || 151- g_browser_process->background_mode_manager()->IsBackgroundModeActive()) { 152+ background_mode_active) { 153 return; 154 } 155 156