// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_METRICS_CHROME_STABILITY_METRICS_PROVIDER_H_ #define CHROME_BROWSER_METRICS_CHROME_STABILITY_METRICS_PROVIDER_H_ #include "base/basictypes.h" #include "base/gtest_prod_util.h" #include "base/metrics/user_metrics.h" #include "base/process/kill.h" #include "components/metrics/metrics_provider.h" #include "components/metrics/stability_metrics_helper.h" #include "content/public/browser/browser_child_process_observer.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" class PrefService; // ChromeStabilityMetricsProvider gathers and logs Chrome-specific stability- // related metrics. class ChromeStabilityMetricsProvider : public metrics::MetricsProvider, public content::BrowserChildProcessObserver, public content::NotificationObserver { public: explicit ChromeStabilityMetricsProvider(PrefService* local_state); ~ChromeStabilityMetricsProvider() override; // metrics::MetricsDataProvider: void OnRecordingEnabled() override; void OnRecordingDisabled() override; void ProvideStabilityMetrics( metrics::SystemProfileProto* system_profile_proto) override; void ClearSavedStabilityMetrics() override; private: FRIEND_TEST_ALL_PREFIXES(ChromeStabilityMetricsProviderTest, BrowserChildProcessObserver); FRIEND_TEST_ALL_PREFIXES(ChromeStabilityMetricsProviderTest, NotificationObserver); // content::NotificationObserver: void Observe(int type, const content::NotificationSource& source, const content::NotificationDetails& details) override; // content::BrowserChildProcessObserver: void BrowserChildProcessCrashed( const content::ChildProcessData& data, int exit_code) override; metrics::StabilityMetricsHelper helper_; // Registrar for receiving stability-related notifications. content::NotificationRegistrar registrar_; DISALLOW_COPY_AND_ASSIGN(ChromeStabilityMetricsProvider); }; #endif // CHROME_BROWSER_METRICS_CHROME_STABILITY_METRICS_PROVIDER_H_