Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / metrics / variations / variations_request_scheduler_mobile.h
1 // Copyright (c) 2013 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_METRICS_VARIATIONS_VARIATIONS_REQUEST_SCHEDULER_MOBILE_H_
6 #define CHROME_BROWSER_METRICS_VARIATIONS_VARIATIONS_REQUEST_SCHEDULER_MOBILE_H_
7
8 #include "base/bind.h"
9 #include "chrome/browser/metrics/variations/variations_request_scheduler.h"
10
11 class PrefService;
12
13 namespace chrome_variations {
14
15 // A specialized VariationsRequestScheduler that manages request cycles for
16 // VariationsService on mobile platforms.
17 class VariationsRequestSchedulerMobile : public VariationsRequestScheduler {
18  public:
19   // |task} is the closure to call when the scheduler deems ready. |local_state|
20   // is the PrefService that contains the time of the last fetch.
21   explicit VariationsRequestSchedulerMobile(const base::Closure& task,
22                                             PrefService* local_state);
23   virtual ~VariationsRequestSchedulerMobile();
24
25   // Base class overrides.
26   virtual void Start() OVERRIDE;
27   virtual void Reset() OVERRIDE;
28   virtual void OnAppEnterForeground() OVERRIDE;
29
30  private:
31   FRIEND_TEST_ALL_PREFIXES(VariationsRequestSchedulerMobileTest,
32                            OnAppEnterForegroundNoRun);
33   FRIEND_TEST_ALL_PREFIXES(VariationsRequestSchedulerMobileTest,
34                            OnAppEnterForegroundRun);
35   FRIEND_TEST_ALL_PREFIXES(VariationsRequestSchedulerMobileTest,
36                            OnAppEnterForegroundOnStartup);
37
38   // The local state instance that provides the last fetch time.
39   PrefService* local_state_;
40
41   // Timer used for triggering a delayed fetch for ScheduleFetch().
42   base::OneShotTimer<VariationsRequestSchedulerMobile> schedule_fetch_timer_;
43
44   // The time the last seed request was initiated.
45   base::Time last_request_time_;
46
47   DISALLOW_COPY_AND_ASSIGN(VariationsRequestSchedulerMobile);
48 };
49
50 }  // namespace chrome_variations
51
52 #endif  // CHROME_BROWSER_METRICS_VARIATIONS_VARIATIONS_REQUEST_SCHEDULER_MOBILE_H_