Chromium Code Reviews| Index: components/metrics/metrics_service.cc |
| diff --git a/components/metrics/metrics_service.cc b/components/metrics/metrics_service.cc |
| index 18ec2e55bddae79355348dcc22bbf3e848231092..19be740171fcd1a22ec791aabcc8a03dd9c140a5 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,33 @@ void MetricsService::RecordCurrentState(PrefService* pref) { |
| base::Time::Now().ToTimeT()); |
| } |
| +void MetricsService::SetNetworkMetricsProvider( |
| + scoped_ptr<NetworkMetricsProvider> network_metrics_provider) { |
| + network_metrics_provider_ = network_metrics_provider.get(); |
| + RegisterMetricsProvider(network_metrics_provider.Pass()); |
| +} |
| + |
| +bool MetricsService::IsCellularConnection() { |
| + // If network provider is not set than default to cellular connection because |
|
Alexei Svitkine (slow)
2015/02/20 22:39:29
Nit: than -> then
gayane -on leave until 09-2017
2015/02/23 18:27:45
Removed
|
| + // it is more conservative. |
|
Alexei Svitkine (slow)
2015/02/20 22:39:29
I don't think we should default to cellular.
If w
gayane -on leave until 09-2017
2015/02/23 18:27:45
Removed
|
| + if (!network_metrics_provider_) |
| + return true; |
| + |
| + 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 |