Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1108)

Unified Diff: components/data_use_measurement/content/data_use_measurement.cc

Issue 1818613002: Implement UMA log throttling for cellular connections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}

Powered by Google App Engine
This is Rietveld 408576698