| Index: components/metrics/metrics_service.cc
|
| diff --git a/components/metrics/metrics_service.cc b/components/metrics/metrics_service.cc
|
| index 18ec2e55bddae79355348dcc22bbf3e848231092..6c803b415dbd3c225e7b002fc9d6a2f52de25f85 100644
|
| --- a/components/metrics/metrics_service.cc
|
| +++ b/components/metrics/metrics_service.cc
|
| @@ -348,9 +348,14 @@ MetricsService::~MetricsService() {
|
| void MetricsService::InitializeMetricsRecordingState() {
|
| InitializeMetricsState();
|
|
|
| - base::Closure callback = base::Bind(&MetricsService::StartScheduledUpload,
|
| - self_ptr_factory_.GetWeakPtr());
|
| - scheduler_.reset(new MetricsReportingScheduler(callback));
|
| + base::Closure upload_callback =
|
| + base::Bind(&MetricsService::StartScheduledUpload,
|
| + self_ptr_factory_.GetWeakPtr());
|
| + base::Callback<void(bool*)> cellular_callback =
|
| + base::Bind(&MetricsService::GetIsCellularConnection,
|
| + self_ptr_factory_.GetWeakPtr());
|
| + scheduler_.reset(
|
| + new MetricsReportingScheduler(upload_callback, cellular_callback));
|
| }
|
|
|
| void MetricsService::Start() {
|
| @@ -1263,4 +1268,29 @@ void MetricsService::RecordCurrentState(PrefService* pref) {
|
| base::Time::Now().ToTimeT());
|
| }
|
|
|
| +void MetricsService::SetNetworkMetricsProvider(
|
| + metrics::NetworkMetricsProvider* network_metrics_provider) {
|
| + RegisterMetricsProvider(
|
| + scoped_ptr<metrics::MetricsProvider>(network_metrics_provider));
|
| + network_metrics_provider_ = network_metrics_provider;
|
| +}
|
| +
|
| +bool MetricsService::IsCellularConnection() {
|
| + SystemProfileProto::Network::ConnectionType connection_type =
|
| + network_metrics_provider_->GetConnectionType();
|
| +
|
| + switch (connection_type) {
|
| + case SystemProfileProto_Network_ConnectionType_CONNECTION_2G:
|
| + case SystemProfileProto_Network_ConnectionType_CONNECTION_3G:
|
| + case SystemProfileProto_Network_ConnectionType_CONNECTION_4G:
|
| + return true;
|
| + default:
|
| + return false;
|
| + }
|
| +}
|
| +
|
| +void MetricsService::GetIsCellularConnection(bool* is_cellular_out) {
|
| + *is_cellular_out = IsCellularConnection();
|
| +}
|
| +
|
| } // namespace metrics
|
|
|