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

Side by Side Diff: components/data_use_measurement/core/data_use_measurement.cc

Issue 2764893003: Record data use of favicon (Closed)
Patch Set: Created 3 years, 9 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 unified diff | Download patch
OLDNEW
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_ascriber.h" 11 #include "components/data_use_measurement/core/data_use_ascriber.h"
12 #include "components/data_use_measurement/core/data_use_recorder.h" 12 #include "components/data_use_measurement/core/data_use_recorder.h"
13 #include "components/data_use_measurement/core/data_use_user_data.h" 13 #include "components/data_use_measurement/core/data_use_user_data.h"
14 #include "components/data_use_measurement/core/url_request_classifier.h" 14 #include "components/data_use_measurement/core/url_request_classifier.h"
15 #include "components/domain_reliability/uploader.h" 15 #include "components/domain_reliability/uploader.h"
16 #include "google_apis/gaia/gaia_auth_util.h" 16 #include "google_apis/gaia/gaia_auth_util.h"
17 #include "net/base/network_change_notifier.h" 17 #include "net/base/network_change_notifier.h"
18 #include "net/base/upload_data_stream.h" 18 #include "net/base/upload_data_stream.h"
19 #include "net/http/http_response_headers.h" 19 #include "net/http/http_response_headers.h"
20 #include "net/http/http_status_code.h"
20 #include "net/url_request/url_request.h" 21 #include "net/url_request/url_request.h"
21 22
22 #if defined(OS_ANDROID) 23 #if defined(OS_ANDROID)
23 #include "net/android/traffic_stats.h" 24 #include "net/android/traffic_stats.h"
24 #endif 25 #endif
25 26
26 namespace data_use_measurement { 27 namespace data_use_measurement {
27 28
28 namespace { 29 namespace {
29 30
(...skipping 28 matching lines...) Expand all
58 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet( 59 base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet(
59 name, 60 name,
60 base::TimeDelta::FromMilliseconds(1), // Minimum sample 61 base::TimeDelta::FromMilliseconds(1), // Minimum sample
61 base::TimeDelta::FromHours(1), // Maximum sample 62 base::TimeDelta::FromHours(1), // Maximum sample
62 50, // Bucket count. 63 50, // Bucket count.
63 base::HistogramBase::kUmaTargetedHistogramFlag); 64 base::HistogramBase::kUmaTargetedHistogramFlag);
64 histogram_pointer->AddCount(latency.InMilliseconds(), count); 65 histogram_pointer->AddCount(latency.InMilliseconds(), count);
65 } 66 }
66 #endif 67 #endif
67 68
69 void RecordFavIconDataUse(const net::URLRequest& request) {
70 UMA_HISTOGRAM_COUNTS_100000(
71 "DataUse.FavIcon.Downstream",
72 request.was_cached() ? 0 : request.GetTotalReceivedBytes());
73 if (request.GetResponseCode() != net::HTTP_OK) {
74 UMA_HISTOGRAM_COUNTS_100000("DataUse.FavIcon.Downstream.Non200Response",
75 request.GetTotalReceivedBytes());
76 }
77 }
78
68 } // namespace 79 } // namespace
69 80
70 DataUseMeasurement::DataUseMeasurement( 81 DataUseMeasurement::DataUseMeasurement(
71 std::unique_ptr<URLRequestClassifier> url_request_classifier, 82 std::unique_ptr<URLRequestClassifier> url_request_classifier,
72 const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder, 83 const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder,
73 DataUseAscriber* ascriber) 84 DataUseAscriber* ascriber)
74 : url_request_classifier_(std::move(url_request_classifier)), 85 : url_request_classifier_(std::move(url_request_classifier)),
75 metrics_data_use_forwarder_(metrics_data_use_forwarder), 86 metrics_data_use_forwarder_(metrics_data_use_forwarder),
76 ascriber_(ascriber) 87 ascriber_(ascriber)
77 #if defined(OS_ANDROID) 88 #if defined(OS_ANDROID)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 data_use_user_data->set_app_state(CurrentAppState()); 136 data_use_user_data->set_app_state(CurrentAppState());
126 } 137 }
127 } 138 }
128 139
129 void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request, 140 void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request,
130 const GURL& new_location) { 141 const GURL& new_location) {
131 // Recording data use of request on redirects. 142 // Recording data use of request on redirects.
132 // TODO(rajendrant): May not be needed when http://crbug/651957 is fixed. 143 // TODO(rajendrant): May not be needed when http://crbug/651957 is fixed.
133 UpdateDataUsePrefs(request); 144 UpdateDataUsePrefs(request);
134 ReportServicesMessageSizeUMA(request); 145 ReportServicesMessageSizeUMA(request);
146 if (url_request_classifier_->IsFavIconRequest(request))
147 RecordFavIconDataUse(request);
135 } 148 }
136 149
137 void DataUseMeasurement::OnHeadersReceived( 150 void DataUseMeasurement::OnHeadersReceived(
138 net::URLRequest* request, 151 net::URLRequest* request,
139 const net::HttpResponseHeaders* response_headers) { 152 const net::HttpResponseHeaders* response_headers) {
140 DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>( 153 DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>(
141 request->GetUserData(DataUseUserData::kUserDataKey)); 154 request->GetUserData(DataUseUserData::kUserDataKey));
142 if (data_use_user_data) { 155 if (data_use_user_data) {
143 data_use_user_data->set_content_type( 156 data_use_user_data->set_content_type(
144 url_request_classifier_->GetContentType(*request, *response_headers)); 157 url_request_classifier_->GetContentType(*request, *response_headers));
(...skipping 20 matching lines...) Expand all
165 178
166 void DataUseMeasurement::OnCompleted(const net::URLRequest& request, 179 void DataUseMeasurement::OnCompleted(const net::URLRequest& request,
167 bool started) { 180 bool started) {
168 // TODO(amohammadkhan): Verify that there is no double recording in data use 181 // TODO(amohammadkhan): Verify that there is no double recording in data use
169 // of redirected requests. 182 // of redirected requests.
170 UpdateDataUsePrefs(request); 183 UpdateDataUsePrefs(request);
171 ReportServicesMessageSizeUMA(request); 184 ReportServicesMessageSizeUMA(request);
172 #if defined(OS_ANDROID) 185 #if defined(OS_ANDROID)
173 MaybeRecordNetworkBytesOS(); 186 MaybeRecordNetworkBytesOS();
174 #endif 187 #endif
188 if (url_request_classifier_->IsFavIconRequest(request))
189 RecordFavIconDataUse(request);
175 } 190 }
176 191
177 void DataUseMeasurement::ReportDataUseUMA(const net::URLRequest& request, 192 void DataUseMeasurement::ReportDataUseUMA(const net::URLRequest& request,
178 TrafficDirection dir, 193 TrafficDirection dir,
179 int64_t bytes) { 194 int64_t bytes) {
180 bool is_user_traffic = url_request_classifier_->IsUserRequest(request); 195 bool is_user_traffic = url_request_classifier_->IsUserRequest(request);
181 bool is_connection_cellular = 196 bool is_connection_cellular =
182 net::NetworkChangeNotifier::IsConnectionCellular( 197 net::NetworkChangeNotifier::IsConnectionCellular(
183 net::NetworkChangeNotifier::GetConnectionType()); 198 net::NetworkChangeNotifier::GetConnectionType());
184 199
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 STATIC_HISTOGRAM_POINTER_BLOCK( 453 STATIC_HISTOGRAM_POINTER_BLOCK(
439 "DataUse.ContentType.Services", AddCount(content_type, bytes), 454 "DataUse.ContentType.Services", AddCount(content_type, bytes),
440 base::LinearHistogram::FactoryGet( 455 base::LinearHistogram::FactoryGet(
441 "DataUse.ContentType.Services", 1, DataUseUserData::TYPE_MAX, 456 "DataUse.ContentType.Services", 1, DataUseUserData::TYPE_MAX,
442 DataUseUserData::TYPE_MAX + 1, 457 DataUseUserData::TYPE_MAX + 1,
443 base::HistogramBase::kUmaTargetedHistogramFlag)); 458 base::HistogramBase::kUmaTargetedHistogramFlag));
444 } 459 }
445 } 460 }
446 461
447 } // namespace data_use_measurement 462 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698