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

Side by Side Diff: components/data_reduction_proxy/browser/data_reduction_proxy_metrics.cc

Issue 390533003: Bypassed Bytes UMAs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed bengr comments Created 6 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_reduction_proxy/browser/data_reduction_proxy_metrics.h " 5 #include "components/data_reduction_proxy/browser/data_reduction_proxy_metrics.h "
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/prefs/scoped_user_pref_update.h" 9 #include "base/prefs/scoped_user_pref_update.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 } 283 }
284 int64 GetReceivedListPrefValue(size_t index) { 284 int64 GetReceivedListPrefValue(size_t index) {
285 return received_.GetListPrefValue(index); 285 return received_.GetListPrefValue(index);
286 } 286 }
287 287
288 private: 288 private:
289 DailyContentLengthUpdate original_; 289 DailyContentLengthUpdate original_;
290 DailyContentLengthUpdate received_; 290 DailyContentLengthUpdate received_;
291 }; 291 };
292 292
293 // Returns true if the request is bypassed by all configured data reduction
294 // proxies. It returns the bypass delay in delay_seconds (if not NULL). If
295 // the request is bypassed by more than one proxy, delay_seconds returns
296 // shortest delay.
297 bool IsBypassRequest(const net::URLRequest* request, int64* delay_seconds) {
298 // TODO(bengr): Add support for other data reduction proxy configurations.
299 #if defined(SPDY_PROXY_AUTH_ORIGIN)
300 DataReductionProxyParams params(
301 DataReductionProxyParams::kAllowed |
302 DataReductionProxyParams::kFallbackAllowed |
303 DataReductionProxyParams::kPromoAllowed);
304 DataReductionProxyParams::DataReductionProxyList proxies =
305 params.GetAllowedProxies();
306 if (proxies.size() == 0)
307 return false;
308
309 if (request == NULL || request->context() == NULL ||
310 request->context()->proxy_service() == NULL) {
311 return false;
312 }
313
314 const net::ProxyRetryInfoMap& retry_map =
315 request->context()->proxy_service()->proxy_retry_info();
316 if (retry_map.size() == 0)
317 return false;
318
319 int64 shortest_delay = 0;
320 // The request is bypassed if all configured proxies are in the retry map.
321 for (size_t i = 0; i < proxies.size(); ++i) {
322 std::string proxy = net::HostPortPair::FromURL(proxies[i]).ToString();
323 // The retry list has the scheme prefix for https but not for http.
324 if (proxies[i].SchemeIs("https"))
325 proxy = std::string("https://") + proxy;
326
327 net::ProxyRetryInfoMap::const_iterator found = retry_map.find(proxy);
328 if (found == retry_map.end())
329 return false;
330 if (shortest_delay == 0 ||
331 shortest_delay > found->second.current_delay.InSeconds()) {
332 shortest_delay = found->second.current_delay.InSeconds();
333 }
334 }
335 if (delay_seconds != NULL)
336 *delay_seconds = shortest_delay;
337 return true;
338 #else
339 return false;
340 #endif
341 }
342
343 } // namespace 293 } // namespace
344 294
345 DataReductionProxyRequestType GetDataReductionProxyRequestType( 295 DataReductionProxyRequestType GetDataReductionProxyRequestType(
346 const net::URLRequest* request) { 296 const net::URLRequest* request) {
347 if (request->url().SchemeIs("https")) 297 if (request->url().SchemeIs("https"))
348 return HTTPS; 298 return HTTPS;
349 if (!request->url().SchemeIs("http")) { 299 if (!request->url().SchemeIs("http")) {
350 NOTREACHED(); 300 NOTREACHED();
351 return UNKNOWN_TYPE; 301 return UNKNOWN_TYPE;
352 } 302 }
353 int64 bypass_delay = 0; 303 DataReductionProxyParams params(
354 if (IsBypassRequest(request, &bypass_delay)) { 304 DataReductionProxyParams::kAllowed |
355 return (bypass_delay > kLongBypassDelayInSeconds) ? 305 DataReductionProxyParams::kFallbackAllowed |
306 DataReductionProxyParams::kPromoAllowed);
307 base::TimeDelta bypass_delay;
308 if (params.AreDataReductionProxiesBypassed(*request, &bypass_delay)) {
309 return (bypass_delay >
310 base::TimeDelta::FromSeconds(kLongBypassDelayInSeconds)) ?
bengr 2014/07/22 16:59:44 I don't think the ternary buys anything. Rewrite a
megjablon 2014/07/22 18:40:45 Done.
356 LONG_BYPASS : SHORT_BYPASS; 311 LONG_BYPASS : SHORT_BYPASS;
357 } 312 }
358 if (request->response_info().headers && 313 if (request->response_info().headers &&
359 HasDataReductionProxyViaHeader(request->response_info().headers)) { 314 HasDataReductionProxyViaHeader(request->response_info().headers)) {
360 return VIA_DATA_REDUCTION_PROXY; 315 return VIA_DATA_REDUCTION_PROXY;
361 } 316 }
362 return UNKNOWN_TYPE; 317 return UNKNOWN_TYPE;
363 } 318 }
364 319
365 int64 GetAdjustedOriginalContentLength( 320 int64 GetAdjustedOriginalContentLength(
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 UpdateContentLengthPrefsForDataReductionProxy( 489 UpdateContentLengthPrefsForDataReductionProxy(
535 received_content_length, 490 received_content_length,
536 original_content_length, 491 original_content_length,
537 with_data_reduction_proxy_enabled, 492 with_data_reduction_proxy_enabled,
538 request_type, 493 request_type,
539 base::Time::Now(), 494 base::Time::Now(),
540 prefs); 495 prefs);
541 } 496 }
542 497
543 } // namespace data_reduction_proxy 498 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698