Chromium Code Reviews| Index: chrome/browser/metrics/metrics_service.h |
| diff --git a/chrome/browser/metrics/metrics_service.h b/chrome/browser/metrics/metrics_service.h |
| index 1499ddf9528af66c8d55f7b588e22e02402f31a3..a54b69b71d692570afd658beabdc7c1f05e630de 100644 |
| --- a/chrome/browser/metrics/metrics_service.h |
| +++ b/chrome/browser/metrics/metrics_service.h |
| @@ -18,6 +18,7 @@ |
| #include "base/memory/weak_ptr.h" |
| #include "base/metrics/field_trial.h" |
| #include "base/metrics/user_metrics.h" |
| +#include "base/observer_list.h" |
| #include "base/process/kill.h" |
| #include "base/time/time.h" |
| #include "chrome/browser/metrics/metrics_log.h" |
| @@ -36,6 +37,7 @@ |
| #include "chrome/browser/chromeos/external_metrics.h" |
| #endif |
| +class ChromeBrowserMetricsLogObserver; |
| class MetricsReportingScheduler; |
| class PrefService; |
| class PrefRegistrySimple; |
| @@ -108,6 +110,19 @@ struct SyntheticTrialGroup { |
| SyntheticTrialGroup(uint32 trial, uint32 group); |
| }; |
| +class MetricsLogObserver { |
|
Ilya Sherman
2014/05/07 01:03:16
nit: I think "MetricsServiceObserver" is more accu
bolian
2014/05/07 02:20:26
Done.
|
| + public: |
| + // Will be called when a new MetricsLog is created. |
| + virtual void OnNewMetricsLog() = 0; |
|
Ilya Sherman
2014/05/07 01:03:16
nit: "OnDidCreateMetricsLog()" or something else i
bolian
2014/05/07 02:20:26
Done.
|
| + |
| + protected: |
| + MetricsLogObserver() {} |
| + virtual ~MetricsLogObserver() {} |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MetricsLogObserver); |
| +}; |
| + |
| class MetricsService |
| : public chrome_browser_metrics::TrackingSynchronizerObserver, |
| public content::BrowserChildProcessObserver, |
| @@ -361,6 +376,11 @@ class MetricsService |
| // Set up client ID, session ID, etc. |
| void InitializeMetricsState(); |
| + // Registers/Unregsiters |observer| to receive MetricsLog notifications. |
|
Ilya Sherman
2014/05/07 01:03:16
nit: "Un" -> "un"
bolian
2014/05/07 02:20:26
Done.
|
| + void AddMetricsLogObserver(MetricsLogObserver* observer); |
| + void RemoveMetricsLogObserver(MetricsLogObserver* observer); |
| + void NotifyOnNewMetricsLog(); |
| + |
| // Schedule the next save of LocalState information. This is called |
| // automatically by the task that performs each save to schedule the next one. |
| void ScheduleNextStateSave(); |
| @@ -582,21 +602,28 @@ class MetricsService |
| // Field trial groups that map to Chrome configuration states. |
| SyntheticTrialGroups synthetic_trial_groups_; |
| + // Observers of MetricsLog. |
| + ObserverList<MetricsLogObserver> metrics_log_observers_; |
| + |
| + friend class MetricsServiceHelper; |
| + |
| FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, IsPluginProcess); |
| FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, |
| PermutedEntropyCacheClearedWhenLowEntropyReset); |
| FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, RegisterSyntheticTrial); |
| + FRIEND_TEST_ALL_PREFIXES(MetricsServiceTest, MetricsLogObserver); |
| DISALLOW_COPY_AND_ASSIGN(MetricsService); |
| }; |
| -// This class limits and documents access to the IsMetricsReportingEnabled() and |
| -// IsCrashReportingEnabled() methods. Since these methods are private, each user |
| -// has to be explicitly declared as a 'friend' below. |
| +// This class limits and documents access to metrics service helper methods. |
| +// Since these methods are private, each user has to be explicitly declared |
| +// as a 'friend' below. |
| class MetricsServiceHelper { |
| private: |
| friend bool prerender::IsOmniboxEnabled(Profile* profile); |
| friend class ChromeRenderMessageFilter; |
| + friend class ::ChromeBrowserMetricsLogObserver; |
|
Ilya Sherman
2014/05/07 01:03:16
nit: Alphabetically, this should come before line
bolian
2014/05/07 02:20:26
Done.
|
| friend class ::CrashesDOMHandler; |
| friend class extensions::ExtensionDownloader; |
| friend class extensions::ManifestFetchData; |
| @@ -617,6 +644,11 @@ class MetricsServiceHelper { |
| // IsMetricsReportingEnabled for desktop Chrome. |
| static bool IsCrashReportingEnabled(); |
| + // Registers/Unregsiters |observer| to receive MetricsLog notifications |
| + // from metric service. |
| + static void AddMetricsLogObserver(MetricsLogObserver* observer); |
| + static void RemoveMetricsLogObserver(MetricsLogObserver* observer); |
| + |
| DISALLOW_IMPLICIT_CONSTRUCTORS(MetricsServiceHelper); |
| }; |