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

Side by Side Diff: chrome/browser/chromeos/upgrade_detector_chromeos.cc

Issue 7046096: Refactor UpgradeDetector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync and address finnur's comments in set 2 Created 9 years, 6 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
« no previous file with comments | « chrome/browser/chromeos/upgrade_detector_chromeos.h ('k') | chrome/browser/upgrade_detector.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/upgrade_detector_chromeos.h"
6
7 #include "base/memory/singleton.h"
8 #include "chrome/browser/chromeos/cros/cros_library.h"
9
10 namespace {
11
12 // How long to wait (each cycle) before checking which severity level we should
13 // be at. Once we reach the highest severity, the timer will stop.
14 const int kNotifyCycleTimeMs = 20 * 60 * 1000; // 20 minutes.
15
16 } // namespace
17
18 UpgradeDetectorChromeos::UpgradeDetectorChromeos() {
19 chromeos::CrosLibrary::Get()->GetUpdateLibrary()->AddObserver(this);
20 }
21
22 UpgradeDetectorChromeos::~UpgradeDetectorChromeos() {
23 chromeos::CrosLibrary::Get()->GetUpdateLibrary()->RemoveObserver(this);
24 }
25
26 void UpgradeDetectorChromeos::UpdateStatusChanged(
27 chromeos::UpdateLibrary* library) {
28 if (library->status().status != chromeos::UPDATE_STATUS_UPDATED_NEED_REBOOT)
29 return;
30
31 NotifyUpgradeDetected();
32
33 // ChromeOS shows upgrade arrow once the upgrade becomes available.
34 NotifyOnUpgrade();
35
36 // Setup timer to to move along the upgrade advisory system.
37 upgrade_notification_timer_.Start(
38 base::TimeDelta::FromMilliseconds(kNotifyCycleTimeMs),
39 this, &UpgradeDetectorChromeos::NotifyOnUpgrade);
40 }
41
42 void UpgradeDetectorChromeos::NotifyOnUpgrade() {
43 base::TimeDelta delta = base::Time::Now() - upgrade_detected_time();
44 int64 time_passed = delta.InDays();
45
46 const int kSevereThreshold = 7;
47 const int kHighThreshold = 4;
48 const int kElevatedThreshold = 2;
49 const int kLowThreshold = 0;
50
51 // These if statements must be sorted (highest interval first).
52 if (time_passed >= kSevereThreshold) {
53 set_upgrade_notification_stage(UPGRADE_ANNOYANCE_SEVERE);
54
55 // We can't get any higher, baby.
56 upgrade_notification_timer_.Stop();
57 } else if (time_passed >= kHighThreshold) {
58 set_upgrade_notification_stage(UPGRADE_ANNOYANCE_HIGH);
59 } else if (time_passed >= kElevatedThreshold) {
60 set_upgrade_notification_stage(UPGRADE_ANNOYANCE_ELEVATED);
61 } else if (time_passed >= kLowThreshold) {
62 set_upgrade_notification_stage(UPGRADE_ANNOYANCE_LOW);
63 } else {
64 return; // Not ready to recommend upgrade.
65 }
66
67 NotifyUpgradeRecommended();
68 }
69
70 // static
71 UpgradeDetectorChromeos* UpgradeDetectorChromeos::GetInstance() {
72 return Singleton<UpgradeDetectorChromeos>::get();
73 }
74
75 // static
76 UpgradeDetector* UpgradeDetector::GetInstance() {
77 return UpgradeDetectorChromeos::GetInstance();
78 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/upgrade_detector_chromeos.h ('k') | chrome/browser/upgrade_detector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698