| // 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_ |