| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ANDROID_WEBVIEW_BROWSER_METRICS_AW_COMPONENT_METRICS_PROVIDER_DELEGATE_H_ |
| #define ANDROID_WEBVIEW_BROWSER_METRICS_AW_COMPONENT_METRICS_PROVIDER_DELEGATE_H_ |
| |
| #include "base/memory/raw_ptr.h" |
| #include "components/metrics/component_metrics_provider.h" |
| |
| namespace component_updater { |
| struct ComponentInfo; |
| } // namespace component_updater |
| |
| namespace android_webview { |
| |
| class AwMetricsServiceClient; |
| |
| // WebView delegate to provide WebView's own list of loaded components to be |
| // recorded in the system profile UMA log. Unlike chrome, WebView doesn't use |
| // `component_updater::ComponentUpdateService` to load or keep track of |
| // components. |
| class AwComponentMetricsProviderDelegate |
| : public metrics::ComponentMetricsProviderDelegate { |
| public: |
| explicit AwComponentMetricsProviderDelegate(AwMetricsServiceClient* client); |
| ~AwComponentMetricsProviderDelegate() override = default; |
| |
| // ComponentsInfoProvider: |
| std::vector<component_updater::ComponentInfo> GetComponents() override; |
| |
| private: |
| raw_ptr<AwMetricsServiceClient> client_; |
| }; |
| |
| } // namespace android_webview |
| |
| #endif // ANDROID_WEBVIEW_BROWSER_METRICS_AW_COMPONENT_METRICS_PROVIDER_DELEGATE_H_ |