[M120 Migration][VD] Enable direct rendering for TVPlus
[platform/framework/web/chromium-efl.git] / components / metrics / delegating_provider.cc
1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/metrics/delegating_provider.h"
6
7 #include "base/barrier_closure.h"
8 #include "base/notreached.h"
9
10 namespace metrics {
11
12 DelegatingProvider::DelegatingProvider() = default;
13
14 DelegatingProvider::~DelegatingProvider() = default;
15
16 void DelegatingProvider::RegisterMetricsProvider(
17     std::unique_ptr<MetricsProvider> provider) {
18   metrics_providers_.push_back(std::move(provider));
19 }
20
21 const std::vector<std::unique_ptr<MetricsProvider>>&
22 DelegatingProvider::GetProviders() {
23   return metrics_providers_;
24 }
25
26 void DelegatingProvider::Init() {
27   for (auto& provider : metrics_providers_)
28     provider->Init();
29 }
30
31 void DelegatingProvider::AsyncInit(base::OnceClosure done_callback) {
32   base::RepeatingClosure barrier =
33       base::BarrierClosure(metrics_providers_.size(), std::move(done_callback));
34   for (auto& provider : metrics_providers_) {
35     provider->AsyncInit(barrier);
36   }
37 }
38
39 void DelegatingProvider::OnDidCreateMetricsLog() {
40   for (auto& provider : metrics_providers_)
41     provider->OnDidCreateMetricsLog();
42 }
43
44 void DelegatingProvider::OnRecordingEnabled() {
45   for (auto& provider : metrics_providers_)
46     provider->OnRecordingEnabled();
47 }
48
49 void DelegatingProvider::OnRecordingDisabled() {
50   for (auto& provider : metrics_providers_)
51     provider->OnRecordingDisabled();
52 }
53
54 void DelegatingProvider::OnClientStateCleared() {
55   for (auto& provider : metrics_providers_)
56     provider->OnClientStateCleared();
57 }
58
59 void DelegatingProvider::OnAppEnterBackground() {
60   for (auto& provider : metrics_providers_)
61     provider->OnAppEnterBackground();
62 }
63
64 bool DelegatingProvider::HasIndependentMetrics() {
65   // These are collected seperately for each provider.
66   NOTREACHED();
67   return false;
68 }
69
70 void DelegatingProvider::ProvideSystemProfileMetrics(
71     SystemProfileProto* system_profile_proto) {
72   // ProvideSystemProfileMetricsWithLogCreationTime() should be called instead.
73   NOTREACHED();
74 }
75
76 void DelegatingProvider::ProvideSystemProfileMetricsWithLogCreationTime(
77     base::TimeTicks log_creation_time,
78     SystemProfileProto* system_profile_proto) {
79   for (auto& provider : metrics_providers_) {
80     provider->ProvideSystemProfileMetricsWithLogCreationTime(
81         log_creation_time, system_profile_proto);
82   }
83 }
84
85 bool DelegatingProvider::HasPreviousSessionData() {
86   // All providers are queried (rather than stopping after the first "true"
87   // response) in case they do any kind of setup work in preparation for
88   // the later call to RecordInitialHistogramSnapshots().
89   bool has_stability_metrics = false;
90   for (auto& provider : metrics_providers_)
91     has_stability_metrics |= provider->HasPreviousSessionData();
92
93   return has_stability_metrics;
94 }
95
96 void DelegatingProvider::ProvidePreviousSessionData(
97     ChromeUserMetricsExtension* uma_proto) {
98   for (const auto& provider : metrics_providers_)
99     provider->ProvidePreviousSessionData(uma_proto);
100 }
101
102 void DelegatingProvider::ProvideCurrentSessionData(
103     ChromeUserMetricsExtension* uma_proto) {
104   for (const auto& provider : metrics_providers_)
105     provider->ProvideCurrentSessionData(uma_proto);
106 }
107
108 void DelegatingProvider::ProvideCurrentSessionUKMData() {
109   for (const auto& provider : metrics_providers_)
110     provider->ProvideCurrentSessionUKMData();
111 }
112
113 void DelegatingProvider::ClearSavedStabilityMetrics() {
114   for (auto& provider : metrics_providers_)
115     provider->ClearSavedStabilityMetrics();
116 }
117
118 void DelegatingProvider::RecordHistogramSnapshots(
119     base::HistogramSnapshotManager* snapshot_manager) {
120   for (auto& provider : metrics_providers_)
121     provider->RecordHistogramSnapshots(snapshot_manager);
122 }
123
124 void DelegatingProvider::RecordInitialHistogramSnapshots(
125     base::HistogramSnapshotManager* snapshot_manager) {
126   for (auto& provider : metrics_providers_)
127     provider->RecordInitialHistogramSnapshots(snapshot_manager);
128 }
129
130 }  // namespace metrics