| Index: chrome/browser/upgrade_detector_impl.cc
|
| diff --git a/chrome/browser/upgrade_detector_impl.cc b/chrome/browser/upgrade_detector_impl.cc
|
| index 570275e391ba59c8452c3de6d6861f7f4ead8e04..58973458705e23ef8a9c8ee5c04f3124eac80570 100644
|
| --- a/chrome/browser/upgrade_detector_impl.cc
|
| +++ b/chrome/browser/upgrade_detector_impl.cc
|
| @@ -14,7 +14,6 @@
|
| #include "base/path_service.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/string_util.h"
|
| -#include "base/time.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/chrome_version_info.h"
|
| @@ -54,7 +53,9 @@ std::string CmdLineInterval() {
|
| bool IsTesting() {
|
| const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
|
| return cmd_line.HasSwitch(switches::kSimulateUpgrade) ||
|
| - cmd_line.HasSwitch(switches::kCheckForUpdateIntervalSec);
|
| + cmd_line.HasSwitch(switches::kCheckForUpdateIntervalSec) ||
|
| + cmd_line.HasSwitch(switches::kSimulateCriticalUpdate) ||
|
| + cmd_line.HasSwitch(switches::kSimulateOutdated);
|
| }
|
|
|
| // How often to check for an upgrade.
|
| @@ -162,6 +163,17 @@ UpgradeDetectorImpl::UpgradeDetectorImpl()
|
| UpgradeDetected();
|
| return;
|
| }
|
| + if (command_line.HasSwitch(switches::kSimulateCriticalUpdate)) {
|
| + is_critical_upgrade_ = true;
|
| + UpgradeDetected();
|
| + return;
|
| + }
|
| + if (command_line.HasSwitch(switches::kSimulateOutdated)) {
|
| + is_outdated_install_ = true;
|
| + UpgradeDetected();
|
| + return;
|
| + }
|
| + base::Time::FromString(__DATE__, &build_date_);
|
| // Windows: only enable upgrade notifications for official builds.
|
| // Mac: only enable them if the updater (Keystone) is present.
|
| // Linux (and other POSIX): always enable regardless of branding.
|
| @@ -222,13 +234,14 @@ void UpgradeDetectorImpl::NotifyOnUpgrade() {
|
| bool is_testing = IsTesting();
|
| int64 time_passed = is_testing ? delta.InSeconds() : delta.InHours();
|
|
|
| + bool is_critical_or_oudated = is_critical_upgrade_ || is_outdated_install_;
|
| if (is_unstable_channel_) {
|
| // There's only one threat level for unstable channels like dev and
|
| // canary, and it hits after one hour. During testing, it hits after one
|
| // minute.
|
| const int kUnstableThreshold = 1;
|
|
|
| - if (is_critical_upgrade_)
|
| + if (is_critical_or_oudated)
|
| set_upgrade_notification_stage(UPGRADE_ANNOYANCE_CRITICAL);
|
| else if (time_passed >= kUnstableThreshold) {
|
| set_upgrade_notification_stage(UPGRADE_ANNOYANCE_LOW);
|
| @@ -247,10 +260,10 @@ void UpgradeDetectorImpl::NotifyOnUpgrade() {
|
| const int kLowThreshold = 2 * kMultiplier;
|
|
|
| // These if statements must be sorted (highest interval first).
|
| - if (time_passed >= kSevereThreshold || is_critical_upgrade_) {
|
| + if (time_passed >= kSevereThreshold || is_critical_or_oudated) {
|
| set_upgrade_notification_stage(
|
| - is_critical_upgrade_ ? UPGRADE_ANNOYANCE_CRITICAL :
|
| - UPGRADE_ANNOYANCE_SEVERE);
|
| + is_critical_or_oudated ? UPGRADE_ANNOYANCE_CRITICAL :
|
| + UPGRADE_ANNOYANCE_SEVERE);
|
|
|
| // We can't get any higher, baby.
|
| upgrade_notification_timer_.Stop();
|
|
|