OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "android_webview/browser/aw_metrics_service_client.h" | 5 #include "android_webview/browser/aw_metrics_service_client.h" |
6 | 6 |
7 #include "android_webview/common/aw_version_info_values.h" | 7 #include "android_webview/common/aw_version_info_values.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/guid.h" | 10 #include "base/guid.h" |
11 #include "base/i18n/rtl.h" | 11 #include "base/i18n/rtl.h" |
12 #include "components/metrics/call_stack_profile_metrics_provider.h" | 12 #include "components/metrics/call_stack_profile_metrics_provider.h" |
| 13 #include "components/metrics/enabled_state_provider.h" |
13 #include "components/metrics/gpu/gpu_metrics_provider.h" | 14 #include "components/metrics/gpu/gpu_metrics_provider.h" |
14 #include "components/metrics/metrics_pref_names.h" | 15 #include "components/metrics/metrics_pref_names.h" |
15 #include "components/metrics/metrics_service.h" | 16 #include "components/metrics/metrics_service.h" |
16 #include "components/metrics/metrics_state_manager.h" | 17 #include "components/metrics/metrics_state_manager.h" |
17 #include "components/metrics/net/net_metrics_log_uploader.h" | 18 #include "components/metrics/net/net_metrics_log_uploader.h" |
18 #include "components/metrics/profiler/profiler_metrics_provider.h" | 19 #include "components/metrics/profiler/profiler_metrics_provider.h" |
19 #include "components/metrics/ui/screen_info_metrics_provider.h" | 20 #include "components/metrics/ui/screen_info_metrics_provider.h" |
20 #include "components/metrics/url_constants.h" | 21 #include "components/metrics/url_constants.h" |
21 #include "components/prefs/pref_service.h" | 22 #include "components/prefs/pref_service.h" |
22 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 base::Unretained(this), base::Owned(guid))); | 92 base::Unretained(this), base::Owned(guid))); |
92 } | 93 } |
93 | 94 |
94 void AwMetricsServiceClient::InitializeWithGUID(std::string* guid) { | 95 void AwMetricsServiceClient::InitializeWithGUID(std::string* guid) { |
95 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 96 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
96 DCHECK(!is_initialized_); | 97 DCHECK(!is_initialized_); |
97 | 98 |
98 pref_service_->SetString(metrics::prefs::kMetricsClientID, *guid); | 99 pref_service_->SetString(metrics::prefs::kMetricsClientID, *guid); |
99 | 100 |
100 metrics_state_manager_ = metrics::MetricsStateManager::Create( | 101 metrics_state_manager_ = metrics::MetricsStateManager::Create( |
101 pref_service_, base::Bind(&AwMetricsServiceClient::is_reporting_enabled, | 102 pref_service_, this, base::Bind(&StoreClientInfo), |
102 base::Unretained(this)), | 103 base::Bind(&LoadClientInfo)); |
103 base::Bind(&StoreClientInfo), base::Bind(&LoadClientInfo)); | |
104 | 104 |
105 metrics_service_.reset(new ::metrics::MetricsService( | 105 metrics_service_.reset(new ::metrics::MetricsService( |
106 metrics_state_manager_.get(), this, pref_service_)); | 106 metrics_state_manager_.get(), this, pref_service_)); |
107 | 107 |
108 metrics_service_->RegisterMetricsProvider( | 108 metrics_service_->RegisterMetricsProvider( |
109 std::unique_ptr<metrics::MetricsProvider>( | 109 std::unique_ptr<metrics::MetricsProvider>( |
110 new metrics::NetworkMetricsProvider( | 110 new metrics::NetworkMetricsProvider( |
111 content::BrowserThread::GetBlockingPool()))); | 111 content::BrowserThread::GetBlockingPool()))); |
112 | 112 |
113 metrics_service_->RegisterMetricsProvider( | 113 metrics_service_->RegisterMetricsProvider( |
114 std::unique_ptr<metrics::MetricsProvider>( | 114 std::unique_ptr<metrics::MetricsProvider>( |
115 new metrics::GPUMetricsProvider)); | 115 new metrics::GPUMetricsProvider)); |
116 | 116 |
117 metrics_service_->RegisterMetricsProvider( | 117 metrics_service_->RegisterMetricsProvider( |
118 std::unique_ptr<metrics::MetricsProvider>( | 118 std::unique_ptr<metrics::MetricsProvider>( |
119 new metrics::ScreenInfoMetricsProvider)); | 119 new metrics::ScreenInfoMetricsProvider)); |
120 | 120 |
121 metrics_service_->RegisterMetricsProvider( | 121 metrics_service_->RegisterMetricsProvider( |
122 std::unique_ptr<metrics::MetricsProvider>( | 122 std::unique_ptr<metrics::MetricsProvider>( |
123 new metrics::ProfilerMetricsProvider())); | 123 new metrics::ProfilerMetricsProvider())); |
124 | 124 |
125 metrics_service_->RegisterMetricsProvider( | 125 metrics_service_->RegisterMetricsProvider( |
126 std::unique_ptr<metrics::MetricsProvider>( | 126 std::unique_ptr<metrics::MetricsProvider>( |
127 new metrics::CallStackProfileMetricsProvider)); | 127 new metrics::CallStackProfileMetricsProvider)); |
128 | 128 |
129 metrics_service_->InitializeMetricsRecordingState(); | 129 metrics_service_->InitializeMetricsRecordingState(); |
130 | 130 |
131 is_initialized_ = true; | 131 is_initialized_ = true; |
132 | 132 |
133 if (is_reporting_enabled()) | 133 if (IsReportingEnabled()) |
134 metrics_service_->Start(); | 134 metrics_service_->Start(); |
135 } | 135 } |
136 | 136 |
137 void AwMetricsServiceClient::SetMetricsEnabled(bool enabled) { | 137 void AwMetricsServiceClient::SetMetricsEnabled(bool enabled) { |
138 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 138 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
139 | 139 |
140 // If the client is already initialized, apply the setting immediately. | 140 // If the client is already initialized, apply the setting immediately. |
141 // Otherwise, it will be applied on initialization. | 141 // Otherwise, it will be applied on initialization. |
142 if (is_initialized_ && is_enabled_ != enabled) { | 142 if (is_initialized_ && is_enabled_ != enabled) { |
143 if (enabled) | 143 if (enabled) |
144 metrics_service_->Start(); | 144 metrics_service_->Start(); |
145 else | 145 else |
146 metrics_service_->Stop(); | 146 metrics_service_->Stop(); |
147 } | 147 } |
148 is_enabled_ = enabled; | 148 is_enabled_ = enabled; |
149 } | 149 } |
150 | 150 |
| 151 bool AwMetricsServiceClient::IsConsentGiven() { |
| 152 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 153 return is_enabled_; |
| 154 } |
| 155 |
151 metrics::MetricsService* AwMetricsServiceClient::GetMetricsService() { | 156 metrics::MetricsService* AwMetricsServiceClient::GetMetricsService() { |
152 return metrics_service_.get(); | 157 return metrics_service_.get(); |
153 } | 158 } |
154 | 159 |
155 // In Chrome, UMA and Breakpad are enabled/disabled together by the same | 160 // In Chrome, UMA and Breakpad are enabled/disabled together by the same |
156 // checkbox and they share the same client ID (a.k.a. GUID). SetMetricsClientId | 161 // checkbox and they share the same client ID (a.k.a. GUID). SetMetricsClientId |
157 // and OnRecordingDisabled are intended to provide the ID to Breakpad. In | 162 // and OnRecordingDisabled are intended to provide the ID to Breakpad. In |
158 // WebView, UMA and Breakpad are independent, so these are no-ops. | 163 // WebView, UMA and Breakpad are independent, so these are no-ops. |
159 | 164 |
160 void AwMetricsServiceClient::SetMetricsClientId(const std::string& client_id) {} | 165 void AwMetricsServiceClient::SetMetricsClientId(const std::string& client_id) {} |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 } | 220 } |
216 | 221 |
217 AwMetricsServiceClient::AwMetricsServiceClient() | 222 AwMetricsServiceClient::AwMetricsServiceClient() |
218 : is_initialized_(false), | 223 : is_initialized_(false), |
219 is_enabled_(false), | 224 is_enabled_(false), |
220 pref_service_(nullptr), | 225 pref_service_(nullptr), |
221 request_context_(nullptr) {} | 226 request_context_(nullptr) {} |
222 | 227 |
223 AwMetricsServiceClient::~AwMetricsServiceClient() {} | 228 AwMetricsServiceClient::~AwMetricsServiceClient() {} |
224 | 229 |
225 bool AwMetricsServiceClient::is_reporting_enabled() { | |
226 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | |
227 return is_enabled_; | |
228 } | |
229 | |
230 } // namespace android_webview | 230 } // namespace android_webview |
OLD | NEW |