Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: android_webview/browser/aw_metrics_service_client.cc

Issue 1958003003: Splitting the concept of UMA consent, and should UMA report. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « android_webview/browser/aw_metrics_service_client.h ('k') | blimp/engine/app/blimp_metrics_service_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698