Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: chrome/browser/lifetime/application_lifetime.cc

Issue 1684043002: Fix build failure of chrome_public_apk on Android GN build (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +#endif comment Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/lifetime/application_lifetime.h ('k') | chrome/browser/usb/usb_tab_helper.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/lifetime/application_lifetime.h" 5 #include "chrome/browser/lifetime/application_lifetime.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 if (DownloadService::NonMaliciousDownloadCountAllProfiles() > 0) 62 if (DownloadService::NonMaliciousDownloadCountAllProfiles() > 0)
63 return false; 63 return false;
64 64
65 // Check TabsNeedBeforeUnloadFired(). 65 // Check TabsNeedBeforeUnloadFired().
66 for (auto* browser : *BrowserList::GetInstance()) { 66 for (auto* browser : *BrowserList::GetInstance()) {
67 if (browser->TabsNeedBeforeUnloadFired()) 67 if (browser->TabsNeedBeforeUnloadFired())
68 return false; 68 return false;
69 } 69 }
70 return true; 70 return true;
71 } 71 }
72 #endif // !defined(OS_ANDROID)
73 72
74 int g_keep_alive_count = 0; 73 int g_keep_alive_count = 0;
75 bool g_disable_shutdown_for_testing = false; 74 bool g_disable_shutdown_for_testing = false;
75 #endif // !defined(OS_ANDROID)
76 76
77 #if defined(OS_CHROMEOS) 77 #if defined(OS_CHROMEOS)
78 // Whether chrome should send stop request to a session manager. 78 // Whether chrome should send stop request to a session manager.
79 bool g_send_stop_request_to_session_manager = false; 79 bool g_send_stop_request_to_session_manager = false;
80 #endif 80 #endif
81 81
82 } // namespace 82 } // namespace
83 83
84 void MarkAsCleanShutdown() { 84 void MarkAsCleanShutdown() {
85 // TODO(beng): Can this use ProfileManager::GetLoadedProfiles() instead? 85 // TODO(beng): Can this use ProfileManager::GetLoadedProfiles() instead?
86 for (auto* browser : *BrowserList::GetInstance()) 86 for (auto* browser : *BrowserList::GetInstance())
87 browser->profile()->SetExitType(Profile::EXIT_NORMAL); 87 browser->profile()->SetExitType(Profile::EXIT_NORMAL);
88 } 88 }
89 89
90 void AttemptExitInternal(bool try_to_quit_application) { 90 void AttemptExitInternal(bool try_to_quit_application) {
91 // On Mac, the platform-specific part handles setting this. 91 // On Mac, the platform-specific part handles setting this.
92 #if !defined(OS_MACOSX) 92 #if !defined(OS_MACOSX)
93 if (try_to_quit_application) 93 if (try_to_quit_application)
94 browser_shutdown::SetTryingToQuit(true); 94 browser_shutdown::SetTryingToQuit(true);
95 #endif 95 #endif
96 96
97 content::NotificationService::current()->Notify( 97 content::NotificationService::current()->Notify(
98 chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST, 98 chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST,
99 content::NotificationService::AllSources(), 99 content::NotificationService::AllSources(),
100 content::NotificationService::NoDetails()); 100 content::NotificationService::NoDetails());
101 101
102 g_browser_process->platform_part()->AttemptExit(); 102 g_browser_process->platform_part()->AttemptExit();
103 } 103 }
104 104
105 #if !defined(OS_ANDROID)
105 void CloseAllBrowsersAndQuit() { 106 void CloseAllBrowsersAndQuit() {
106 browser_shutdown::SetTryingToQuit(true); 107 browser_shutdown::SetTryingToQuit(true);
107 CloseAllBrowsers(); 108 CloseAllBrowsers();
108 } 109 }
109 110
110 void CloseAllBrowsers() { 111 void CloseAllBrowsers() {
111 // If there are no browsers and closing the last browser would quit the 112 // If there are no browsers and closing the last browser would quit the
112 // application, send the APP_TERMINATING action here. Otherwise, it will be 113 // application, send the APP_TERMINATING action here. Otherwise, it will be
113 // sent by RemoveBrowser() when the last browser has closed. 114 // sent by RemoveBrowser() when the last browser has closed.
114 if (chrome::GetTotalBrowserCount() == 0 && 115 if (chrome::GetTotalBrowserCount() == 0 &&
(...skipping 14 matching lines...) Expand all
129 } 130 }
130 131
131 #if defined(OS_CHROMEOS) 132 #if defined(OS_CHROMEOS)
132 chromeos::BootTimesRecorder::Get()->AddLogoutTimeMarker( 133 chromeos::BootTimesRecorder::Get()->AddLogoutTimeMarker(
133 "StartedClosingWindows", false); 134 "StartedClosingWindows", false);
134 #endif 135 #endif
135 scoped_refptr<BrowserCloseManager> browser_close_manager = 136 scoped_refptr<BrowserCloseManager> browser_close_manager =
136 new BrowserCloseManager; 137 new BrowserCloseManager;
137 browser_close_manager->StartClosingBrowsers(); 138 browser_close_manager->StartClosingBrowsers();
138 } 139 }
140 #endif // !defined(OS_ANDROID)
139 141
140 void AttemptUserExit() { 142 void AttemptUserExit() {
141 #if defined(OS_CHROMEOS) 143 #if defined(OS_CHROMEOS)
142 browser_shutdown::StartShutdownTracing(); 144 browser_shutdown::StartShutdownTracing();
143 chromeos::BootTimesRecorder::Get()->AddLogoutTimeMarker("LogoutStarted", 145 chromeos::BootTimesRecorder::Get()->AddLogoutTimeMarker("LogoutStarted",
144 false); 146 false);
145 147
146 PrefService* state = g_browser_process->local_state(); 148 PrefService* state = g_browser_process->local_state();
147 if (state) { 149 if (state) {
148 chromeos::BootTimesRecorder::Get()->OnLogoutStarted(state); 150 chromeos::BootTimesRecorder::Get()->OnLogoutStarted(state);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 // can be false in following cases. a) power-off b) signout from 228 // can be false in following cases. a) power-off b) signout from
227 // screen locker. 229 // screen locker.
228 if (!AreAllBrowsersCloseable()) 230 if (!AreAllBrowsersCloseable())
229 browser_shutdown::OnShutdownStarting(browser_shutdown::END_SESSION); 231 browser_shutdown::OnShutdownStarting(browser_shutdown::END_SESSION);
230 else 232 else
231 browser_shutdown::OnShutdownStarting(browser_shutdown::BROWSER_EXIT); 233 browser_shutdown::OnShutdownStarting(browser_shutdown::BROWSER_EXIT);
232 AttemptExitInternal(true); 234 AttemptExitInternal(true);
233 } 235 }
234 #endif 236 #endif
235 237
238 #if !defined(OS_ANDROID)
236 void SessionEnding() { 239 void SessionEnding() {
237 // This is a time-limited shutdown where we need to write as much to 240 // This is a time-limited shutdown where we need to write as much to
238 // disk as we can as soon as we can, and where we must kill the 241 // disk as we can as soon as we can, and where we must kill the
239 // process within a hang timeout to avoid user prompts. 242 // process within a hang timeout to avoid user prompts.
240 243
241 // Start watching for hang during shutdown, and crash it if takes too long. 244 // Start watching for hang during shutdown, and crash it if takes too long.
242 // We disarm when |shutdown_watcher| object is destroyed, which is when we 245 // We disarm when |shutdown_watcher| object is destroyed, which is when we
243 // exit this function. 246 // exit this function.
244 ShutdownWatcherHelper shutdown_watcher; 247 ShutdownWatcherHelper shutdown_watcher;
245 shutdown_watcher.Arm(base::TimeDelta::FromSeconds(90)); 248 shutdown_watcher.Arm(base::TimeDelta::FromSeconds(90));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 // Allow the app to shutdown again. 304 // Allow the app to shutdown again.
302 if (!WillKeepAlive()) { 305 if (!WillKeepAlive()) {
303 g_browser_process->ReleaseModule(); 306 g_browser_process->ReleaseModule();
304 CloseAllBrowsersIfNeeded(); 307 CloseAllBrowsersIfNeeded();
305 } 308 }
306 } 309 }
307 310
308 bool WillKeepAlive() { 311 bool WillKeepAlive() {
309 return g_keep_alive_count > 0; 312 return g_keep_alive_count > 0;
310 } 313 }
314 #endif // !defined(OS_ANDROID)
311 315
312 void NotifyAppTerminating() { 316 void NotifyAppTerminating() {
313 static bool notified = false; 317 static bool notified = false;
314 if (notified) 318 if (notified)
315 return; 319 return;
316 notified = true; 320 notified = true;
317 content::NotificationService::current()->Notify( 321 content::NotificationService::current()->Notify(
318 chrome::NOTIFICATION_APP_TERMINATING, 322 chrome::NOTIFICATION_APP_TERMINATING,
319 content::NotificationService::AllSources(), 323 content::NotificationService::AllSources(),
320 content::NotificationService::NoDetails()); 324 content::NotificationService::NoDetails());
(...skipping 30 matching lines...) Expand all
351 if (g_send_stop_request_to_session_manager) { 355 if (g_send_stop_request_to_session_manager) {
352 // If running the Chrome OS build, but we're not on the device, act 356 // If running the Chrome OS build, but we're not on the device, act
353 // as if we received signal from SessionManager. 357 // as if we received signal from SessionManager.
354 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, 358 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
355 base::Bind(&ExitCleanly)); 359 base::Bind(&ExitCleanly));
356 } 360 }
357 } 361 }
358 #endif 362 #endif
359 } 363 }
360 364
365 #if !defined(OS_ANDROID)
361 void OnAppExiting() { 366 void OnAppExiting() {
362 static bool notified = false; 367 static bool notified = false;
363 if (notified) 368 if (notified)
364 return; 369 return;
365 notified = true; 370 notified = true;
366 HandleAppExitingForPlatform(); 371 HandleAppExitingForPlatform();
367 } 372 }
368 373
369 void DisableShutdownForTesting(bool disable_shutdown_for_testing) { 374 void DisableShutdownForTesting(bool disable_shutdown_for_testing) {
370 g_disable_shutdown_for_testing = disable_shutdown_for_testing; 375 g_disable_shutdown_for_testing = disable_shutdown_for_testing;
371 if (!g_disable_shutdown_for_testing && !WillKeepAlive()) 376 if (!g_disable_shutdown_for_testing && !WillKeepAlive())
372 CloseAllBrowsersIfNeeded(); 377 CloseAllBrowsersIfNeeded();
373 } 378 }
379 #endif // !defined(OS_ANDROID)
374 380
375 } // namespace chrome 381 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/lifetime/application_lifetime.h ('k') | chrome/browser/usb/usb_tab_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698