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

Side by Side Diff: components/metrics/metrics_service.cc

Issue 922383003: Enable UMA log uploads for cellular networks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed old solution, fixed comments Created 5 years, 10 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 //------------------------------------------------------------------------------ 5 //------------------------------------------------------------------------------
6 // Description of the life cycle of a instance of MetricsService. 6 // Description of the life cycle of a instance of MetricsService.
7 // 7 //
8 // OVERVIEW 8 // OVERVIEW
9 // 9 //
10 // A MetricsService instance is typically created at application startup. It is 10 // A MetricsService instance is typically created at application startup. It is
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 local_state_->SetInt64(prefs::kInstallDate, base::Time::Now().ToTimeT()); 341 local_state_->SetInt64(prefs::kInstallDate, base::Time::Now().ToTimeT());
342 } 342 }
343 343
344 MetricsService::~MetricsService() { 344 MetricsService::~MetricsService() {
345 DisableRecording(); 345 DisableRecording();
346 } 346 }
347 347
348 void MetricsService::InitializeMetricsRecordingState() { 348 void MetricsService::InitializeMetricsRecordingState() {
349 InitializeMetricsState(); 349 InitializeMetricsState();
350 350
351 base::Closure callback = base::Bind(&MetricsService::StartScheduledUpload, 351 base::Closure upload_callback =
352 self_ptr_factory_.GetWeakPtr()); 352 base::Bind(&MetricsService::StartScheduledUpload,
353 scheduler_.reset(new MetricsReportingScheduler(callback)); 353 self_ptr_factory_.GetWeakPtr());
354 base::Callback<void(bool*)> cellular_callback =
355 base::Bind(&MetricsService::GetIsCellularConnection,
356 self_ptr_factory_.GetWeakPtr());
357 scheduler_.reset(
358 new MetricsReportingScheduler(upload_callback, cellular_callback));
354 } 359 }
355 360
356 void MetricsService::Start() { 361 void MetricsService::Start() {
357 HandleIdleSinceLastTransmission(false); 362 HandleIdleSinceLastTransmission(false);
358 EnableRecording(); 363 EnableRecording();
359 EnableReporting(); 364 EnableReporting();
360 } 365 }
361 366
362 bool MetricsService::StartIfMetricsReportingEnabled() { 367 bool MetricsService::StartIfMetricsReportingEnabled() {
363 const bool enabled = state_manager_->IsMetricsReportingEnabled(); 368 const bool enabled = state_manager_->IsMetricsReportingEnabled();
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 DCHECK(IsSingleThreaded()); 1261 DCHECK(IsSingleThreaded());
1257 local_state_->SetBoolean(path, value); 1262 local_state_->SetBoolean(path, value);
1258 RecordCurrentState(local_state_); 1263 RecordCurrentState(local_state_);
1259 } 1264 }
1260 1265
1261 void MetricsService::RecordCurrentState(PrefService* pref) { 1266 void MetricsService::RecordCurrentState(PrefService* pref) {
1262 pref->SetInt64(prefs::kStabilityLastTimestampSec, 1267 pref->SetInt64(prefs::kStabilityLastTimestampSec,
1263 base::Time::Now().ToTimeT()); 1268 base::Time::Now().ToTimeT());
1264 } 1269 }
1265 1270
1271 void MetricsService::SetNetworkMetricsProvider(
1272 scoped_ptr<NetworkMetricsProvider> network_metrics_provider) {
1273 network_metrics_provider_ = network_metrics_provider.get();
1274 RegisterMetricsProvider(network_metrics_provider.Pass());
1275 }
1276
1277 bool MetricsService::IsCellularConnection() {
1278 SystemProfileProto::Network::ConnectionType connection_type =
1279 network_metrics_provider_->GetConnectionType();
Alexei Svitkine (slow) 2015/02/19 16:29:12 Since it's optional for SetNetworkMetricsProvider(
gayane -on leave until 09-2017 2015/02/19 22:40:13 Done.
1280
1281 switch (connection_type) {
1282 case SystemProfileProto_Network_ConnectionType_CONNECTION_2G:
1283 case SystemProfileProto_Network_ConnectionType_CONNECTION_3G:
1284 case SystemProfileProto_Network_ConnectionType_CONNECTION_4G:
1285 return true;
1286 default:
1287 return false;
1288 }
1289 }
1290
1291 void MetricsService::GetIsCellularConnection(bool* is_cellular_out) {
1292 *is_cellular_out = IsCellularConnection();
1293 }
1294
1266 } // namespace metrics 1295 } // namespace metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698