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..afa8d7a0c447d3799e34a731c7667116fe9c9519 100644 |
| --- a/chrome/browser/metrics/metrics_service.h |
| +++ b/chrome/browser/metrics/metrics_service.h |
| @@ -18,9 +18,11 @@ |
| #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" |
| +#include "chrome/browser/metrics/metrics_service_observer.h" |
| #include "chrome/browser/metrics/tracking_synchronizer_observer.h" |
| #include "chrome/common/metrics/metrics_service_base.h" |
| #include "chrome/installer/util/google_update_settings.h" |
| @@ -36,6 +38,7 @@ |
| #include "chrome/browser/chromeos/external_metrics.h" |
| #endif |
| +class ChromeBrowserMetricsServiceObserver; |
| class MetricsReportingScheduler; |
| class PrefService; |
| class PrefRegistrySimple; |
| @@ -361,6 +364,11 @@ class MetricsService |
| // Set up client ID, session ID, etc. |
| void InitializeMetricsState(); |
| + // Registers/unregsiters |observer| to receive MetricsLog notifications. |
|
bengr
2014/05/07 16:03:58
unregisters
bolian
2014/05/07 18:11:44
Done.
|
| + void AddObserver(MetricsServiceObserver* observer); |
| + void RemoveObserver(MetricsServiceObserver* observer); |
| + void NotifyOnDidCreateMetricsLog(); |
| + |
| // 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,20 +590,28 @@ class MetricsService |
| // Field trial groups that map to Chrome configuration states. |
| SyntheticTrialGroups synthetic_trial_groups_; |
| + ObserverList<MetricsServiceObserver> observers_; |
| + // Confirms single-threaded access to observers_ in debug builds. |
| + base::ThreadChecker thread_checker_; |
| + |
| + 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, MetricsServiceObserver); |
| 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 ::ChromeBrowserMetricsServiceObserver; |
| friend class ChromeRenderMessageFilter; |
| friend class ::CrashesDOMHandler; |
| friend class extensions::ExtensionDownloader; |
| @@ -617,6 +633,11 @@ class MetricsServiceHelper { |
| // IsMetricsReportingEnabled for desktop Chrome. |
| static bool IsCrashReportingEnabled(); |
| + // Registers/Unregsiters |observer| to receive MetricsLog notifications |
|
bengr
2014/05/07 16:03:58
unregisters
bolian
2014/05/07 18:11:44
Done.
|
| + // from metric service. |
|
bengr
2014/05/07 16:03:58
from the metrics service.
bolian
2014/05/07 18:11:44
Done.
|
| + static void AddMetricsServiceObserver(MetricsServiceObserver* observer); |
| + static void RemoveMetricsServiceObserver(MetricsServiceObserver* observer); |
| + |
| DISALLOW_IMPLICIT_CONSTRUCTORS(MetricsServiceHelper); |
| }; |