- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / policy / policy_statistics_collector.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_POLICY_POLICY_STATISTICS_COLLECTOR_H_
6 #define CHROME_BROWSER_POLICY_POLICY_STATISTICS_COLLECTOR_H_
7
8 #include "base/basictypes.h"
9 #include "base/cancelable_callback.h"
10 #include "base/memory/ref_counted.h"
11 #include "base/time/time.h"
12
13 class PrefService;
14 class PrefRegistrySimple;
15
16 namespace base {
17 class TaskRunner;
18 }
19
20 namespace policy {
21
22 class PolicyService;
23
24 // Manages regular updates of policy usage UMA histograms.
25 class PolicyStatisticsCollector {
26  public:
27   // Policy usage statistics update rate, in milliseconds.
28   static const int kStatisticsUpdateRate;
29
30   // Neither |policy_service| nor |prefs| can be NULL and must stay valid
31   // throughout the lifetime of PolicyStatisticsCollector.
32   PolicyStatisticsCollector(PolicyService* policy_service,
33                             PrefService* prefs,
34                             const scoped_refptr<base::TaskRunner>& task_runner);
35   virtual ~PolicyStatisticsCollector();
36
37   // Completes initialization and starts periodical statistic updates.
38   void Initialize();
39
40   static void RegisterPrefs(PrefRegistrySimple* registry);
41
42  protected:
43   // protected virtual for mocking.
44   virtual void RecordPolicyUse(int id);
45
46  private:
47   void CollectStatistics();
48   void ScheduleUpdate(base::TimeDelta delay);
49
50   PolicyService* policy_service_;
51   PrefService* prefs_;
52
53   base::CancelableClosure update_callback_;
54
55   const scoped_refptr<base::TaskRunner> task_runner_;
56
57   DISALLOW_COPY_AND_ASSIGN(PolicyStatisticsCollector);
58 };
59
60 }  // namespace policy
61
62 #endif  // CHROME_BROWSER_POLICY_POLICY_STATISTICS_COLLECTOR_H_