OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_BACKGROUND_MODE_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_BACKGROUND_MODE_MANAGER_H_ |
6 #define CHROME_BROWSER_BACKGROUND_MODE_MANAGER_H_ | 6 #define CHROME_BROWSER_BACKGROUND_MODE_MANAGER_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
| 9 #include "app/menus/simple_menu_model.h" |
9 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
10 #include "chrome/browser/status_icons/status_icon.h" | 11 #include "chrome/browser/status_icons/status_icon.h" |
11 #include "chrome/common/notification_observer.h" | 12 #include "chrome/common/notification_observer.h" |
12 #include "chrome/common/notification_registrar.h" | 13 #include "chrome/common/notification_registrar.h" |
13 | 14 |
14 class Extension; | 15 class Extension; |
15 class PrefService; | 16 class PrefService; |
16 class Profile; | 17 class Profile; |
17 class StatusIcon; | 18 class StatusIcon; |
18 class StatusTray; | 19 class StatusTray; |
19 | 20 |
20 // BackgroundModeManager is responsible for switching Chrome into and out of | 21 // BackgroundModeManager is responsible for switching Chrome into and out of |
21 // "background mode" and for providing UI for the user to exit Chrome when there | 22 // "background mode" and for providing UI for the user to exit Chrome when there |
22 // are no open browser windows. | 23 // are no open browser windows. |
23 // | 24 // |
24 // Chrome enters background mode whenever there is an application with the | 25 // Chrome enters background mode whenever there is an application with the |
25 // "background" permission installed and the appropriate user preference is | 26 // "background" permission installed and the appropriate user preference is |
26 // set (kBackgroundModeEnabled). This class monitors the set of installed/loaded | 27 // set (kBackgroundModeEnabled). This class monitors the set of installed/loaded |
27 // extensions to ensure that Chrome enters/exits background mode at the | 28 // extensions to ensure that Chrome enters/exits background mode at the |
28 // appropriate time. | 29 // appropriate time. |
29 // | 30 // |
30 // When Chrome is in background mode, it will continue running even after the | 31 // When Chrome is in background mode, it will continue running even after the |
31 // last browser window is closed, until the user explicitly exits the app. | 32 // last browser window is closed, until the user explicitly exits the app. |
32 // Additionally, when in background mode, Chrome will launch on OS login with | 33 // Additionally, when in background mode, Chrome will launch on OS login with |
33 // no open windows to allow apps with the "background" permission to run in the | 34 // no open windows to allow apps with the "background" permission to run in the |
34 // background. | 35 // background. |
35 class BackgroundModeManager | 36 class BackgroundModeManager |
36 : private NotificationObserver, | 37 : private NotificationObserver, |
37 private StatusIcon::Observer { | 38 private menus::SimpleMenuModel::Delegate { |
38 public: | 39 public: |
39 explicit BackgroundModeManager(Profile* profile); | 40 explicit BackgroundModeManager(Profile* profile); |
40 virtual ~BackgroundModeManager(); | 41 virtual ~BackgroundModeManager(); |
41 | 42 |
42 static void RegisterUserPrefs(PrefService* prefs); | 43 static void RegisterUserPrefs(PrefService* prefs); |
43 private: | 44 private: |
44 friend class TestBackgroundModeManager; | 45 friend class TestBackgroundModeManager; |
45 friend class BackgroundModeManagerTest; | 46 friend class BackgroundModeManagerTest; |
46 FRIEND_TEST_ALL_PREFIXES(BackgroundModeManagerTest, | 47 FRIEND_TEST_ALL_PREFIXES(BackgroundModeManagerTest, |
47 BackgroundAppLoadUnload); | 48 BackgroundAppLoadUnload); |
48 FRIEND_TEST_ALL_PREFIXES(BackgroundModeManagerTest, | 49 FRIEND_TEST_ALL_PREFIXES(BackgroundModeManagerTest, |
49 BackgroundAppInstallUninstall); | 50 BackgroundAppInstallUninstall); |
50 | 51 |
51 // NotificationObserver implementation. | 52 // NotificationObserver implementation. |
52 virtual void Observe(NotificationType type, | 53 virtual void Observe(NotificationType type, |
53 const NotificationSource& source, | 54 const NotificationSource& source, |
54 const NotificationDetails& details); | 55 const NotificationDetails& details); |
55 | 56 |
56 // StatusIcon::Observer implementation. | 57 // SimpleMenuModel::Delegate implementation. |
57 virtual void OnClicked(); | 58 virtual bool IsCommandIdChecked(int command_id) const; |
| 59 virtual bool IsCommandIdEnabled(int command_id) const; |
| 60 virtual bool GetAcceleratorForCommandId(int command_id, |
| 61 menus::Accelerator* accelerator); |
| 62 virtual void ExecuteCommand(int command_id); |
58 | 63 |
59 // Called when an extension is loaded to manage count of background apps. | 64 // Called when an extension is loaded to manage count of background apps. |
60 void OnBackgroundAppLoaded(); | 65 void OnBackgroundAppLoaded(); |
61 | 66 |
62 // Called when an extension is unloaded to manage count of background apps. | 67 // Called when an extension is unloaded to manage count of background apps. |
63 void OnBackgroundAppUnloaded(); | 68 void OnBackgroundAppUnloaded(); |
64 | 69 |
65 // Invoked when an extension is installed so we can ensure that | 70 // Invoked when an extension is installed so we can ensure that |
66 // launch-on-startup is enabled if appropriate. | 71 // launch-on-startup is enabled if appropriate. |
67 void OnBackgroundAppInstalled(); | 72 void OnBackgroundAppInstalled(); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 // platform doesn't support status icons. | 113 // platform doesn't support status icons. |
109 StatusTray* status_tray_; | 114 StatusTray* status_tray_; |
110 | 115 |
111 // Reference to our status icon (if any) - owned by the StatusTray. | 116 // Reference to our status icon (if any) - owned by the StatusTray. |
112 StatusIcon* status_icon_; | 117 StatusIcon* status_icon_; |
113 | 118 |
114 DISALLOW_COPY_AND_ASSIGN(BackgroundModeManager); | 119 DISALLOW_COPY_AND_ASSIGN(BackgroundModeManager); |
115 }; | 120 }; |
116 | 121 |
117 #endif // CHROME_BROWSER_BACKGROUND_MODE_MANAGER_H_ | 122 #endif // CHROME_BROWSER_BACKGROUND_MODE_MANAGER_H_ |
OLD | NEW |