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

Side by Side Diff: chrome/browser/background/background_mode_manager.cc

Issue 176363002: Rename Start/EndKeepAlive to Increment/DecrementKeepAliveCount (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase (rename_keep_alive) Created 6 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 | Annotate | Revision Log
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 <algorithm> 5 #include <algorithm>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 base::Bind(&BackgroundModeManager::OnBackgroundModeEnabledPrefChanged, 200 base::Bind(&BackgroundModeManager::OnBackgroundModeEnabledPrefChanged,
201 base::Unretained(this))); 201 base::Unretained(this)));
202 } 202 }
203 203
204 // Keep the browser alive until extensions are done loading - this is needed 204 // Keep the browser alive until extensions are done loading - this is needed
205 // by the --no-startup-window flag. We want to stay alive until we load 205 // by the --no-startup-window flag. We want to stay alive until we load
206 // extensions, at which point we should either run in background mode (if 206 // extensions, at which point we should either run in background mode (if
207 // there are background apps) or exit if there are none. 207 // there are background apps) or exit if there are none.
208 if (command_line->HasSwitch(switches::kNoStartupWindow)) { 208 if (command_line->HasSwitch(switches::kNoStartupWindow)) {
209 keep_alive_for_startup_ = true; 209 keep_alive_for_startup_ = true;
210 chrome::StartKeepAlive(); 210 chrome::IncrementKeepAliveCount();
211 } else { 211 } else {
212 // Otherwise, start with background mode suspended in case we're launching 212 // Otherwise, start with background mode suspended in case we're launching
213 // in a mode that doesn't open a browser window. It will be resumed when the 213 // in a mode that doesn't open a browser window. It will be resumed when the
214 // first browser window is opened. 214 // first browser window is opened.
215 SuspendBackgroundMode(); 215 SuspendBackgroundMode();
216 } 216 }
217 217
218 // If the -keep-alive-for-test flag is passed, then always keep chrome running 218 // If the -keep-alive-for-test flag is passed, then always keep chrome running
219 // in the background until the user explicitly terminates it. 219 // in the background until the user explicitly terminates it.
220 if (command_line->HasSwitch(switches::kKeepAliveForTest)) 220 if (command_line->HasSwitch(switches::kKeepAliveForTest))
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 /////////////////////////////////////////////////////////////////////////////// 314 ///////////////////////////////////////////////////////////////////////////////
315 // BackgroundModeManager, content::NotificationObserver overrides 315 // BackgroundModeManager, content::NotificationObserver overrides
316 void BackgroundModeManager::Observe( 316 void BackgroundModeManager::Observe(
317 int type, 317 int type,
318 const content::NotificationSource& source, 318 const content::NotificationSource& source,
319 const content::NotificationDetails& details) { 319 const content::NotificationDetails& details) {
320 switch (type) { 320 switch (type) {
321 case chrome::NOTIFICATION_EXTENSIONS_READY: 321 case chrome::NOTIFICATION_EXTENSIONS_READY:
322 // Extensions are loaded, so we don't need to manually keep the browser 322 // Extensions are loaded, so we don't need to manually keep the browser
323 // process alive any more when running in no-startup-window mode. 323 // process alive any more when running in no-startup-window mode.
324 EndKeepAliveForStartup(); 324 DecrementKeepAliveCountForStartup();
325 break; 325 break;
326 326
327 case chrome::NOTIFICATION_EXTENSION_LOADED: { 327 case chrome::NOTIFICATION_EXTENSION_LOADED: {
328 Extension* extension = content::Details<Extension>(details).ptr(); 328 Extension* extension = content::Details<Extension>(details).ptr();
329 Profile* profile = content::Source<Profile>(source).ptr(); 329 Profile* profile = content::Source<Profile>(source).ptr();
330 if (BackgroundApplicationListModel::IsBackgroundApp( 330 if (BackgroundApplicationListModel::IsBackgroundApp(
331 *extension, profile)) { 331 *extension, profile)) {
332 // Extensions loaded after the ExtensionsService is ready should be 332 // Extensions loaded after the ExtensionsService is ready should be
333 // treated as new installs. 333 // treated as new installs.
334 if (extensions::ExtensionSystem::Get(profile)->extension_service()-> 334 if (extensions::ExtensionSystem::Get(profile)->extension_service()->
(...skipping 15 matching lines...) Expand all
350 extensions::APIPermission::kBackground) && 350 extensions::APIPermission::kBackground) &&
351 info->reason == UpdatedExtensionPermissionsInfo::ADDED) { 351 info->reason == UpdatedExtensionPermissionsInfo::ADDED) {
352 // Turned on background permission, so treat this as a new install. 352 // Turned on background permission, so treat this as a new install.
353 OnBackgroundAppInstalled(info->extension); 353 OnBackgroundAppInstalled(info->extension);
354 } 354 }
355 } 355 }
356 break; 356 break;
357 case chrome::NOTIFICATION_APP_TERMINATING: 357 case chrome::NOTIFICATION_APP_TERMINATING:
358 // Make sure we aren't still keeping the app alive (only happens if we 358 // Make sure we aren't still keeping the app alive (only happens if we
359 // don't receive an EXTENSIONS_READY notification for some reason). 359 // don't receive an EXTENSIONS_READY notification for some reason).
360 EndKeepAliveForStartup(); 360 DecrementKeepAliveCountForStartup();
361 // Performing an explicit shutdown, so exit background mode (does nothing 361 // Performing an explicit shutdown, so exit background mode (does nothing
362 // if we aren't in background mode currently). 362 // if we aren't in background mode currently).
363 EndBackgroundMode(); 363 EndBackgroundMode();
364 // Shutting down, so don't listen for any more notifications so we don't 364 // Shutting down, so don't listen for any more notifications so we don't
365 // try to re-enter/exit background mode again. 365 // try to re-enter/exit background mode again.
366 registrar_.RemoveAll(); 366 registrar_.RemoveAll();
367 for (BackgroundModeInfoMap::iterator it = 367 for (BackgroundModeInfoMap::iterator it =
368 background_mode_data_.begin(); 368 background_mode_data_.begin();
369 it != background_mode_data_.end(); 369 it != background_mode_data_.end();
370 ++it) { 370 ++it) {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 } 515 }
516 default: 516 default:
517 bmd->ExecuteCommand(command_id, event_flags); 517 bmd->ExecuteCommand(command_id, event_flags);
518 break; 518 break;
519 } 519 }
520 } 520 }
521 521
522 522
523 /////////////////////////////////////////////////////////////////////////////// 523 ///////////////////////////////////////////////////////////////////////////////
524 // BackgroundModeManager, private 524 // BackgroundModeManager, private
525 void BackgroundModeManager::EndKeepAliveForStartup() { 525 void BackgroundModeManager::DecrementKeepAliveCountForStartup() {
526 if (keep_alive_for_startup_) { 526 if (keep_alive_for_startup_) {
527 keep_alive_for_startup_ = false; 527 keep_alive_for_startup_ = false;
528 // We call this via the message queue to make sure we don't try to end 528 // We call this via the message queue to make sure we don't try to end
529 // keep-alive (which can shutdown Chrome) before the message loop has 529 // keep-alive (which can shutdown Chrome) before the message loop has
530 // started. 530 // started.
531 base::MessageLoop::current()->PostTask(FROM_HERE, 531 base::MessageLoop::current()->PostTask(
532 base::Bind(&chrome::EndKeepAlive)); 532 FROM_HERE, base::Bind(&chrome::DecrementKeepAliveCount));
533 } 533 }
534 } 534 }
535 535
536 void BackgroundModeManager::StartBackgroundMode() { 536 void BackgroundModeManager::StartBackgroundMode() {
537 DCHECK(ShouldBeInBackgroundMode()); 537 DCHECK(ShouldBeInBackgroundMode());
538 // Don't bother putting ourselves in background mode if we're already there 538 // Don't bother putting ourselves in background mode if we're already there
539 // or if background mode is disabled. 539 // or if background mode is disabled.
540 if (in_background_mode_) 540 if (in_background_mode_)
541 return; 541 return;
542 542
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 589
590 void BackgroundModeManager::ResumeBackgroundMode() { 590 void BackgroundModeManager::ResumeBackgroundMode() {
591 background_mode_suspended_ = false; 591 background_mode_suspended_ = false;
592 UpdateKeepAliveAndTrayIcon(); 592 UpdateKeepAliveAndTrayIcon();
593 } 593 }
594 594
595 void BackgroundModeManager::UpdateKeepAliveAndTrayIcon() { 595 void BackgroundModeManager::UpdateKeepAliveAndTrayIcon() {
596 if (in_background_mode_ && !background_mode_suspended_) { 596 if (in_background_mode_ && !background_mode_suspended_) {
597 if (!keeping_alive_) { 597 if (!keeping_alive_) {
598 keeping_alive_ = true; 598 keeping_alive_ = true;
599 chrome::StartKeepAlive(); 599 chrome::IncrementKeepAliveCount();
600 } 600 }
601 CreateStatusTrayIcon(); 601 CreateStatusTrayIcon();
602 return; 602 return;
603 } 603 }
604 604
605 RemoveStatusTrayIcon(); 605 RemoveStatusTrayIcon();
606 if (keeping_alive_) { 606 if (keeping_alive_) {
607 keeping_alive_ = false; 607 keeping_alive_ = false;
608 chrome::EndKeepAlive(); 608 chrome::DecrementKeepAliveCount();
609 } 609 }
610 } 610 }
611 611
612 void BackgroundModeManager::OnBrowserAdded(Browser* browser) { 612 void BackgroundModeManager::OnBrowserAdded(Browser* browser) {
613 ResumeBackgroundMode(); 613 ResumeBackgroundMode();
614 } 614 }
615 615
616 int BackgroundModeManager::GetBackgroundAppCount() const { 616 int BackgroundModeManager::GetBackgroundAppCount() const {
617 int count = 0; 617 int count = 0;
618 // Walk the BackgroundModeData for all profiles and count the number of apps. 618 // Walk the BackgroundModeData for all profiles and count the number of apps.
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 } 815 }
816 } 816 }
817 return profile_it; 817 return profile_it;
818 } 818 }
819 819
820 bool BackgroundModeManager::IsBackgroundModePrefEnabled() const { 820 bool BackgroundModeManager::IsBackgroundModePrefEnabled() const {
821 PrefService* service = g_browser_process->local_state(); 821 PrefService* service = g_browser_process->local_state();
822 DCHECK(service); 822 DCHECK(service);
823 return service->GetBoolean(prefs::kBackgroundModeEnabled); 823 return service->GetBoolean(prefs::kBackgroundModeEnabled);
824 } 824 }
OLDNEW
« no previous file with comments | « chrome/browser/background/background_mode_manager.h ('k') | chrome/browser/background/background_mode_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698