Index: components/data_use_measurement/core/data_use_measurement.cc |
diff --git a/components/data_use_measurement/core/data_use_measurement.cc b/components/data_use_measurement/core/data_use_measurement.cc |
index c7f1f69579d3d9dd0bb00fac9253247e6867cf74..92270a60016add6736e5f99a5e50cc61ac0cc0f8 100644 |
--- a/components/data_use_measurement/core/data_use_measurement.cc |
+++ b/components/data_use_measurement/core/data_use_measurement.cc |
@@ -8,6 +8,8 @@ |
#include "base/metrics/sparse_histogram.h" |
#include "base/strings/stringprintf.h" |
#include "build/build_config.h" |
+#include "components/data_use_measurement/core/data_use_ascriber.h" |
+#include "components/data_use_measurement/core/data_use_recorder.h" |
#include "components/data_use_measurement/core/data_use_user_data.h" |
#include "components/data_use_measurement/core/url_request_classifier.h" |
#include "components/domain_reliability/uploader.h" |
@@ -65,10 +67,12 @@ void IncrementLatencyHistogramByCount(const std::string& name, |
} // namespace |
DataUseMeasurement::DataUseMeasurement( |
+ DataUseAscriber* ascriber, |
RyanSturm
2016/12/16 16:26:10
nit: can you order the arguments in the same order
Raj
2016/12/16 19:59:10
Done.
|
std::unique_ptr<URLRequestClassifier> url_request_classifier, |
const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder) |
: url_request_classifier_(std::move(url_request_classifier)), |
- metrics_data_use_forwarder_(metrics_data_use_forwarder) |
+ metrics_data_use_forwarder_(metrics_data_use_forwarder), |
+ ascriber_(ascriber) |
#if defined(OS_ANDROID) |
, |
app_state_(base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES), |
@@ -81,6 +85,7 @@ DataUseMeasurement::DataUseMeasurement( |
no_reads_since_background_(false) |
#endif |
{ |
+ DCHECK(ascriber_); |
DCHECK(url_request_classifier_); |
} |
@@ -190,6 +195,16 @@ void DataUseMeasurement::ReportDataUseUMA(const net::URLRequest& request, |
} |
} |
#endif |
+ |
+ if (is_user_traffic) { |
+ const auto recorder = ascriber_->GetDataUseRecorderIfExists(&request); |
RyanSturm
2016/12/16 16:26:10
nit: s/auto/DataUseRecorder*/
It's a little fuzzy
Raj
2016/12/16 19:59:10
Done.
|
+ if (recorder) { |
+ RecordTabStateHistogram( |
+ dir, new_app_state, |
+ recorder->is_visible() ? TabState::FOREGROUND : TabState::BACKGROUND, |
+ bytes); |
+ } |
+ } |
} |
void DataUseMeasurement::UpdateDataUsePrefs( |
@@ -330,4 +345,23 @@ void DataUseMeasurement::ReportDataUsageServices( |
} |
} |
+void DataUseMeasurement::RecordTabStateHistogram( |
+ TrafficDirection dir, |
+ DataUseUserData::AppState app_state, |
+ TabState tab_state, |
+ int64_t bytes) { |
+ if (app_state == DataUseUserData::UNKNOWN || tab_state == TabState::UNKNOWN) |
+ return; |
+ |
+ RecordUMAHistogramCount( |
+ base::StringPrintf("DataUse.AppTabState.%s.%s", |
RyanSturm
2016/12/16 16:26:10
This expression might be a little more readable if
Raj
2016/12/16 19:59:10
Done.
RyanSturm
2016/12/19 19:31:49
Thanks.
|
+ dir == UPSTREAM ? "Upstream" : "Downstream", |
+ app_state == DataUseUserData::BACKGROUND |
+ ? "AppBackground" |
+ : tab_state == TabState::FOREGROUND |
+ ? "AppForeground.TabForeground" |
+ : "AppForeground.TabBackground"), |
+ bytes); |
+} |
+ |
} // namespace data_use_measurement |