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

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

Issue 2358663004: Fix foregound vs background data use measurement (Closed)
Patch Set: remove logs Created 4 years, 3 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 dd70ad5607af5aa785fc97068c66054f5eb9af94..db29d7d993217a09403365cd16ff748601ef457e 100644
--- a/components/data_use_measurement/content/data_use_measurement.cc
+++ b/components/data_use_measurement/content/data_use_measurement.cc
@@ -8,6 +8,7 @@
#include "base/metrics/sparse_histogram.h"
#include "base/strings/stringprintf.h"
#include "build/build_config.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "content/public/browser/resource_request_info.h"
#include "net/base/network_change_notifier.h"
#include "net/base/upload_data_stream.h"
@@ -59,6 +60,17 @@ DataUseMeasurement::DataUseMeasurement(
DataUseMeasurement::~DataUseMeasurement(){};
+void DataUseMeasurement::OnBeforeURLRequest(net::URLRequest* request) {
+ DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>(
+ request->GetUserData(DataUseUserData::kUserDataKey));
+ if (!data_use_user_data) {
+ data_use_user_data =
+ new DataUseUserData(DataUseUserData::ServiceName::NOT_TAGGED,
+ CurrentAppState() == FOREGROUND);
+ request->SetUserData(DataUseUserData::kUserDataKey, data_use_user_data);
+ }
+}
+
void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request,
const GURL& new_location) {
// Recording data use of request on redirects.
@@ -86,27 +98,33 @@ void DataUseMeasurement::ReportDataUseUMA(
bool is_connection_cellular =
net::NetworkChangeNotifier::IsConnectionCellular(
net::NetworkChangeNotifier::GetConnectionType());
+
+ 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;
+ bool started_in_foreground =
bengr 2016/09/23 18:45:31 Might be better to have an "unknown" state.
Raj 2016/09/23 22:34:09 Done.
+ attached_service_data ? attached_service_data->started_in_foreground()
+ : CurrentAppState() == FOREGROUND;
+
RecordUMAHistogramCount(
GetHistogramName(is_user_traffic ? "DataUse.TrafficSize.User"
: "DataUse.TrafficSize.System",
- UPSTREAM, is_connection_cellular),
+ UPSTREAM, started_in_foreground, is_connection_cellular),
total_upload_bytes);
RecordUMAHistogramCount(
GetHistogramName(is_user_traffic ? "DataUse.TrafficSize.User"
: "DataUse.TrafficSize.System",
- DOWNSTREAM, is_connection_cellular),
+ DOWNSTREAM, started_in_foreground,
+ 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) {
- ReportDataUsageServices(service_name, UPSTREAM, is_connection_cellular,
- total_upload_bytes);
- ReportDataUsageServices(service_name, DOWNSTREAM, is_connection_cellular,
- total_received_bytes);
+ ReportDataUsageServices(service_name, UPSTREAM, started_in_foreground,
+ is_connection_cellular, total_upload_bytes);
+ ReportDataUsageServices(service_name, DOWNSTREAM, started_in_foreground,
+ is_connection_cellular, total_received_bytes);
}
// Update data use prefs for cellular connections.
@@ -150,11 +168,11 @@ DataUseMeasurement::AppState DataUseMeasurement::CurrentAppState() const {
std::string DataUseMeasurement::GetHistogramName(
const char* prefix,
TrafficDirection dir,
+ bool started_in_foreground,
bool is_connection_cellular) const {
- AppState app_state = CurrentAppState();
return base::StringPrintf(
"%s.%s.%s.%s", prefix, dir == UPSTREAM ? "Upstream" : "Downstream",
- app_state == BACKGROUND ? "Background" : "Foreground",
+ started_in_foreground ? "Foreground" : "Background",
is_connection_cellular ? "Cellular" : "NotCellular");
}
@@ -168,6 +186,7 @@ void DataUseMeasurement::OnApplicationStateChange(
void DataUseMeasurement::ReportDataUsageServices(
DataUseUserData::ServiceName service,
TrafficDirection dir,
+ bool started_in_foreground,
bool is_connection_cellular,
int64_t message_size) const {
RecordUMAHistogramCount(
@@ -176,7 +195,7 @@ void DataUseMeasurement::ReportDataUsageServices(
if (message_size > 0) {
IncreaseSparseHistogramByValue(
GetHistogramName("DataUse.MessageSize.AllServices", dir,
- is_connection_cellular),
+ started_in_foreground, is_connection_cellular),
service, message_size);
}
}

Powered by Google App Engine
This is Rietveld 408576698