OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file defines a service that collects information about the user | 5 // This file defines a service that collects information about the user |
6 // experience in order to help improve future versions of the app. | 6 // experience in order to help improve future versions of the app. |
7 | 7 |
8 #ifndef CHROME_BROWSER_METRICS_METRICS_SERVICE_H_ | 8 #ifndef CHROME_BROWSER_METRICS_METRICS_SERVICE_H_ |
9 #define CHROME_BROWSER_METRICS_METRICS_SERVICE_H_ | 9 #define CHROME_BROWSER_METRICS_METRICS_SERVICE_H_ |
10 | 10 |
(...skipping 26 matching lines...) Expand all Loading... |
37 class GoogleUpdateMetricsProviderWin; | 37 class GoogleUpdateMetricsProviderWin; |
38 class MetricsReportingScheduler; | 38 class MetricsReportingScheduler; |
39 class PrefService; | 39 class PrefService; |
40 class PrefRegistrySimple; | 40 class PrefRegistrySimple; |
41 class PluginMetricsProvider; | 41 class PluginMetricsProvider; |
42 | 42 |
43 namespace base { | 43 namespace base { |
44 class DictionaryValue; | 44 class DictionaryValue; |
45 class HistogramSamples; | 45 class HistogramSamples; |
46 class MessageLoopProxy; | 46 class MessageLoopProxy; |
| 47 class PrefService; |
47 } | 48 } |
48 | 49 |
49 namespace variations { | 50 namespace variations { |
50 struct ActiveGroupId; | 51 struct ActiveGroupId; |
51 } | 52 } |
52 | 53 |
53 namespace content { | 54 namespace content { |
54 } | 55 } |
55 | 56 |
56 namespace metrics { | 57 namespace metrics { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 UNINITIALIZED_PHASE = 0, | 97 UNINITIALIZED_PHASE = 0, |
97 START_METRICS_RECORDING = 100, | 98 START_METRICS_RECORDING = 100, |
98 CREATE_PROFILE = 200, | 99 CREATE_PROFILE = 200, |
99 STARTUP_TIMEBOMB_ARM = 300, | 100 STARTUP_TIMEBOMB_ARM = 300, |
100 THREAD_WATCHER_START = 400, | 101 THREAD_WATCHER_START = 400, |
101 MAIN_MESSAGE_LOOP_RUN = 500, | 102 MAIN_MESSAGE_LOOP_RUN = 500, |
102 SHUTDOWN_TIMEBOMB_ARM = 600, | 103 SHUTDOWN_TIMEBOMB_ARM = 600, |
103 SHUTDOWN_COMPLETE = 700, | 104 SHUTDOWN_COMPLETE = 700, |
104 }; | 105 }; |
105 | 106 |
106 // Creates the MetricsService with the given |state_manager| and |client|. | 107 // Creates the MetricsService with the given |state_manager|, |client|, and |
107 // Does not take ownership of |state_manager| or |client|; instead stores a | 108 // |local_state|. Does not take ownership of the paramaters; instead stores |
108 // weak pointer to each. Caller should ensure that |state_manager| and | 109 // a weak pointer to each. Caller should ensure that the parameters are valid |
109 // |client| are valid for the lifetime of this class. | 110 // for the lifetime of this class. |
110 MetricsService(metrics::MetricsStateManager* state_manager, | 111 MetricsService(metrics::MetricsStateManager* state_manager, |
111 metrics::MetricsServiceClient* client); | 112 metrics::MetricsServiceClient* client, |
| 113 PrefService* local_state); |
112 virtual ~MetricsService(); | 114 virtual ~MetricsService(); |
113 | 115 |
114 // Initializes metrics recording state. Updates various bookkeeping values in | 116 // Initializes metrics recording state. Updates various bookkeeping values in |
115 // prefs and sets up the scheduler. This is a separate function rather than | 117 // prefs and sets up the scheduler. This is a separate function rather than |
116 // being done by the constructor so that field trials could be created before | 118 // being done by the constructor so that field trials could be created before |
117 // this is run. | 119 // this is run. |
118 void InitializeMetricsRecordingState(); | 120 void InitializeMetricsRecordingState(); |
119 | 121 |
120 // Starts the metrics system, turning on recording and uploading of metrics. | 122 // Starts the metrics system, turning on recording and uploading of metrics. |
121 // Should be called when starting up with metrics enabled, or when metrics | 123 // Should be called when starting up with metrics enabled, or when metrics |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 void RecordCompletedSessionEnd(); | 183 void RecordCompletedSessionEnd(); |
182 | 184 |
183 #if defined(OS_ANDROID) || defined(OS_IOS) | 185 #if defined(OS_ANDROID) || defined(OS_IOS) |
184 // Called when the application is going into background mode. | 186 // Called when the application is going into background mode. |
185 void OnAppEnterBackground(); | 187 void OnAppEnterBackground(); |
186 | 188 |
187 // Called when the application is coming out of background mode. | 189 // Called when the application is coming out of background mode. |
188 void OnAppEnterForeground(); | 190 void OnAppEnterForeground(); |
189 #else | 191 #else |
190 // Set the dirty flag, which will require a later call to LogCleanShutdown(). | 192 // Set the dirty flag, which will require a later call to LogCleanShutdown(). |
191 static void LogNeedForCleanShutdown(); | 193 static void LogNeedForCleanShutdown(PrefService* local_state); |
192 #endif // defined(OS_ANDROID) || defined(OS_IOS) | 194 #endif // defined(OS_ANDROID) || defined(OS_IOS) |
193 | 195 |
194 static void SetExecutionPhase(ExecutionPhase execution_phase); | 196 static void SetExecutionPhase(ExecutionPhase execution_phase, |
| 197 PrefService* local_state); |
195 | 198 |
196 // Saves in the preferences if the crash report registration was successful. | 199 // Saves in the preferences if the crash report registration was successful. |
197 // This count is eventually send via UMA logs. | 200 // This count is eventually send via UMA logs. |
198 void RecordBreakpadRegistration(bool success); | 201 void RecordBreakpadRegistration(bool success); |
199 | 202 |
200 // Saves in the preferences if the browser is running under a debugger. | 203 // Saves in the preferences if the browser is running under a debugger. |
201 // This count is eventually send via UMA logs. | 204 // This count is eventually send via UMA logs. |
202 void RecordBreakpadHasDebugger(bool has_debugger); | 205 void RecordBreakpadHasDebugger(bool has_debugger); |
203 | 206 |
204 bool recording_active() const; | 207 bool recording_active() const; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 // low entropy source and whether metrics reporting is enabled. Weak pointer. | 415 // low entropy source and whether metrics reporting is enabled. Weak pointer. |
413 metrics::MetricsStateManager* const state_manager_; | 416 metrics::MetricsStateManager* const state_manager_; |
414 | 417 |
415 // Used to interact with the embedder. Weak pointer; must outlive |this| | 418 // Used to interact with the embedder. Weak pointer; must outlive |this| |
416 // instance. | 419 // instance. |
417 metrics::MetricsServiceClient* const client_; | 420 metrics::MetricsServiceClient* const client_; |
418 | 421 |
419 // Registered metrics providers. | 422 // Registered metrics providers. |
420 ScopedVector<metrics::MetricsProvider> metrics_providers_; | 423 ScopedVector<metrics::MetricsProvider> metrics_providers_; |
421 | 424 |
| 425 PrefService* local_state_; |
| 426 |
422 base::ActionCallback action_callback_; | 427 base::ActionCallback action_callback_; |
423 | 428 |
424 // Indicate whether recording and reporting are currently happening. | 429 // Indicate whether recording and reporting are currently happening. |
425 // These should not be set directly, but by calling SetRecording and | 430 // These should not be set directly, but by calling SetRecording and |
426 // SetReporting. | 431 // SetReporting. |
427 bool recording_active_; | 432 bool recording_active_; |
428 bool reporting_active_; | 433 bool reporting_active_; |
429 | 434 |
430 // Indicate whether test mode is enabled, where the initial log should never | 435 // Indicate whether test mode is enabled, where the initial log should never |
431 // be cut, and logs are neither persisted nor uploaded. | 436 // be cut, and logs are neither persisted nor uploaded. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, IsPluginProcess); | 520 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, IsPluginProcess); |
516 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, MetricsServiceObserver); | 521 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, MetricsServiceObserver); |
517 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, | 522 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, |
518 PermutedEntropyCacheClearedWhenLowEntropyReset); | 523 PermutedEntropyCacheClearedWhenLowEntropyReset); |
519 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, RegisterSyntheticTrial); | 524 FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, RegisterSyntheticTrial); |
520 | 525 |
521 DISALLOW_COPY_AND_ASSIGN(MetricsService); | 526 DISALLOW_COPY_AND_ASSIGN(MetricsService); |
522 }; | 527 }; |
523 | 528 |
524 #endif // CHROME_BROWSER_METRICS_METRICS_SERVICE_H_ | 529 #endif // CHROME_BROWSER_METRICS_METRICS_SERVICE_H_ |
OLD | NEW |