Chromium Code Reviews| 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..e7904d7792cce52eb289404df712c6c5ebb46ebf 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" |
|
Ilya Sherman
2015/03/24 21:55:44
nit: No longer needed?
gayane -on leave until 09-2017
2015/03/25 21:02:33
Done.
|
| #include "base/prefs/pref_registry_simple.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/string16.h" |
| @@ -123,6 +124,7 @@ ChromeMetricsServiceClient::ChromeMetricsServiceClient( |
| metrics::MetricsStateManager* state_manager) |
| : metrics_state_manager_(state_manager), |
| chromeos_metrics_provider_(NULL), |
| + network_metrics_provider_(NULL), |
| waiting_for_collect_final_metrics_step_(false), |
| num_async_histogram_fetches_in_progress_(0), |
| weak_ptr_factory_(this) { |
| @@ -205,7 +207,15 @@ 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_ENUMERATION( |
| + "UMA.LogUpload.ConnetionType", |
| + network_metrics_provider_->GetConnectionType(), |
| + metrics::SystemProfileProto::Network::CONNECTION_BLUETOOTH + 1); |
|
Ilya Sherman
2015/03/24 21:55:44
Rather than using the enum type from the protocol
gayane -on leave until 09-2017
2015/03/25 21:02:33
For the enum eventually I have used net::NetworkCh
|
| + } |
| + |
| // Collect network stats after each UMA upload. |
| network_stats_uploader_.CollectAndReportNetworkStats(); |
| } |
| @@ -267,10 +277,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); |
| @@ -303,11 +311,11 @@ void ChromeMetricsServiceClient::Initialize() { |
| scoped_ptr<metrics::MetricsProvider>( |
| new ExtensionsMetricsProvider(metrics_state_manager_))); |
| #endif |
| - scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider( |
| - new metrics::NetworkMetricsProvider( |
| - content::BrowserThread::GetBlockingPool())); |
| - cellular_callback_ = network_metrics_provider->GetConnectionCallback(); |
| - metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass()); |
| + |
| + network_metrics_provider_ = new metrics::NetworkMetricsProvider( |
| + content::BrowserThread::GetBlockingPool()); |
| + metrics_service_->RegisterMetricsProvider( |
| + scoped_ptr<metrics::NetworkMetricsProvider>(network_metrics_provider_)); |
| metrics_service_->RegisterMetricsProvider( |
| scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider)); |
| @@ -316,8 +324,8 @@ void ChromeMetricsServiceClient::Initialize() { |
| metrics_service_->RegisterMetricsProvider( |
| scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider())); |
| - profiler_metrics_provider_ = |
| - new metrics::ProfilerMetricsProvider(cellular_callback_); |
| + profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider( |
| + network_metrics_provider_->GetConnectionCallback()); |
| metrics_service_->RegisterMetricsProvider( |
| scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); |