| OLD | NEW |
| 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 <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #if defined(OS_WIN) | 10 #if defined(OS_WIN) |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 if (notified) | 351 if (notified) |
| 352 return; | 352 return; |
| 353 notified = true; | 353 notified = true; |
| 354 content::NotificationService::current()->Notify( | 354 content::NotificationService::current()->Notify( |
| 355 chrome::NOTIFICATION_APP_TERMINATING, | 355 chrome::NOTIFICATION_APP_TERMINATING, |
| 356 content::NotificationService::AllSources(), | 356 content::NotificationService::AllSources(), |
| 357 content::NotificationService::NoDetails()); | 357 content::NotificationService::NoDetails()); |
| 358 } | 358 } |
| 359 | 359 |
| 360 void NotifyAndTerminate(bool fast_path) { | 360 void NotifyAndTerminate(bool fast_path) { |
| 361 NotifyAndTerminate(fast_path, RebootPolicy::kOptionalReboot); |
| 362 } |
| 363 |
| 364 void NotifyAndTerminate(bool fast_path, RebootPolicy reboot_policy) { |
| 361 #if defined(OS_CHROMEOS) | 365 #if defined(OS_CHROMEOS) |
| 362 static bool notified = false; | 366 static bool notified = false; |
| 363 // Return if a shutdown request has already been sent. | 367 // Return if a shutdown request has already been sent. |
| 364 if (notified) | 368 if (notified) |
| 365 return; | 369 return; |
| 366 notified = true; | 370 notified = true; |
| 367 #endif | 371 #endif |
| 368 | 372 |
| 369 if (fast_path) | 373 if (fast_path) |
| 370 NotifyAppTerminating(); | 374 NotifyAppTerminating(); |
| 371 | 375 |
| 372 #if defined(OS_CHROMEOS) | 376 #if defined(OS_CHROMEOS) |
| 373 if (chromeos::PowerPolicyController::IsInitialized()) | 377 if (chromeos::PowerPolicyController::IsInitialized()) |
| 374 chromeos::PowerPolicyController::Get()->NotifyChromeIsExiting(); | 378 chromeos::PowerPolicyController::Get()->NotifyChromeIsExiting(); |
| 375 | 379 |
| 376 if (base::SysInfo::IsRunningOnChromeOS()) { | 380 if (base::SysInfo::IsRunningOnChromeOS()) { |
| 377 // If we're on a ChromeOS device, reboot if an update has been applied, | 381 // If we're on a ChromeOS device, reboot if an update has been applied, |
| 378 // or else signal the session manager to log out. | 382 // or else signal the session manager to log out. |
| 379 chromeos::UpdateEngineClient* update_engine_client | 383 chromeos::UpdateEngineClient* update_engine_client = |
| 380 = chromeos::DBusThreadManager::Get()->GetUpdateEngineClient(); | 384 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient(); |
| 381 if (update_engine_client->GetLastStatus().status == | 385 if (update_engine_client->GetLastStatus().status == |
| 382 chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { | 386 chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT || |
| 387 reboot_policy == RebootPolicy::kForceReboot) { |
| 383 update_engine_client->RebootAfterUpdate(); | 388 update_engine_client->RebootAfterUpdate(); |
| 384 } else if (g_send_stop_request_to_session_manager) { | 389 } else if (g_send_stop_request_to_session_manager) { |
| 385 // Don't ask SessionManager to stop session if the shutdown request comes | 390 // Don't ask SessionManager to stop session if the shutdown request comes |
| 386 // from session manager. | 391 // from session manager. |
| 387 chromeos::DBusThreadManager::Get()->GetSessionManagerClient() | 392 chromeos::DBusThreadManager::Get() |
| 393 ->GetSessionManagerClient() |
| 388 ->StopSession(); | 394 ->StopSession(); |
| 389 } | 395 } |
| 390 } else { | 396 } else { |
| 391 if (g_send_stop_request_to_session_manager) { | 397 if (g_send_stop_request_to_session_manager) { |
| 392 // If running the Chrome OS build, but we're not on the device, act | 398 // If running the Chrome OS build, but we're not on the device, act |
| 393 // as if we received signal from SessionManager. | 399 // as if we received signal from SessionManager. |
| 394 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, | 400 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
| 395 base::Bind(&ExitCleanly)); | 401 base::Bind(&ExitCleanly)); |
| 396 } | 402 } |
| 397 } | 403 } |
| 398 #endif | 404 #endif |
| 399 } | 405 } |
| 400 | 406 |
| 401 #if !defined(OS_ANDROID) | 407 #if !defined(OS_ANDROID) |
| 402 void OnAppExiting() { | 408 void OnAppExiting() { |
| 403 static bool notified = false; | 409 static bool notified = false; |
| 404 if (notified) | 410 if (notified) |
| 405 return; | 411 return; |
| 406 notified = true; | 412 notified = true; |
| 407 HandleAppExitingForPlatform(); | 413 HandleAppExitingForPlatform(); |
| 408 } | 414 } |
| 409 #endif // !defined(OS_ANDROID) | 415 #endif // !defined(OS_ANDROID) |
| 410 | 416 |
| 411 } // namespace chrome | 417 } // namespace chrome |
| OLD | NEW |