blob: 435d294b662f214c6a3edca76eb124527b723ba8 [file] [log] [blame]
[email protected]ceff8402011-06-12 23:27:121// 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#ifndef CHROME_BROWSER_UPGRADE_DETECTOR_IMPL_H_
6#define CHROME_BROWSER_UPGRADE_DETECTOR_IMPL_H_
[email protected]ceff8402011-06-12 23:27:127
[email protected]6198f7982011-11-17 21:24:378#include "base/memory/weak_ptr.h"
[email protected]ceff8402011-06-12 23:27:129#include "base/timer.h"
10#include "chrome/browser/upgrade_detector.h"
11
12template <typename T> struct DefaultSingletonTraits;
13
14class UpgradeDetectorImpl : public UpgradeDetector {
15 public:
16 virtual ~UpgradeDetectorImpl();
17
18 // Returns the singleton instance.
19 static UpgradeDetectorImpl* GetInstance();
20
21 private:
22 friend struct DefaultSingletonTraits<UpgradeDetectorImpl>;
23
24 UpgradeDetectorImpl();
25
26 // Launches a task on the file thread to check if we have the latest version.
27 void CheckForUpgrade();
28
29 // Sends out a notification and starts a one shot timer to wait until
30 // notifying the user.
31 void UpgradeDetected();
32
33 // The function that sends out a notification (after a certain time has
34 // elapsed) that lets the rest of the UI know we should start notifying the
35 // user that a new version is available.
36 void NotifyOnUpgrade();
37
38 // We periodically check to see if Chrome has been upgraded.
39 base::RepeatingTimer<UpgradeDetectorImpl> detect_upgrade_timer_;
40
41 // After we detect an upgrade we start a recurring timer to see if enough time
42 // has passed and we should start notifying the user.
43 base::RepeatingTimer<UpgradeDetectorImpl> upgrade_notification_timer_;
44
45 // We use this factory to create callback tasks for UpgradeDetected. We pass
46 // the task to the actual upgrade detection code, which is in
47 // DetectUpgradeTask.
[email protected]6198f7982011-11-17 21:24:3748 base::WeakPtrFactory<UpgradeDetectorImpl> weak_factory_;
[email protected]ceff8402011-06-12 23:27:1249
50 // True if this build is a dev or canary channel build.
51 bool is_unstable_channel_;
52
53 DISALLOW_COPY_AND_ASSIGN(UpgradeDetectorImpl);
54};
55
56
57#endif // CHROME_BROWSER_UPGRADE_DETECTOR_IMPL_H_