| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/data_use_measurement/core/data_use_measurement.h" | 5 #include "components/data_use_measurement/core/data_use_measurement.h" |
| 6 | 6 |
| 7 #include "base/metrics/histogram_macros.h" | 7 #include "base/metrics/histogram_macros.h" |
| 8 #include "base/metrics/sparse_histogram.h" | 8 #include "base/metrics/sparse_histogram.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| 11 #include "components/data_use_measurement/core/data_use_user_data.h" | 11 #include "components/data_use_measurement/core/data_use_user_data.h" |
| 12 #include "components/data_use_measurement/core/url_request_classifier.h" | 12 #include "components/data_use_measurement/core/url_request_classifier.h" |
| 13 #include "components/domain_reliability/uploader.h" |
| 13 #include "net/base/network_change_notifier.h" | 14 #include "net/base/network_change_notifier.h" |
| 14 #include "net/base/upload_data_stream.h" | 15 #include "net/base/upload_data_stream.h" |
| 15 #include "net/http/http_response_headers.h" | 16 #include "net/http/http_response_headers.h" |
| 16 #include "net/url_request/url_request.h" | 17 #include "net/url_request/url_request.h" |
| 17 | 18 |
| 18 #if defined(OS_ANDROID) | 19 #if defined(OS_ANDROID) |
| 19 #include "net/android/traffic_stats.h" | 20 #include "net/android/traffic_stats.h" |
| 20 #endif | 21 #endif |
| 21 | 22 |
| 22 namespace data_use_measurement { | 23 namespace data_use_measurement { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 { | 83 { |
| 83 DCHECK(url_request_classifier_); | 84 DCHECK(url_request_classifier_); |
| 84 } | 85 } |
| 85 | 86 |
| 86 DataUseMeasurement::~DataUseMeasurement(){}; | 87 DataUseMeasurement::~DataUseMeasurement(){}; |
| 87 | 88 |
| 88 void DataUseMeasurement::OnBeforeURLRequest(net::URLRequest* request) { | 89 void DataUseMeasurement::OnBeforeURLRequest(net::URLRequest* request) { |
| 89 DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>( | 90 DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>( |
| 90 request->GetUserData(DataUseUserData::kUserDataKey)); | 91 request->GetUserData(DataUseUserData::kUserDataKey)); |
| 91 if (!data_use_user_data) { | 92 if (!data_use_user_data) { |
| 92 data_use_user_data = new DataUseUserData( | 93 DataUseUserData::ServiceName service_name = |
| 93 DataUseUserData::ServiceName::NOT_TAGGED, CurrentAppState()); | 94 DataUseUserData::ServiceName::NOT_TAGGED; |
| 95 if (!url_request_classifier_->IsUserRequest(*request) && |
| 96 domain_reliability::DomainReliabilityUploader:: |
| 97 OriginatedFromDomainReliability(*request)) { |
| 98 // Detect if the request originated from DomainReliability. |
| 99 // DataUseUserData::AttachToFetcher() cannot be called from domain |
| 100 // reliability, since it sets userdata on URLFetcher for its purposes. |
| 101 service_name = DataUseUserData::ServiceName::NOT_TAGGED; |
| 102 } |
| 103 |
| 104 data_use_user_data = new DataUseUserData(service_name, CurrentAppState()); |
| 94 request->SetUserData(DataUseUserData::kUserDataKey, data_use_user_data); | 105 request->SetUserData(DataUseUserData::kUserDataKey, data_use_user_data); |
| 95 } | 106 } |
| 96 } | 107 } |
| 97 | 108 |
| 98 void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request, | 109 void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request, |
| 99 const GURL& new_location) { | 110 const GURL& new_location) { |
| 100 // Recording data use of request on redirects. | 111 // Recording data use of request on redirects. |
| 101 // TODO(rajendrant): May not be needed when http://crbug/651957 is fixed. | 112 // TODO(rajendrant): May not be needed when http://crbug/651957 is fixed. |
| 102 UpdateDataUsePrefs(request); | 113 UpdateDataUsePrefs(request); |
| 103 ReportServicesMessageSizeUMA(request); | 114 ReportServicesMessageSizeUMA(request); |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 message_size); | 324 message_size); |
| 314 if (message_size > 0) { | 325 if (message_size > 0) { |
| 315 IncreaseSparseHistogramByValue( | 326 IncreaseSparseHistogramByValue( |
| 316 GetHistogramName("DataUse.MessageSize.AllServices", dir, app_state, | 327 GetHistogramName("DataUse.MessageSize.AllServices", dir, app_state, |
| 317 is_connection_cellular), | 328 is_connection_cellular), |
| 318 service, message_size); | 329 service, message_size); |
| 319 } | 330 } |
| 320 } | 331 } |
| 321 | 332 |
| 322 } // namespace data_use_measurement | 333 } // namespace data_use_measurement |
| OLD | NEW |