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/upgrade_detector_impl.h" | 5 #include "chrome/browser/upgrade_detector_impl.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/build_time.h" | 10 #include "base/build_time.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 // Same as kNotifyCycleTimeMs but only used during testing. | 52 // Same as kNotifyCycleTimeMs but only used during testing. |
53 const int kNotifyCycleTimeForTestingMs = 500; // Half a second. | 53 const int kNotifyCycleTimeForTestingMs = 500; // Half a second. |
54 | 54 |
55 // The number of days after which we identify a build/install as outdated. | 55 // The number of days after which we identify a build/install as outdated. |
56 const uint64 kOutdatedBuildAgeInDays = 12 * 7; | 56 const uint64 kOutdatedBuildAgeInDays = 12 * 7; |
57 | 57 |
58 // Return the string that was passed as a value for the | 58 // Return the string that was passed as a value for the |
59 // kCheckForUpdateIntervalSec switch. | 59 // kCheckForUpdateIntervalSec switch. |
60 std::string CmdLineInterval() { | 60 std::string CmdLineInterval() { |
61 const CommandLine& cmd_line = *CommandLine::ForCurrentProcess(); | 61 const base::CommandLine& cmd_line = *base::CommandLine::ForCurrentProcess(); |
62 return cmd_line.GetSwitchValueASCII(switches::kCheckForUpdateIntervalSec); | 62 return cmd_line.GetSwitchValueASCII(switches::kCheckForUpdateIntervalSec); |
63 } | 63 } |
64 | 64 |
65 // Check if one of the outdated simulation switches was present on the command | 65 // Check if one of the outdated simulation switches was present on the command |
66 // line. | 66 // line. |
67 bool SimulatingOutdated() { | 67 bool SimulatingOutdated() { |
68 const CommandLine& cmd_line = *CommandLine::ForCurrentProcess(); | 68 const base::CommandLine& cmd_line = *base::CommandLine::ForCurrentProcess(); |
69 return cmd_line.HasSwitch(switches::kSimulateOutdated) || | 69 return cmd_line.HasSwitch(switches::kSimulateOutdated) || |
70 cmd_line.HasSwitch(switches::kSimulateOutdatedNoAU); | 70 cmd_line.HasSwitch(switches::kSimulateOutdatedNoAU); |
71 } | 71 } |
72 | 72 |
73 // Check if any of the testing switches was present on the command line. | 73 // Check if any of the testing switches was present on the command line. |
74 bool IsTesting() { | 74 bool IsTesting() { |
75 const CommandLine& cmd_line = *CommandLine::ForCurrentProcess(); | 75 const base::CommandLine& cmd_line = *base::CommandLine::ForCurrentProcess(); |
76 return cmd_line.HasSwitch(switches::kSimulateUpgrade) || | 76 return cmd_line.HasSwitch(switches::kSimulateUpgrade) || |
77 cmd_line.HasSwitch(switches::kCheckForUpdateIntervalSec) || | 77 cmd_line.HasSwitch(switches::kCheckForUpdateIntervalSec) || |
78 cmd_line.HasSwitch(switches::kSimulateCriticalUpdate) || | 78 cmd_line.HasSwitch(switches::kSimulateCriticalUpdate) || |
79 SimulatingOutdated(); | 79 SimulatingOutdated(); |
80 } | 80 } |
81 | 81 |
82 // How often to check for an upgrade. | 82 // How often to check for an upgrade. |
83 int GetCheckForUpgradeEveryMs() { | 83 int GetCheckForUpgradeEveryMs() { |
84 // Check for a value passed via the command line. | 84 // Check for a value passed via the command line. |
85 int interval_ms; | 85 int interval_ms; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 InstallUtil::GetChromeVersion(dist, system_install, &installed_version); | 162 InstallUtil::GetChromeVersion(dist, system_install, &installed_version); |
163 if (critical_update && installed_version.IsValid()) { | 163 if (critical_update && installed_version.IsValid()) { |
164 InstallUtil::GetCriticalUpdateVersion(dist, system_install, | 164 InstallUtil::GetCriticalUpdateVersion(dist, system_install, |
165 critical_update); | 165 critical_update); |
166 } | 166 } |
167 #elif defined(OS_MACOSX) | 167 #elif defined(OS_MACOSX) |
168 installed_version = | 168 installed_version = |
169 Version(base::UTF16ToASCII(keystone_glue::CurrentlyInstalledVersion())); | 169 Version(base::UTF16ToASCII(keystone_glue::CurrentlyInstalledVersion())); |
170 #elif defined(OS_POSIX) | 170 #elif defined(OS_POSIX) |
171 // POSIX but not Mac OS X: Linux, etc. | 171 // POSIX but not Mac OS X: Linux, etc. |
172 CommandLine command_line(*CommandLine::ForCurrentProcess()); | 172 base::CommandLine command_line(*base::CommandLine::ForCurrentProcess()); |
173 command_line.AppendSwitch(switches::kProductVersion); | 173 command_line.AppendSwitch(switches::kProductVersion); |
174 std::string reply; | 174 std::string reply; |
175 if (!base::GetAppOutput(command_line, &reply)) { | 175 if (!base::GetAppOutput(command_line, &reply)) { |
176 DLOG(ERROR) << "Failed to get current file version"; | 176 DLOG(ERROR) << "Failed to get current file version"; |
177 return installed_version; | 177 return installed_version; |
178 } | 178 } |
179 | 179 |
180 installed_version = Version(reply); | 180 installed_version = Version(reply); |
181 #endif | 181 #endif |
182 return installed_version; | 182 return installed_version; |
183 } | 183 } |
184 | 184 |
185 } // namespace | 185 } // namespace |
186 | 186 |
187 UpgradeDetectorImpl::UpgradeDetectorImpl() | 187 UpgradeDetectorImpl::UpgradeDetectorImpl() |
188 : is_unstable_channel_(false), | 188 : is_unstable_channel_(false), |
189 is_auto_update_enabled_(true), | 189 is_auto_update_enabled_(true), |
190 build_date_(base::GetBuildTime()), | 190 build_date_(base::GetBuildTime()), |
191 weak_factory_(this) { | 191 weak_factory_(this) { |
192 CommandLine command_line(*CommandLine::ForCurrentProcess()); | 192 base::CommandLine command_line(*base::CommandLine::ForCurrentProcess()); |
193 // The different command line switches that affect testing can't be used | 193 // The different command line switches that affect testing can't be used |
194 // simultaneously, if they do, here's the precedence order, based on the order | 194 // simultaneously, if they do, here's the precedence order, based on the order |
195 // of the if statements below: | 195 // of the if statements below: |
196 // - kDisableBackgroundNetworking prevents any of the other command line | 196 // - kDisableBackgroundNetworking prevents any of the other command line |
197 // switch from being taken into account. | 197 // switch from being taken into account. |
198 // - kSimulateUpgrade supersedes critical or outdated upgrade switches. | 198 // - kSimulateUpgrade supersedes critical or outdated upgrade switches. |
199 // - kSimulateCriticalUpdate has precedence over kSimulateOutdated. | 199 // - kSimulateCriticalUpdate has precedence over kSimulateOutdated. |
200 // - kSimulateOutdatedNoAU has precedence over kSimulateOutdated. | 200 // - kSimulateOutdatedNoAU has precedence over kSimulateOutdated. |
201 // - kSimulateOutdated[NoAu] can work on its own, or with a specified date. | 201 // - kSimulateOutdated[NoAu] can work on its own, or with a specified date. |
202 if (command_line.HasSwitch(switches::kDisableBackgroundNetworking)) | 202 if (command_line.HasSwitch(switches::kDisableBackgroundNetworking)) |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 | 506 |
507 // static | 507 // static |
508 UpgradeDetectorImpl* UpgradeDetectorImpl::GetInstance() { | 508 UpgradeDetectorImpl* UpgradeDetectorImpl::GetInstance() { |
509 return Singleton<UpgradeDetectorImpl>::get(); | 509 return Singleton<UpgradeDetectorImpl>::get(); |
510 } | 510 } |
511 | 511 |
512 // static | 512 // static |
513 UpgradeDetector* UpgradeDetector::GetInstance() { | 513 UpgradeDetector* UpgradeDetector::GetInstance() { |
514 return UpgradeDetectorImpl::GetInstance(); | 514 return UpgradeDetectorImpl::GetInstance(); |
515 } | 515 } |
OLD | NEW |