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

Side by Side Diff: chrome/browser/ui/browser_list.cc

Issue 7273038: ChromeOs: Call BrowserList::SessionEnding when shutting down via SIGTERM (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/browser_list.h" 5 #include "chrome/browser/ui/browser_list.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // On the Mac, the application continues to run once all windows are closed. 274 // On the Mac, the application continues to run once all windows are closed.
275 // Terminate will result in a CloseAllBrowsers() call, and once (and if) 275 // Terminate will result in a CloseAllBrowsers() call, and once (and if)
276 // that is done, will cause the application to exit cleanly. 276 // that is done, will cause the application to exit cleanly.
277 chrome_browser_application_mac::Terminate(); 277 chrome_browser_application_mac::Terminate();
278 #endif 278 #endif
279 } 279 }
280 280
281 // static 281 // static
282 void BrowserList::NotifyAndTerminate(bool fast_path) { 282 void BrowserList::NotifyAndTerminate(bool fast_path) {
283 #if defined(OS_CHROMEOS) 283 #if defined(OS_CHROMEOS)
284 if (!signout) return; 284 if (!signout)
285 NotifyWindowManagerAboutSignout(); 285 return;
286 #endif 286 #endif
287 287
288 if (fast_path) { 288 if (fast_path) {
289 NotificationService::current()->Notify(NotificationType::APP_TERMINATING, 289 NotificationService::current()->Notify(NotificationType::APP_TERMINATING,
290 NotificationService::AllSources(), 290 NotificationService::AllSources(),
291 NotificationService::NoDetails()); 291 NotificationService::NoDetails());
292 } 292 }
293 293
294 #if defined(OS_CHROMEOS) 294 #if defined(OS_CHROMEOS)
295 NotifyWindowManagerAboutSignout();
295 chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get(); 296 chromeos::CrosLibrary* cros_library = chromeos::CrosLibrary::Get();
296 if (cros_library->EnsureLoaded()) { 297 if (cros_library->EnsureLoaded()) {
297 // If update has been installed, reboot, otherwise, sign out. 298 // If update has been installed, reboot, otherwise, sign out.
298 if (cros_library->GetUpdateLibrary()->status().status == 299 if (cros_library->GetUpdateLibrary()->status().status ==
299 chromeos::UPDATE_STATUS_UPDATED_NEED_REBOOT) { 300 chromeos::UPDATE_STATUS_UPDATED_NEED_REBOOT) {
300 cros_library->GetUpdateLibrary()->RebootAfterUpdate(); 301 cros_library->GetUpdateLibrary()->RebootAfterUpdate();
301 } else { 302 } else {
302 cros_library->GetLoginLibrary()->StopSession(""); 303 cros_library->GetLoginLibrary()->StopSession("");
303 } 304 }
304 return; 305 return;
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 chromeos::BootTimesLoader::Get()->RecordCurrentStats(kLogoutStarted); 430 chromeos::BootTimesLoader::Get()->RecordCurrentStats(kLogoutStarted);
430 431
431 // Login screen should show up in owner's locale. 432 // Login screen should show up in owner's locale.
432 PrefService* state = g_browser_process->local_state(); 433 PrefService* state = g_browser_process->local_state();
433 if (state) { 434 if (state) {
434 std::string owner_locale = state->GetString(prefs::kOwnerLocale); 435 std::string owner_locale = state->GetString(prefs::kOwnerLocale);
435 if (!owner_locale.empty() && 436 if (!owner_locale.empty() &&
436 state->GetString(prefs::kApplicationLocale) != owner_locale && 437 state->GetString(prefs::kApplicationLocale) != owner_locale &&
437 !state->IsManagedPreference(prefs::kApplicationLocale)) { 438 !state->IsManagedPreference(prefs::kApplicationLocale)) {
438 state->SetString(prefs::kApplicationLocale, owner_locale); 439 state->SetString(prefs::kApplicationLocale, owner_locale);
439 state->ScheduleSavePersistentPrefs(); 440 state->SavePersistentPrefs();
440 } 441 }
441 } 442 }
442 if (FastShutdown()) { 443 if (FastShutdown())
443 return; 444 return;
444 }
445 #else 445 #else
446 // Reset the restart bit that might have been set in cancelled restart 446 // Reset the restart bit that might have been set in cancelled restart
447 // request. 447 // request.
448 PrefService* pref_service = g_browser_process->local_state(); 448 PrefService* pref_service = g_browser_process->local_state();
449 pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, false); 449 pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, false);
450 #endif 450 #endif
451 AttemptExitInternal(); 451 AttemptExitInternal();
452 } 452 }
453 453
454 // static 454 // static
(...skipping 19 matching lines...) Expand all
474 // so crashes during shutdown are still reported in UMA. 474 // so crashes during shutdown are still reported in UMA.
475 if (AreAllBrowsersCloseable()) 475 if (AreAllBrowsersCloseable())
476 MarkAsCleanShutdown(); 476 MarkAsCleanShutdown();
477 AttemptExitInternal(); 477 AttemptExitInternal();
478 } 478 }
479 479
480 #if defined(OS_CHROMEOS) 480 #if defined(OS_CHROMEOS)
481 // static 481 // static
482 void BrowserList::ExitCleanly() { 482 void BrowserList::ExitCleanly() {
483 // We always mark exit cleanly. 483 // We always mark exit cleanly.
484 MarkAsCleanShutdown(); 484 g_browser_process->EndSession();
485 AttemptExitInternal(); 485 AttemptExitInternal();
486 } 486 }
487 #endif 487 #endif
488 488
489 // static 489 // static
490 void BrowserList::SessionEnding() { 490 void BrowserList::SessionEnding() {
491 // EndSession is invoked once per frame. Only do something the first time. 491 // EndSession is invoked once per frame. Only do something the first time.
492 static bool already_ended = false; 492 static bool already_ended = false;
493 // We may get called in the middle of shutdown, e.g. http://crbug.com/70852 493 // We may get called in the middle of shutdown, e.g. http://crbug.com/70852
494 // In this case, do nothing. 494 // In this case, do nothing.
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 // If no more TabContents from Browsers, check the BackgroundPrintingManager. 726 // If no more TabContents from Browsers, check the BackgroundPrintingManager.
727 while (bg_printing_iterator_ != GetBackgroundPrintingManager()->end()) { 727 while (bg_printing_iterator_ != GetBackgroundPrintingManager()->end()) {
728 cur_ = *bg_printing_iterator_; 728 cur_ = *bg_printing_iterator_;
729 CHECK(cur_); 729 CHECK(cur_);
730 ++bg_printing_iterator_; 730 ++bg_printing_iterator_;
731 return; 731 return;
732 } 732 }
733 // Reached the end - no more TabContents. 733 // Reached the end - no more TabContents.
734 cur_ = NULL; 734 cur_ = NULL;
735 } 735 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698