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

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

Issue 2764893003: Record data use of favicon (Closed)
Patch Set: fix tryjob Created 3 years, 8 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.status().is_success() &&
74 request.GetResponseCode() != net::HTTP_OK) {
75 UMA_HISTOGRAM_COUNTS_100000("DataUse.FavIcon.Downstream.Non200Response",
76 request.GetTotalReceivedBytes());
77 }
78 }
79
68 } // namespace 80 } // namespace
69 81
70 DataUseMeasurement::DataUseMeasurement( 82 DataUseMeasurement::DataUseMeasurement(
71 std::unique_ptr<URLRequestClassifier> url_request_classifier, 83 std::unique_ptr<URLRequestClassifier> url_request_classifier,
72 const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder, 84 const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder,
73 DataUseAscriber* ascriber) 85 DataUseAscriber* ascriber)
74 : url_request_classifier_(std::move(url_request_classifier)), 86 : url_request_classifier_(std::move(url_request_classifier)),
75 metrics_data_use_forwarder_(metrics_data_use_forwarder), 87 metrics_data_use_forwarder_(metrics_data_use_forwarder),
76 ascriber_(ascriber) 88 ascriber_(ascriber)
77 #if defined(OS_ANDROID) 89 #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()); 137 data_use_user_data->set_app_state(CurrentAppState());
126 } 138 }
127 } 139 }
128 140
129 void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request, 141 void DataUseMeasurement::OnBeforeRedirect(const net::URLRequest& request,
130 const GURL& new_location) { 142 const GURL& new_location) {
131 // Recording data use of request on redirects. 143 // Recording data use of request on redirects.
132 // TODO(rajendrant): May not be needed when http://crbug/651957 is fixed. 144 // TODO(rajendrant): May not be needed when http://crbug/651957 is fixed.
133 UpdateDataUsePrefs(request); 145 UpdateDataUsePrefs(request);
134 ReportServicesMessageSizeUMA(request); 146 ReportServicesMessageSizeUMA(request);
147 if (url_request_classifier_->IsFavIconRequest(request))
148 RecordFavIconDataUse(request);
135 } 149 }
136 150
137 void DataUseMeasurement::OnHeadersReceived( 151 void DataUseMeasurement::OnHeadersReceived(
138 net::URLRequest* request, 152 net::URLRequest* request,
139 const net::HttpResponseHeaders* response_headers) { 153 const net::HttpResponseHeaders* response_headers) {
140 DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>( 154 DataUseUserData* data_use_user_data = reinterpret_cast<DataUseUserData*>(
141 request->GetUserData(DataUseUserData::kUserDataKey)); 155 request->GetUserData(DataUseUserData::kUserDataKey));
142 if (data_use_user_data) { 156 if (data_use_user_data) {
143 data_use_user_data->set_content_type( 157 data_use_user_data->set_content_type(
144 url_request_classifier_->GetContentType(*request, *response_headers)); 158 url_request_classifier_->GetContentType(*request, *response_headers));
(...skipping 21 matching lines...) Expand all
166 void DataUseMeasurement::OnCompleted(const net::URLRequest& request, 180 void DataUseMeasurement::OnCompleted(const net::URLRequest& request,
167 bool started) { 181 bool started) {
168 // TODO(amohammadkhan): Verify that there is no double recording in data use 182 // TODO(amohammadkhan): Verify that there is no double recording in data use
169 // of redirected requests. 183 // of redirected requests.
170 UpdateDataUsePrefs(request); 184 UpdateDataUsePrefs(request);
171 ReportServicesMessageSizeUMA(request); 185 ReportServicesMessageSizeUMA(request);
172 RecordPageTransitionUMA(request); 186 RecordPageTransitionUMA(request);
173 #if defined(OS_ANDROID) 187 #if defined(OS_ANDROID)
174 MaybeRecordNetworkBytesOS(); 188 MaybeRecordNetworkBytesOS();
175 #endif 189 #endif
190 if (url_request_classifier_->IsFavIconRequest(request))
191 RecordFavIconDataUse(request);
176 } 192 }
177 193
178 void DataUseMeasurement::ReportDataUseUMA(const net::URLRequest& request, 194 void DataUseMeasurement::ReportDataUseUMA(const net::URLRequest& request,
179 TrafficDirection dir, 195 TrafficDirection dir,
180 int64_t bytes) { 196 int64_t bytes) {
181 bool is_user_traffic = url_request_classifier_->IsUserRequest(request); 197 bool is_user_traffic = url_request_classifier_->IsUserRequest(request);
182 bool is_connection_cellular = 198 bool is_connection_cellular =
183 net::NetworkChangeNotifier::IsConnectionCellular( 199 net::NetworkChangeNotifier::IsConnectionCellular(
184 net::NetworkChangeNotifier::GetConnectionType()); 200 net::NetworkChangeNotifier::GetConnectionType());
185 201
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 return; 467 return;
452 468
453 const DataUseRecorder* recorder = ascriber_->GetDataUseRecorder(request); 469 const DataUseRecorder* recorder = ascriber_->GetDataUseRecorder(request);
454 if (recorder) { 470 if (recorder) {
455 url_request_classifier_->RecordPageTransitionUMA( 471 url_request_classifier_->RecordPageTransitionUMA(
456 recorder->page_transition(), request.GetTotalReceivedBytes()); 472 recorder->page_transition(), request.GetTotalReceivedBytes());
457 } 473 }
458 } 474 }
459 475
460 } // namespace data_use_measurement 476 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698