| Index: components/data_use_measurement/content/data_use_measurement.cc
|
| diff --git a/components/data_use_measurement/content/data_use_measurement.cc b/components/data_use_measurement/content/data_use_measurement.cc
|
| index 23f916c6ae054c38efb296be694b623aa91cd5ab..31b3eb3cbe7482d8cd997d88904e85d5d3842fd4 100644
|
| --- a/components/data_use_measurement/content/data_use_measurement.cc
|
| +++ b/components/data_use_measurement/content/data_use_measurement.cc
|
| @@ -44,9 +44,12 @@ void IncreaseSparseHistogramByValue(const std::string& name,
|
|
|
| } // namespace
|
|
|
| -DataUseMeasurement::DataUseMeasurement()
|
| +DataUseMeasurement::DataUseMeasurement(
|
| + const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder)
|
| + : metrics_data_use_forwarder_(metrics_data_use_forwarder)
|
| #if defined(OS_ANDROID)
|
| - : app_state_(base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES),
|
| + ,
|
| + app_state_(base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES),
|
| app_listener_(new base::android::ApplicationStatusListener(
|
| base::Bind(&DataUseMeasurement::OnApplicationStateChange,
|
| base::Unretained(this))))
|
| @@ -75,26 +78,37 @@ void DataUseMeasurement::ReportDataUseUMA(
|
| int64_t total_upload_bytes = request->GetTotalSentBytes();
|
| int64_t total_received_bytes = request->GetTotalReceivedBytes();
|
|
|
| + bool is_connection_cellular =
|
| + net::NetworkChangeNotifier::IsConnectionCellular(
|
| + net::NetworkChangeNotifier::GetConnectionType());
|
| RecordUMAHistogramCount(
|
| GetHistogramName(is_user_traffic ? "DataUse.TrafficSize.User"
|
| : "DataUse.TrafficSize.System",
|
| - UPSTREAM),
|
| + UPSTREAM, is_connection_cellular),
|
| total_upload_bytes);
|
| RecordUMAHistogramCount(
|
| GetHistogramName(is_user_traffic ? "DataUse.TrafficSize.User"
|
| : "DataUse.TrafficSize.System",
|
| - DOWNSTREAM),
|
| + DOWNSTREAM, is_connection_cellular),
|
| total_received_bytes);
|
|
|
| DataUseUserData* attached_service_data = reinterpret_cast<DataUseUserData*>(
|
| request->GetUserData(DataUseUserData::kUserDataKey));
|
| -
|
| + DataUseUserData::ServiceName service_name =
|
| + attached_service_data ? attached_service_data->service_name()
|
| + : DataUseUserData::NOT_TAGGED;
|
| if (!is_user_traffic) {
|
| - DataUseUserData::ServiceName service_name =
|
| - attached_service_data ? attached_service_data->service_name()
|
| - : DataUseUserData::NOT_TAGGED;
|
| - ReportDataUsageServices(service_name, UPSTREAM, total_upload_bytes);
|
| - ReportDataUsageServices(service_name, DOWNSTREAM, total_received_bytes);
|
| + ReportDataUsageServices(service_name, UPSTREAM, is_connection_cellular,
|
| + total_upload_bytes);
|
| + ReportDataUsageServices(service_name, DOWNSTREAM, is_connection_cellular,
|
| + total_received_bytes);
|
| + }
|
| +
|
| + // Update data use prefs for cellular connections.
|
| + if (!metrics_data_use_forwarder_.is_null()) {
|
| + metrics_data_use_forwarder_.Run(
|
| + attached_service_data->GetServiceNameAsString(service_name),
|
| + total_upload_bytes + total_received_bytes, is_connection_cellular);
|
| }
|
| }
|
|
|
| @@ -114,15 +128,15 @@ DataUseMeasurement::AppState DataUseMeasurement::CurrentAppState() const {
|
| return FOREGROUND;
|
| }
|
|
|
| -std::string DataUseMeasurement::GetHistogramName(const char* prefix,
|
| - TrafficDirection dir) const {
|
| +std::string DataUseMeasurement::GetHistogramName(
|
| + const char* prefix,
|
| + TrafficDirection dir,
|
| + bool is_connection_cellular) const {
|
| AppState app_state = CurrentAppState();
|
| - bool is_conn_cellular = net::NetworkChangeNotifier::IsConnectionCellular(
|
| - net::NetworkChangeNotifier::GetConnectionType());
|
| return base::StringPrintf(
|
| "%s.%s.%s.%s", prefix, dir == UPSTREAM ? "Upstream" : "Downstream",
|
| app_state == BACKGROUND ? "Background" : "Foreground",
|
| - is_conn_cellular ? "Cellular" : "NotCellular");
|
| + is_connection_cellular ? "Cellular" : "NotCellular");
|
| }
|
|
|
| #if defined(OS_ANDROID)
|
| @@ -135,14 +149,16 @@ void DataUseMeasurement::OnApplicationStateChange(
|
| void DataUseMeasurement::ReportDataUsageServices(
|
| DataUseUserData::ServiceName service,
|
| TrafficDirection dir,
|
| + bool is_connection_cellular,
|
| int64_t message_size) const {
|
| RecordUMAHistogramCount(
|
| "DataUse.MessageSize." + DataUseUserData::GetServiceNameAsString(service),
|
| message_size);
|
| if (message_size > 0) {
|
| IncreaseSparseHistogramByValue(
|
| - GetHistogramName("DataUse.MessageSize.AllServices", dir), service,
|
| - message_size);
|
| + GetHistogramName("DataUse.MessageSize.AllServices", dir,
|
| + is_connection_cellular),
|
| + service, message_size);
|
| }
|
| }
|
|
|
|
|