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

Side by Side Diff: chrome/browser/net/chrome_network_delegate.cc

Issue 784253002: Measure network error rates with and without data reduction proxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Switched to using LOAD_MAIN_FRAME load flag Created 6 years 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/net/chrome_network_delegate.h" 5 #include "chrome/browser/net/chrome_network_delegate.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/base_paths.h" 11 #include "base/base_paths.h"
12 #include "base/debug/alias.h" 12 #include "base/debug/alias.h"
13 #include "base/debug/dump_without_crashing.h" 13 #include "base/debug/dump_without_crashing.h"
14 #include "base/debug/stack_trace.h" 14 #include "base/debug/stack_trace.h"
15 #include "base/debug/trace_event.h" 15 #include "base/debug/trace_event.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/metrics/histogram.h" 17 #include "base/metrics/histogram.h"
18 #include "base/metrics/sparse_histogram.h"
18 #include "base/metrics/user_metrics.h" 19 #include "base/metrics/user_metrics.h"
19 #include "base/path_service.h" 20 #include "base/path_service.h"
20 #include "base/prefs/pref_member.h" 21 #include "base/prefs/pref_member.h"
21 #include "base/prefs/pref_service.h" 22 #include "base/prefs/pref_service.h"
22 #include "base/profiler/scoped_tracker.h" 23 #include "base/profiler/scoped_tracker.h"
23 #include "base/strings/string_number_conversions.h" 24 #include "base/strings/string_number_conversions.h"
24 #include "base/time/time.h" 25 #include "base/time/time.h"
25 #include "chrome/browser/browser_process.h" 26 #include "chrome/browser/browser_process.h"
26 #include "chrome/browser/content_settings/cookie_settings.h" 27 #include "chrome/browser/content_settings/cookie_settings.h"
27 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 28 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
28 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 29 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
29 #include "chrome/browser/net/chrome_extensions_network_delegate.h" 30 #include "chrome/browser/net/chrome_extensions_network_delegate.h"
30 #include "chrome/browser/net/client_hints.h" 31 #include "chrome/browser/net/client_hints.h"
31 #include "chrome/browser/net/connect_interceptor.h" 32 #include "chrome/browser/net/connect_interceptor.h"
32 #include "chrome/browser/net/safe_search_util.h" 33 #include "chrome/browser/net/safe_search_util.h"
33 #include "chrome/browser/prerender/prerender_tracker.h" 34 #include "chrome/browser/prerender/prerender_tracker.h"
34 #include "chrome/browser/profiles/profile_manager.h" 35 #include "chrome/browser/profiles/profile_manager.h"
35 #include "chrome/browser/task_manager/task_manager.h" 36 #include "chrome/browser/task_manager/task_manager.h"
36 #include "chrome/common/pref_names.h" 37 #include "chrome/common/pref_names.h"
37 #include "components/domain_reliability/monitor.h" 38 #include "components/domain_reliability/monitor.h"
38 #include "content/public/browser/browser_thread.h" 39 #include "content/public/browser/browser_thread.h"
39 #include "content/public/browser/render_frame_host.h" 40 #include "content/public/browser/render_frame_host.h"
40 #include "content/public/browser/render_view_host.h" 41 #include "content/public/browser/render_view_host.h"
41 #include "content/public/browser/resource_request_info.h" 42 #include "content/public/browser/resource_request_info.h"
42 #include "net/base/host_port_pair.h" 43 #include "net/base/host_port_pair.h"
44 #include "net/base/load_flags.h"
43 #include "net/base/net_errors.h" 45 #include "net/base/net_errors.h"
44 #include "net/base/net_log.h" 46 #include "net/base/net_log.h"
45 #include "net/cookies/canonical_cookie.h" 47 #include "net/cookies/canonical_cookie.h"
46 #include "net/cookies/cookie_options.h" 48 #include "net/cookies/cookie_options.h"
47 #include "net/http/http_request_headers.h" 49 #include "net/http/http_request_headers.h"
48 #include "net/http/http_response_headers.h" 50 #include "net/http/http_response_headers.h"
49 #include "net/url_request/url_request.h" 51 #include "net/url_request/url_request.h"
50 #include "net/url_request/url_request_context.h" 52 #include "net/url_request/url_request_context.h"
51 53
52 #if defined(OS_ANDROID) 54 #if defined(OS_ANDROID)
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 reason = DATA_URL; 145 reason = DATA_URL;
144 else if (target_url.SchemeIs(url::kHttpScheme)) 146 else if (target_url.SchemeIs(url::kHttpScheme))
145 reason = HTTP_URL; 147 reason = HTTP_URL;
146 base::debug::Alias(&reason); 148 base::debug::Alias(&reason);
147 base::RecordAction( 149 base::RecordAction(
148 base::UserMetricsAction("Net.URLRequest_StartJob_InvalidReferrer")); 150 base::UserMetricsAction("Net.URLRequest_StartJob_InvalidReferrer"));
149 base::debug::DumpWithoutCrashing(); 151 base::debug::DumpWithoutCrashing();
150 NOTREACHED(); 152 NOTREACHED();
151 } 153 }
152 154
155 // Record network errors that HTTP requests complete with, including OK and
156 // ABORTED.
157 void RecordNetworkErrorHistograms(const net::URLRequest* request) {
158 if (request->url().SchemeIs("http")) {
159 UMA_HISTOGRAM_SPARSE_SLOWLY("Net.HttpRequestCompletionErrorCodes",
160 std::abs(request->status().error()));
161
162 if (request->load_flags() & net::LOAD_MAIN_FRAME) {
163 UMA_HISTOGRAM_SPARSE_SLOWLY(
164 "Net.HttpRequestCompletionErrorCodes.MainFrame",
mmenke 2014/12/12 21:09:30 Not needed. See Net.ErrorCodesForMainFrame3 and N
sclittle 2014/12/12 22:10:20 Please clarify, for "not needed", are you referrin
mmenke 2014/12/15 16:55:43 Ahh...you're right, they're different, I missed th
165 std::abs(request->status().error()));
166 }
167 }
168 }
169
153 } // namespace 170 } // namespace
154 171
155 ChromeNetworkDelegate::ChromeNetworkDelegate( 172 ChromeNetworkDelegate::ChromeNetworkDelegate(
156 extensions::EventRouterForwarder* event_router, 173 extensions::EventRouterForwarder* event_router,
157 BooleanPrefMember* enable_referrers) 174 BooleanPrefMember* enable_referrers)
158 : profile_(NULL), 175 : profile_(NULL),
159 enable_referrers_(enable_referrers), 176 enable_referrers_(enable_referrers),
160 enable_do_not_track_(NULL), 177 enable_do_not_track_(NULL),
161 force_safe_search_(NULL), 178 force_safe_search_(NULL),
162 force_google_safe_search_(NULL), 179 force_google_safe_search_(NULL),
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 FROM_HERE_WITH_EXPLICIT_FUNCTION( 395 FROM_HERE_WITH_EXPLICIT_FUNCTION(
379 "423948 ChromeNetworkDelegate::OnRawBytesRead2")); 396 "423948 ChromeNetworkDelegate::OnRawBytesRead2"));
380 397
381 task_manager->model()->NotifyBytesRead(request, bytes_read); 398 task_manager->model()->NotifyBytesRead(request, bytes_read);
382 } 399 }
383 #endif // defined(ENABLE_TASK_MANAGER) 400 #endif // defined(ENABLE_TASK_MANAGER)
384 } 401 }
385 402
386 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request, 403 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request,
387 bool started) { 404 bool started) {
405 RecordNetworkErrorHistograms(request);
406
388 TRACE_EVENT_ASYNC_END0("net", "URLRequest", request); 407 TRACE_EVENT_ASYNC_END0("net", "URLRequest", request);
389 if (request->status().status() == net::URLRequestStatus::SUCCESS) { 408 if (request->status().status() == net::URLRequestStatus::SUCCESS) {
390 #if defined(OS_ANDROID) 409 #if defined(OS_ANDROID)
391 // For better accuracy, we use the actual bytes read instead of the length 410 // For better accuracy, we use the actual bytes read instead of the length
392 // specified with the Content-Length header, which may be inaccurate, 411 // specified with the Content-Length header, which may be inaccurate,
393 // or missing, as is the case with chunked encoding. 412 // or missing, as is the case with chunked encoding.
394 int64 received_content_length = request->received_response_content_length(); 413 int64 received_content_length = request->received_response_content_length();
395 414
396 if (precache::PrecacheManager::IsPrecachingEnabled()) { 415 if (precache::PrecacheManager::IsPrecachingEnabled()) {
397 // Record precache metrics when a fetch is completed successfully, if 416 // Record precache metrics when a fetch is completed successfully, if
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader( 626 bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader(
608 const net::URLRequest& request, 627 const net::URLRequest& request,
609 const GURL& target_url, 628 const GURL& target_url,
610 const GURL& referrer_url) const { 629 const GURL& referrer_url) const {
611 base::debug::StackTrace callstack; 630 base::debug::StackTrace callstack;
612 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 631 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
613 base::Bind(&ReportInvalidReferrerSend, target_url, 632 base::Bind(&ReportInvalidReferrerSend, target_url,
614 referrer_url, callstack)); 633 referrer_url, callstack));
615 return true; 634 return true;
616 } 635 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698