Index: chrome/browser/metrics/chrome_metrics_service_client.cc |
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc |
index c68d2bf7b816bb4688c11c63d1dc4ad2a3f3648f..230c376f4206894f9c81697714ec0e335183b3cd 100644 |
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc |
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc |
@@ -13,6 +13,7 @@ |
#include "base/logging.h" |
#include "base/metrics/field_trial.h" |
#include "base/metrics/histogram.h" |
+#include "base/metrics/sparse_histogram.h" |
#include "base/prefs/pref_registry_simple.h" |
#include "base/prefs/pref_service.h" |
#include "base/strings/string16.h" |
@@ -205,7 +206,13 @@ std::string ChromeMetricsServiceClient::GetVersionString() { |
return version; |
} |
-void ChromeMetricsServiceClient::OnLogUploadComplete() { |
+void ChromeMetricsServiceClient::OnLogUploadComplete(bool upload_succeeded) { |
+ // Record the network connection type. |
+ if (upload_succeeded) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("UMA.LogUpload.ConnetionType", |
+ network_metrics_provider_->GetConnectionType()); |
Ilya Sherman
2015/03/24 00:14:23
The connection type is already recorded in the sys
Ilya Sherman
2015/03/24 00:14:23
FWIW, this histogram doesn't really need to be spa
gayane -on leave until 09-2017
2015/03/24 20:45:55
As discussed, system profile records the connectio
gayane -on leave until 09-2017
2015/03/24 20:45:55
Done.
|
+ } |
+ |
// Collect network stats after each UMA upload. |
network_stats_uploader_.CollectAndReportNetworkStats(); |
} |
@@ -267,10 +274,8 @@ ChromeMetricsServiceClient::CreateUploader( |
base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() { |
#if defined(OS_ANDROID) || defined(OS_IOS) |
- bool is_cellular = false; |
- cellular_callback_.Run(&is_cellular); |
- |
- if (is_cellular && IsCellularEnabledByExperiment()) |
+ if (network_metrics_provider_->IsCellularConnection() && |
+ IsCellularEnabledByExperiment()) |
return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds); |
#endif |
return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds); |
@@ -306,7 +311,14 @@ void ChromeMetricsServiceClient::Initialize() { |
scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider( |
new metrics::NetworkMetricsProvider( |
content::BrowserThread::GetBlockingPool())); |
- cellular_callback_ = network_metrics_provider->GetConnectionCallback(); |
+ |
+ // GetConnectionCallback should be called from non const pointer. |
Ilya Sherman
2015/03/24 00:14:23
I don't understand this comment. Why does this ne
gayane -on leave until 09-2017
2015/03/24 20:45:55
As network_metrics_provider_ as a const pointer I
|
+ profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider( |
+ network_metrics_provider.get()->GetConnectionCallback()); |
+ metrics_service_->RegisterMetricsProvider( |
+ scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); |
+ |
+ network_metrics_provider_ = network_metrics_provider.get(); |
metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass()); |
metrics_service_->RegisterMetricsProvider( |
@@ -316,11 +328,6 @@ void ChromeMetricsServiceClient::Initialize() { |
metrics_service_->RegisterMetricsProvider( |
scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider())); |
- profiler_metrics_provider_ = |
- new metrics::ProfilerMetricsProvider(cellular_callback_); |
- metrics_service_->RegisterMetricsProvider( |
- scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); |
- |
#if defined(OS_ANDROID) |
metrics_service_->RegisterMetricsProvider( |
scoped_ptr<metrics::MetricsProvider>( |