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