| 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 8954197117c9b35a4d1ba0d4a5d44bf6d59bf963..c68d2bf7b816bb4688c11c63d1dc4ad2a3f3648f 100644
|
| --- a/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/command_line.h"
|
| #include "base/files/file_path.h"
|
| #include "base/logging.h"
|
| +#include "base/metrics/field_trial.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/prefs/pref_registry_simple.h"
|
| #include "base/prefs/pref_service.h"
|
| @@ -98,6 +99,24 @@ metrics::SystemProfileProto::Channel AsProtobufChannel(
|
| return metrics::SystemProfileProto::CHANNEL_UNKNOWN;
|
| }
|
|
|
| +// Standard interval between log uploads, in seconds.
|
| +#if defined(OS_ANDROID) || defined(OS_IOS)
|
| +const int kStandardUploadIntervalSeconds = 5 * 60; // Five minutes.
|
| +const int kStandardUploadIntervalCellularSeconds = 15 * 60; // Fifteen minutes.
|
| +#else
|
| +const int kStandardUploadIntervalSeconds = 30 * 60; // Thirty minutes.
|
| +#endif
|
| +
|
| +#if defined(OS_ANDROID) || defined(OS_IOS)
|
| +// Returns true if the user is assigned to the experiment group for enabled
|
| +// cellular uploads.
|
| +bool IsCellularEnabledByExperiment() {
|
| + const std::string group_name =
|
| + base::FieldTrialList::FindFullName("UMA_EnableCellularLogUpload");
|
| + return group_name == "Enabled";
|
| +}
|
| +#endif
|
| +
|
| } // namespace
|
|
|
| ChromeMetricsServiceClient::ChromeMetricsServiceClient(
|
| @@ -246,6 +265,17 @@ ChromeMetricsServiceClient::CreateUploader(
|
| on_upload_complete));
|
| }
|
|
|
| +base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() {
|
| +#if defined(OS_ANDROID) || defined(OS_IOS)
|
| + bool is_cellular = false;
|
| + cellular_callback_.Run(&is_cellular);
|
| +
|
| + if (is_cellular && IsCellularEnabledByExperiment())
|
| + return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds);
|
| +#endif
|
| + return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds);
|
| +}
|
| +
|
| base::string16 ChromeMetricsServiceClient::GetRegistryBackupKey() {
|
| #if defined(OS_WIN)
|
| return L"Software\\" PRODUCT_STRING_PATH L"\\StabilityMetrics";
|
| @@ -276,9 +306,7 @@ void ChromeMetricsServiceClient::Initialize() {
|
| scoped_ptr<metrics::NetworkMetricsProvider> network_metrics_provider(
|
| new metrics::NetworkMetricsProvider(
|
| content::BrowserThread::GetBlockingPool()));
|
| - base::Callback<void(bool*)> cellular_callback =
|
| - network_metrics_provider->GetConnectionCallback();
|
| - metrics_service_->SetConnectionTypeCallback(cellular_callback);
|
| + cellular_callback_ = network_metrics_provider->GetConnectionCallback();
|
| metrics_service_->RegisterMetricsProvider(network_metrics_provider.Pass());
|
|
|
| metrics_service_->RegisterMetricsProvider(
|
| @@ -289,7 +317,7 @@ void ChromeMetricsServiceClient::Initialize() {
|
| scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider()));
|
|
|
| profiler_metrics_provider_ =
|
| - new metrics::ProfilerMetricsProvider(cellular_callback);
|
| + new metrics::ProfilerMetricsProvider(cellular_callback_);
|
| metrics_service_->RegisterMetricsProvider(
|
| scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
|
|
|
|
|