OLD | NEW |
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 #ifndef CHROME_BROWSER_UPGRADE_DETECTOR_H_ | 5 #ifndef CHROME_BROWSER_UPGRADE_DETECTOR_H_ |
6 #define CHROME_BROWSER_UPGRADE_DETECTOR_H_ | 6 #define CHROME_BROWSER_UPGRADE_DETECTOR_H_ |
7 | 7 |
8 #include "base/gtest_prod_util.h" | 8 #include "base/gtest_prod_util.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/observer_list.h" |
10 #include "base/timer/timer.h" | 11 #include "base/timer/timer.h" |
11 #include "chrome/browser/chrome_notification_types.h" | 12 #include "chrome/browser/chrome_notification_types.h" |
| 13 #include "chrome/browser/upgrade_observer.h" |
12 #include "ui/base/idle/idle.h" | 14 #include "ui/base/idle/idle.h" |
13 #include "ui/gfx/image/image.h" | 15 #include "ui/gfx/image/image.h" |
14 | 16 |
15 class PrefRegistrySimple; | 17 class PrefRegistrySimple; |
| 18 class UpgradeObserver; |
16 | 19 |
17 /////////////////////////////////////////////////////////////////////////////// | 20 /////////////////////////////////////////////////////////////////////////////// |
18 // UpgradeDetector | 21 // UpgradeDetector |
19 // | 22 // |
20 // This class is a singleton class that monitors when an upgrade happens in the | 23 // This class is a singleton class that monitors when an upgrade happens in the |
21 // background. We basically ask Omaha what it thinks the latest version is and | 24 // background. We basically ask Omaha what it thinks the latest version is and |
22 // if our version is lower we send out a notification upon: | 25 // if our version is lower we send out a notification upon: |
23 // a) Detecting an upgrade and... | 26 // a) Detecting an upgrade and... |
24 // b) When we think the user should be notified about the upgrade. | 27 // b) When we think the user should be notified about the upgrade. |
25 // The latter happens much later, since we don't want to be too annoying. | 28 // The latter happens much later, since we don't want to be too annoying. |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 | 75 |
73 // Retrieves the right icon based on the degree of severity (see | 76 // Retrieves the right icon based on the degree of severity (see |
74 // UpgradeNotificationAnnoyanceLevel, each level has an an accompanying icon | 77 // UpgradeNotificationAnnoyanceLevel, each level has an an accompanying icon |
75 // to go with it) to display within the app menu. | 78 // to go with it) to display within the app menu. |
76 gfx::Image GetIcon(); | 79 gfx::Image GetIcon(); |
77 | 80 |
78 UpgradeNotificationAnnoyanceLevel upgrade_notification_stage() const { | 81 UpgradeNotificationAnnoyanceLevel upgrade_notification_stage() const { |
79 return upgrade_notification_stage_; | 82 return upgrade_notification_stage_; |
80 } | 83 } |
81 | 84 |
| 85 void AddObserver(UpgradeObserver* observer); |
| 86 |
| 87 void RemoveObserver(UpgradeObserver* observer); |
| 88 |
82 protected: | 89 protected: |
83 enum UpgradeAvailable { | 90 enum UpgradeAvailable { |
84 // If no update is available and current install is recent enough. | 91 // If no update is available and current install is recent enough. |
85 UPGRADE_AVAILABLE_NONE, | 92 UPGRADE_AVAILABLE_NONE, |
86 // If a regular update is available. | 93 // If a regular update is available. |
87 UPGRADE_AVAILABLE_REGULAR, | 94 UPGRADE_AVAILABLE_REGULAR, |
88 // If a critical update to Chrome has been installed, such as a zero-day | 95 // If a critical update to Chrome has been installed, such as a zero-day |
89 // fix. | 96 // fix. |
90 UPGRADE_AVAILABLE_CRITICAL, | 97 UPGRADE_AVAILABLE_CRITICAL, |
91 // If no update to Chrome has been installed for more than the recommended | 98 // If no update to Chrome has been installed for more than the recommended |
92 // time. | 99 // time. |
93 UPGRADE_NEEDED_OUTDATED_INSTALL, | 100 UPGRADE_NEEDED_OUTDATED_INSTALL, |
94 // If no update to Chrome has been installed for more than the recommended | 101 // If no update to Chrome has been installed for more than the recommended |
95 // time AND auto-update is turned off. | 102 // time AND auto-update is turned off. |
96 UPGRADE_NEEDED_OUTDATED_INSTALL_NO_AU, | 103 UPGRADE_NEEDED_OUTDATED_INSTALL_NO_AU, |
97 }; | 104 }; |
98 | 105 |
99 UpgradeDetector(); | 106 UpgradeDetector(); |
100 | 107 |
101 // Sends out UPGRADE_RECOMMENDED notification and set notify_upgrade_. | 108 // Sends out UPGRADE_RECOMMENDED notification and set notify_upgrade_. |
102 void NotifyUpgradeRecommended(); | 109 void NotifyUpgradeRecommended(); |
103 | 110 |
| 111 // The function that sends out a notification that lets the rest of the UI |
| 112 // know we should notify the user that a new update is available to download |
| 113 // over cellular connection. |
| 114 void NotifyUpdateOverCellularAvailable(); |
| 115 |
104 // Triggers a critical update, which starts a timer that checks the machine | 116 // Triggers a critical update, which starts a timer that checks the machine |
105 // idle state. Protected and virtual so that it could be overridden by tests. | 117 // idle state. Protected and virtual so that it could be overridden by tests. |
106 virtual void TriggerCriticalUpdate(); | 118 virtual void TriggerCriticalUpdate(); |
107 | 119 |
108 UpgradeAvailable upgrade_available() const { return upgrade_available_; } | 120 UpgradeAvailable upgrade_available() const { return upgrade_available_; } |
109 void set_upgrade_available(UpgradeAvailable available) { | 121 void set_upgrade_available(UpgradeAvailable available) { |
110 upgrade_available_ = available; | 122 upgrade_available_ = available; |
111 } | 123 } |
112 | 124 |
113 void set_best_effort_experiment_updates_available(bool available) { | 125 void set_best_effort_experiment_updates_available(bool available) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 // UPGRADE_AVAILABLE_CRITICAL. | 180 // UPGRADE_AVAILABLE_CRITICAL. |
169 base::RepeatingTimer idle_check_timer_; | 181 base::RepeatingTimer idle_check_timer_; |
170 | 182 |
171 // The stage at which the annoyance level for upgrade notifications is at. | 183 // The stage at which the annoyance level for upgrade notifications is at. |
172 UpgradeNotificationAnnoyanceLevel upgrade_notification_stage_; | 184 UpgradeNotificationAnnoyanceLevel upgrade_notification_stage_; |
173 | 185 |
174 // Whether we have waited long enough after detecting an upgrade (to see | 186 // Whether we have waited long enough after detecting an upgrade (to see |
175 // is we should start nagging about upgrading). | 187 // is we should start nagging about upgrading). |
176 bool notify_upgrade_; | 188 bool notify_upgrade_; |
177 | 189 |
| 190 base::ObserverList<UpgradeObserver> observer_list_; |
| 191 |
178 DISALLOW_COPY_AND_ASSIGN(UpgradeDetector); | 192 DISALLOW_COPY_AND_ASSIGN(UpgradeDetector); |
179 }; | 193 }; |
180 | 194 |
181 #endif // CHROME_BROWSER_UPGRADE_DETECTOR_H_ | 195 #endif // CHROME_BROWSER_UPGRADE_DETECTOR_H_ |
OLD | NEW |