// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_METRICS_COMPONENT_METRICS_PROVIDER_H_ #define COMPONENTS_METRICS_COMPONENT_METRICS_PROVIDER_H_ #include #include "components/metrics/metrics_provider.h" namespace component_updater { struct ComponentInfo; } namespace metrics { class SystemProfileProto; // A delegate that returns a list of components that are loaded in the // system. class ComponentMetricsProviderDelegate { public: ComponentMetricsProviderDelegate() = default; virtual ~ComponentMetricsProviderDelegate() = default; virtual std::vector GetComponents() = 0; }; // Stores and loads system information to prefs for stability logs. class ComponentMetricsProvider : public MetricsProvider { public: explicit ComponentMetricsProvider( std::unique_ptr components_info_delegate); ComponentMetricsProvider(const ComponentMetricsProvider&) = delete; ComponentMetricsProvider& operator=(const ComponentMetricsProvider&) = delete; ~ComponentMetricsProvider() override; // MetricsProvider: void ProvideSystemProfileMetrics( SystemProfileProto* system_profile_proto) override; private: std::unique_ptr components_info_delegate_; }; } // namespace metrics #endif // COMPONENTS_METRICS_COMPONENT_METRICS_PROVIDER_H_