Chromium Code Reviews| 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 |