// 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 COMPONENTS_METRICS_METRICS_PROVIDER_H_ #define COMPONENTS_METRICS_METRICS_PROVIDER_H_ #include "base/basictypes.h" namespace metrics { class ChromeUserMetricsExtension; class SystemProfileProto; class SystemProfileProto_Stability; // MetricsProvider is an interface allowing different parts of the UMA protos to // be filled out by different classes. class MetricsProvider { public: MetricsProvider() {} virtual ~MetricsProvider() {} // Called when a new MetricsLog is created. virtual void OnDidCreateMetricsLog() {} // Called when metrics recording has been enabled. virtual void OnRecordingEnabled() {} // Called when metrics recording has been disabled. virtual void OnRecordingDisabled() {} // Provides additional metrics into the system profile. virtual void ProvideSystemProfileMetrics( SystemProfileProto* system_profile_proto) {} // Provides additional stability metrics. Stability metrics can be provided // directly into |stability_proto| fields or by logging stability histograms // via the UMA_STABILITY_HISTOGRAM_ENUMERATION() macro. virtual void ProvideStabilityMetrics( SystemProfileProto* system_profile_proto) {} // Provides general metrics that are neither system profile nor stability // metrics. virtual void ProvideGeneralMetrics( ChromeUserMetricsExtension* uma_proto) {} // TODO(asvitkine): Remove this method. http://crbug.com/379148 virtual void RecordCurrentState() {} private: DISALLOW_COPY_AND_ASSIGN(MetricsProvider); }; } // namespace metrics #endif // COMPONENTS_METRICS_METRICS_PROVIDER_H_