Home | History | Annotate | Download | only in policy
      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   int max_policy_id_;
     51 
     52   PolicyService* policy_service_;
     53   PrefService* prefs_;
     54 
     55   base::CancelableClosure update_callback_;
     56 
     57   const scoped_refptr<base::TaskRunner> task_runner_;
     58 
     59   DISALLOW_COPY_AND_ASSIGN(PolicyStatisticsCollector);
     60 };
     61 
     62 }  // namespace policy
     63 
     64 #endif  // CHROME_BROWSER_POLICY_POLICY_STATISTICS_COLLECTOR_H_
     65