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

Side by Side Diff: ios/chrome/browser/metrics/ios_chrome_metrics_service_client.cc

Issue 1861593005: Convert //ios from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase? Created 4 years, 8 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 "ios/chrome/browser/metrics/ios_chrome_metrics_service_client.h" 5 #include "ios/chrome/browser/metrics/ios_chrome_metrics_service_client.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/files/file_path.h" 15 #include "base/files/file_path.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/memory/ptr_util.h"
17 #include "base/metrics/histogram.h" 18 #include "base/metrics/histogram.h"
18 #include "base/process/process_metrics.h" 19 #include "base/process/process_metrics.h"
19 #include "base/rand_util.h" 20 #include "base/rand_util.h"
20 #include "base/strings/string16.h" 21 #include "base/strings/string16.h"
21 #include "base/threading/platform_thread.h" 22 #include "base/threading/platform_thread.h"
22 #include "components/crash/core/common/crash_keys.h" 23 #include "components/crash/core/common/crash_keys.h"
23 #include "components/metrics/call_stack_profile_metrics_provider.h" 24 #include "components/metrics/call_stack_profile_metrics_provider.h"
24 #include "components/metrics/drive_metrics_provider.h" 25 #include "components/metrics/drive_metrics_provider.h"
25 #include "components/metrics/metrics_pref_names.h" 26 #include "components/metrics/metrics_pref_names.h"
26 #include "components/metrics/metrics_service.h" 27 #include "components/metrics/metrics_service.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 weak_ptr_factory_(this) { 85 weak_ptr_factory_(this) {
85 DCHECK(thread_checker_.CalledOnValidThread()); 86 DCHECK(thread_checker_.CalledOnValidThread());
86 RegisterForNotifications(); 87 RegisterForNotifications();
87 } 88 }
88 89
89 IOSChromeMetricsServiceClient::~IOSChromeMetricsServiceClient() { 90 IOSChromeMetricsServiceClient::~IOSChromeMetricsServiceClient() {
90 DCHECK(thread_checker_.CalledOnValidThread()); 91 DCHECK(thread_checker_.CalledOnValidThread());
91 } 92 }
92 93
93 // static 94 // static
94 scoped_ptr<IOSChromeMetricsServiceClient> IOSChromeMetricsServiceClient::Create( 95 std::unique_ptr<IOSChromeMetricsServiceClient>
96 IOSChromeMetricsServiceClient::Create(
95 metrics::MetricsStateManager* state_manager, 97 metrics::MetricsStateManager* state_manager,
96 PrefService* local_state) { 98 PrefService* local_state) {
97 // Perform two-phase initialization so that |client->metrics_service_| only 99 // Perform two-phase initialization so that |client->metrics_service_| only
98 // receives pointers to fully constructed objects. 100 // receives pointers to fully constructed objects.
99 scoped_ptr<IOSChromeMetricsServiceClient> client( 101 std::unique_ptr<IOSChromeMetricsServiceClient> client(
100 new IOSChromeMetricsServiceClient(state_manager)); 102 new IOSChromeMetricsServiceClient(state_manager));
101 client->Initialize(); 103 client->Initialize();
102 104
103 return client; 105 return client;
104 } 106 }
105 107
106 // static 108 // static
107 void IOSChromeMetricsServiceClient::RegisterPrefs( 109 void IOSChromeMetricsServiceClient::RegisterPrefs(
108 PrefRegistrySimple* registry) { 110 PrefRegistrySimple* registry) {
109 metrics::MetricsService::RegisterPrefs(registry); 111 metrics::MetricsService::RegisterPrefs(registry);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 if (ShouldIncludeProfilerDataInLog()) { 169 if (ShouldIncludeProfilerDataInLog()) {
168 // Fetch profiler data. This will call into 170 // Fetch profiler data. This will call into
169 // |FinishedReceivingProfilerData()| when the task completes. 171 // |FinishedReceivingProfilerData()| when the task completes.
170 metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously( 172 metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously(
171 weak_ptr_factory_.GetWeakPtr()); 173 weak_ptr_factory_.GetWeakPtr());
172 } else { 174 } else {
173 CollectFinalHistograms(); 175 CollectFinalHistograms();
174 } 176 }
175 } 177 }
176 178
177 scoped_ptr<metrics::MetricsLogUploader> 179 std::unique_ptr<metrics::MetricsLogUploader>
178 IOSChromeMetricsServiceClient::CreateUploader( 180 IOSChromeMetricsServiceClient::CreateUploader(
179 const base::Callback<void(int)>& on_upload_complete) { 181 const base::Callback<void(int)>& on_upload_complete) {
180 return scoped_ptr<metrics::MetricsLogUploader>( 182 return std::unique_ptr<metrics::MetricsLogUploader>(
181 new metrics::NetMetricsLogUploader( 183 new metrics::NetMetricsLogUploader(
182 GetApplicationContext()->GetSystemURLRequestContext(), 184 GetApplicationContext()->GetSystemURLRequestContext(),
183 metrics::kDefaultMetricsServerUrl, metrics::kDefaultMetricsMimeType, 185 metrics::kDefaultMetricsServerUrl, metrics::kDefaultMetricsMimeType,
184 on_upload_complete)); 186 on_upload_complete));
185 } 187 }
186 188
187 base::TimeDelta IOSChromeMetricsServiceClient::GetStandardUploadInterval() { 189 base::TimeDelta IOSChromeMetricsServiceClient::GetStandardUploadInterval() {
188 if (IsCellularLogicEnabled()) 190 if (IsCellularLogicEnabled())
189 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds); 191 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds);
190 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds); 192 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds);
(...skipping 16 matching lines...) Expand all
207 web::WebState* web_state) { 209 web::WebState* web_state) {
208 metrics_service_->OnApplicationNotIdle(); 210 metrics_service_->OnApplicationNotIdle();
209 } 211 }
210 212
211 void IOSChromeMetricsServiceClient::Initialize() { 213 void IOSChromeMetricsServiceClient::Initialize() {
212 metrics_service_.reset(new metrics::MetricsService( 214 metrics_service_.reset(new metrics::MetricsService(
213 metrics_state_manager_, this, GetApplicationContext()->GetLocalState())); 215 metrics_state_manager_, this, GetApplicationContext()->GetLocalState()));
214 216
215 // Register metrics providers. 217 // Register metrics providers.
216 metrics_service_->RegisterMetricsProvider( 218 metrics_service_->RegisterMetricsProvider(
217 scoped_ptr<metrics::MetricsProvider>(new metrics::NetworkMetricsProvider( 219 std::unique_ptr<metrics::MetricsProvider>(
218 web::WebThread::GetBlockingPool()))); 220 new metrics::NetworkMetricsProvider(
221 web::WebThread::GetBlockingPool())));
219 222
220 // Currently, we configure OmniboxMetricsProvider to not log events to UMA 223 // Currently, we configure OmniboxMetricsProvider to not log events to UMA
221 // if there is a single incognito session visible. In the future, it may 224 // if there is a single incognito session visible. In the future, it may
222 // be worth revisiting this to still log events from non-incognito sessions. 225 // be worth revisiting this to still log events from non-incognito sessions.
223 metrics_service_->RegisterMetricsProvider( 226 metrics_service_->RegisterMetricsProvider(
224 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( 227 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider(
225 base::Bind(&::IsOffTheRecordSessionActive)))); 228 base::Bind(&::IsOffTheRecordSessionActive))));
226 229
227 stability_metrics_provider_ = new IOSChromeStabilityMetricsProvider( 230 stability_metrics_provider_ = new IOSChromeStabilityMetricsProvider(
228 GetApplicationContext()->GetLocalState()); 231 GetApplicationContext()->GetLocalState());
229 metrics_service_->RegisterMetricsProvider( 232 metrics_service_->RegisterMetricsProvider(
230 scoped_ptr<metrics::MetricsProvider>(stability_metrics_provider_)); 233 std::unique_ptr<metrics::MetricsProvider>(stability_metrics_provider_));
231 234
232 metrics_service_->RegisterMetricsProvider( 235 metrics_service_->RegisterMetricsProvider(
233 scoped_ptr<metrics::MetricsProvider>( 236 std::unique_ptr<metrics::MetricsProvider>(
234 new metrics::ScreenInfoMetricsProvider)); 237 new metrics::ScreenInfoMetricsProvider));
235 238
236 drive_metrics_provider_ = new metrics::DriveMetricsProvider( 239 drive_metrics_provider_ = new metrics::DriveMetricsProvider(
237 web::WebThread::GetTaskRunnerForThread(web::WebThread::FILE), 240 web::WebThread::GetTaskRunnerForThread(web::WebThread::FILE),
238 ios::FILE_LOCAL_STATE); 241 ios::FILE_LOCAL_STATE);
239 metrics_service_->RegisterMetricsProvider( 242 metrics_service_->RegisterMetricsProvider(
240 scoped_ptr<metrics::MetricsProvider>(drive_metrics_provider_)); 243 std::unique_ptr<metrics::MetricsProvider>(drive_metrics_provider_));
241 244
242 profiler_metrics_provider_ = 245 profiler_metrics_provider_ =
243 new metrics::ProfilerMetricsProvider(base::Bind(&IsCellularLogicEnabled)); 246 new metrics::ProfilerMetricsProvider(base::Bind(&IsCellularLogicEnabled));
244 metrics_service_->RegisterMetricsProvider( 247 metrics_service_->RegisterMetricsProvider(
245 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); 248 std::unique_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
246 249
247 metrics_service_->RegisterMetricsProvider( 250 metrics_service_->RegisterMetricsProvider(
248 scoped_ptr<metrics::MetricsProvider>( 251 std::unique_ptr<metrics::MetricsProvider>(
249 new metrics::CallStackProfileMetricsProvider)); 252 new metrics::CallStackProfileMetricsProvider));
250 253
251 metrics_service_->RegisterMetricsProvider( 254 metrics_service_->RegisterMetricsProvider(
252 scoped_ptr<metrics::MetricsProvider>( 255 std::unique_ptr<metrics::MetricsProvider>(
253 SigninStatusMetricsProvider::CreateInstance(make_scoped_ptr( 256 SigninStatusMetricsProvider::CreateInstance(base::WrapUnique(
254 new IOSChromeSigninStatusMetricsProviderDelegate)))); 257 new IOSChromeSigninStatusMetricsProviderDelegate))));
255 258
256 metrics_service_->RegisterMetricsProvider( 259 metrics_service_->RegisterMetricsProvider(
257 scoped_ptr<metrics::MetricsProvider>( 260 std::unique_ptr<metrics::MetricsProvider>(
258 new MobileSessionShutdownMetricsProvider(metrics_service_.get()))); 261 new MobileSessionShutdownMetricsProvider(metrics_service_.get())));
259 262
260 metrics_service_->RegisterMetricsProvider( 263 metrics_service_->RegisterMetricsProvider(
261 scoped_ptr<metrics::MetricsProvider>( 264 std::unique_ptr<metrics::MetricsProvider>(
262 new sync_driver::DeviceCountMetricsProvider( 265 new sync_driver::DeviceCountMetricsProvider(
263 base::Bind(&IOSChromeSyncClient::GetDeviceInfoTrackers)))); 266 base::Bind(&IOSChromeSyncClient::GetDeviceInfoTrackers))));
264 } 267 }
265 268
266 void IOSChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() { 269 void IOSChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() {
267 finished_init_task_callback_.Run(); 270 finished_init_task_callback_.Run();
268 } 271 }
269 272
270 bool IOSChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { 273 bool IOSChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() {
271 // Upload profiler data at most once per session. 274 // Upload profiler data at most once per session.
(...skipping 29 matching lines...) Expand all
301 CollectFinalHistograms(); 304 CollectFinalHistograms();
302 } 305 }
303 306
304 void IOSChromeMetricsServiceClient::CollectFinalHistograms() { 307 void IOSChromeMetricsServiceClient::CollectFinalHistograms() {
305 DCHECK(thread_checker_.CalledOnValidThread()); 308 DCHECK(thread_checker_.CalledOnValidThread());
306 309
307 // TODO(ios): Try to extract the flow below into a utility function that is 310 // TODO(ios): Try to extract the flow below into a utility function that is
308 // shared between the iOS port's usage and 311 // shared between the iOS port's usage and
309 // ChromeMetricsServiceClient::CollectFinalHistograms()'s usage of 312 // ChromeMetricsServiceClient::CollectFinalHistograms()'s usage of
310 // MetricsMemoryDetails. 313 // MetricsMemoryDetails.
311 scoped_ptr<base::ProcessMetrics> process_metrics( 314 std::unique_ptr<base::ProcessMetrics> process_metrics(
312 base::ProcessMetrics::CreateProcessMetrics( 315 base::ProcessMetrics::CreateProcessMetrics(
313 base::GetCurrentProcessHandle())); 316 base::GetCurrentProcessHandle()));
314 UMA_HISTOGRAM_MEMORY_KB("Memory.Browser", 317 UMA_HISTOGRAM_MEMORY_KB("Memory.Browser",
315 process_metrics->GetWorkingSetSize() / 1024); 318 process_metrics->GetWorkingSetSize() / 1024);
316 collect_final_metrics_done_callback_.Run(); 319 collect_final_metrics_done_callback_.Run();
317 } 320 }
318 321
319 void IOSChromeMetricsServiceClient::RegisterForNotifications() { 322 void IOSChromeMetricsServiceClient::RegisterForNotifications() {
320 tab_parented_subscription_ = 323 tab_parented_subscription_ =
321 TabParentingGlobalObserver::GetInstance()->RegisterCallback( 324 TabParentingGlobalObserver::GetInstance()->RegisterCallback(
322 base::Bind(&IOSChromeMetricsServiceClient::OnTabParented, 325 base::Bind(&IOSChromeMetricsServiceClient::OnTabParented,
323 base::Unretained(this))); 326 base::Unretained(this)));
324 omnibox_url_opened_subscription_ = 327 omnibox_url_opened_subscription_ =
325 OmniboxEventGlobalTracker::GetInstance()->RegisterCallback( 328 OmniboxEventGlobalTracker::GetInstance()->RegisterCallback(
326 base::Bind(&IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox, 329 base::Bind(&IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox,
327 base::Unretained(this))); 330 base::Unretained(this)));
328 } 331 }
329 332
330 void IOSChromeMetricsServiceClient::OnTabParented(web::WebState* web_state) { 333 void IOSChromeMetricsServiceClient::OnTabParented(web::WebState* web_state) {
331 metrics_service_->OnApplicationNotIdle(); 334 metrics_service_->OnApplicationNotIdle();
332 } 335 }
333 336
334 void IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { 337 void IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) {
335 metrics_service_->OnApplicationNotIdle(); 338 metrics_service_->OnApplicationNotIdle();
336 } 339 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698