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

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

Issue 734263003: Move data reduction proxy logic out of chrome and android webview network delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test fix 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
(...skipping 16 matching lines...) Expand all
27 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 27 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
28 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 28 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
29 #include "chrome/browser/net/chrome_extensions_network_delegate.h" 29 #include "chrome/browser/net/chrome_extensions_network_delegate.h"
30 #include "chrome/browser/net/client_hints.h" 30 #include "chrome/browser/net/client_hints.h"
31 #include "chrome/browser/net/connect_interceptor.h" 31 #include "chrome/browser/net/connect_interceptor.h"
32 #include "chrome/browser/net/safe_search_util.h" 32 #include "chrome/browser/net/safe_search_util.h"
33 #include "chrome/browser/prerender/prerender_tracker.h" 33 #include "chrome/browser/prerender/prerender_tracker.h"
34 #include "chrome/browser/profiles/profile_manager.h" 34 #include "chrome/browser/profiles/profile_manager.h"
35 #include "chrome/browser/task_manager/task_manager.h" 35 #include "chrome/browser/task_manager/task_manager.h"
36 #include "chrome/common/pref_names.h" 36 #include "chrome/common/pref_names.h"
37 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_auth _request_handler.h"
38 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_metr ics.h"
39 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_stat istics_prefs.h"
40 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_usag e_stats.h"
41 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param s.h"
42 #include "components/domain_reliability/monitor.h" 37 #include "components/domain_reliability/monitor.h"
43 #include "content/public/browser/browser_thread.h" 38 #include "content/public/browser/browser_thread.h"
44 #include "content/public/browser/render_frame_host.h" 39 #include "content/public/browser/render_frame_host.h"
45 #include "content/public/browser/render_view_host.h" 40 #include "content/public/browser/render_view_host.h"
46 #include "content/public/browser/resource_request_info.h" 41 #include "content/public/browser/resource_request_info.h"
47 #include "net/base/host_port_pair.h" 42 #include "net/base/host_port_pair.h"
48 #include "net/base/net_errors.h" 43 #include "net/base/net_errors.h"
49 #include "net/base/net_log.h" 44 #include "net/base/net_log.h"
50 #include "net/cookies/canonical_cookie.h" 45 #include "net/cookies/canonical_cookie.h"
51 #include "net/cookies/cookie_options.h" 46 #include "net/cookies/cookie_options.h"
52 #include "net/http/http_request_headers.h" 47 #include "net/http/http_request_headers.h"
53 #include "net/http/http_response_headers.h" 48 #include "net/http/http_response_headers.h"
54 #include "net/proxy/proxy_config.h"
55 #include "net/proxy/proxy_info.h"
56 #include "net/proxy/proxy_retry_info.h"
57 #include "net/proxy/proxy_server.h"
58 #include "net/url_request/url_request.h" 49 #include "net/url_request/url_request.h"
59 #include "net/url_request/url_request_context.h" 50 #include "net/url_request/url_request_context.h"
60 51
61 #if defined(OS_ANDROID) 52 #if defined(OS_ANDROID)
62 #include "chrome/browser/io_thread.h" 53 #include "chrome/browser/io_thread.h"
63 #include "components/precache/content/precache_manager.h" 54 #include "components/precache/content/precache_manager.h"
64 #include "components/precache/content/precache_manager_factory.h" 55 #include "components/precache/content/precache_manager_factory.h"
65 #endif 56 #endif
66 57
67 #if defined(OS_CHROMEOS) 58 #if defined(OS_CHROMEOS)
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 void ForceGoogleSafeSearchCallbackWrapper( 99 void ForceGoogleSafeSearchCallbackWrapper(
109 const net::CompletionCallback& callback, 100 const net::CompletionCallback& callback,
110 net::URLRequest* request, 101 net::URLRequest* request,
111 GURL* new_url, 102 GURL* new_url,
112 int rv) { 103 int rv) {
113 if (rv == net::OK && new_url->is_empty()) 104 if (rv == net::OK && new_url->is_empty())
114 safe_search_util::ForceGoogleSafeSearch(request, new_url); 105 safe_search_util::ForceGoogleSafeSearch(request, new_url);
115 callback.Run(rv); 106 callback.Run(rv);
116 } 107 }
117 108
118 void UpdateContentLengthPrefs(
119 int received_content_length,
120 int original_content_length,
121 data_reduction_proxy::DataReductionProxyRequestType request_type,
122 Profile* profile,
123 data_reduction_proxy::DataReductionProxyStatisticsPrefs* statistics_prefs) {
124 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
125 DCHECK_GE(received_content_length, 0);
126 DCHECK_GE(original_content_length, 0);
127
128 // Can be NULL in a unit test.
129 if (!g_browser_process)
130 return;
131
132 // Ignore off-the-record data.
133 if (!g_browser_process->profile_manager()->IsValidProfile(profile) ||
134 profile->IsOffTheRecord()) {
135 return;
136 }
137 data_reduction_proxy::UpdateContentLengthPrefs(
138 received_content_length,
139 original_content_length,
140 profile->GetPrefs(),
141 request_type, statistics_prefs);
142 }
143
144 void StoreAccumulatedContentLength(
145 int received_content_length,
146 int original_content_length,
147 data_reduction_proxy::DataReductionProxyRequestType request_type,
148 Profile* profile,
149 data_reduction_proxy::DataReductionProxyStatisticsPrefs* statistics_prefs) {
150 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
151 base::Bind(&UpdateContentLengthPrefs,
152 received_content_length,
153 original_content_length,
154 request_type,
155 profile,
156 statistics_prefs));
157 }
158
159 void RecordContentLengthHistograms(
160 int64 received_content_length,
161 int64 original_content_length,
162 const base::TimeDelta& freshness_lifetime) {
163 // Add the current resource to these histograms only when a valid
164 // X-Original-Content-Length header is present.
165 if (original_content_length >= 0) {
166 UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthWithValidOCL",
167 received_content_length);
168 UMA_HISTOGRAM_COUNTS("Net.HttpOriginalContentLengthWithValidOCL",
169 original_content_length);
170 UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthDifferenceWithValidOCL",
171 original_content_length - received_content_length);
172 } else {
173 // Presume the original content length is the same as the received content
174 // length if the X-Original-Content-Header is not present.
175 original_content_length = received_content_length;
176 }
177 UMA_HISTOGRAM_COUNTS("Net.HttpContentLength", received_content_length);
178 UMA_HISTOGRAM_COUNTS("Net.HttpOriginalContentLength",
179 original_content_length);
180 UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthDifference",
181 original_content_length - received_content_length);
182 UMA_HISTOGRAM_CUSTOM_COUNTS("Net.HttpContentFreshnessLifetime",
183 freshness_lifetime.InSeconds(),
184 base::TimeDelta::FromHours(1).InSeconds(),
185 base::TimeDelta::FromDays(30).InSeconds(),
186 100);
187 if (freshness_lifetime.InSeconds() <= 0)
188 return;
189 UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthCacheable",
190 received_content_length);
191 if (freshness_lifetime.InHours() < 4)
192 return;
193 UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthCacheable4Hours",
194 received_content_length);
195
196 if (freshness_lifetime.InHours() < 24)
197 return;
198 UMA_HISTOGRAM_COUNTS("Net.HttpContentLengthCacheable24Hours",
199 received_content_length);
200 }
201
202 #if defined(OS_ANDROID) 109 #if defined(OS_ANDROID)
203 void RecordPrecacheStatsOnUIThread(const GURL& url, 110 void RecordPrecacheStatsOnUIThread(const GURL& url,
204 const base::Time& fetch_time, int64 size, 111 const base::Time& fetch_time, int64 size,
205 bool was_cached, void* profile_id) { 112 bool was_cached, void* profile_id) {
206 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 113 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
207 114
208 Profile* profile = reinterpret_cast<Profile*>(profile_id); 115 Profile* profile = reinterpret_cast<Profile*>(profile_id);
209 if (!g_browser_process->profile_manager()->IsValidProfile(profile)) { 116 if (!g_browser_process->profile_manager()->IsValidProfile(profile)) {
210 return; 117 return;
211 } 118 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 154
248 ChromeNetworkDelegate::ChromeNetworkDelegate( 155 ChromeNetworkDelegate::ChromeNetworkDelegate(
249 extensions::EventRouterForwarder* event_router, 156 extensions::EventRouterForwarder* event_router,
250 BooleanPrefMember* enable_referrers) 157 BooleanPrefMember* enable_referrers)
251 : profile_(NULL), 158 : profile_(NULL),
252 enable_referrers_(enable_referrers), 159 enable_referrers_(enable_referrers),
253 enable_do_not_track_(NULL), 160 enable_do_not_track_(NULL),
254 force_safe_search_(NULL), 161 force_safe_search_(NULL),
255 force_google_safe_search_(NULL), 162 force_google_safe_search_(NULL),
256 force_youtube_safety_mode_(NULL), 163 force_youtube_safety_mode_(NULL),
257 data_reduction_proxy_enabled_(NULL),
258 #if defined(ENABLE_CONFIGURATION_POLICY) 164 #if defined(ENABLE_CONFIGURATION_POLICY)
259 url_blacklist_manager_(NULL), 165 url_blacklist_manager_(NULL),
260 #endif 166 #endif
261 domain_reliability_monitor_(NULL), 167 domain_reliability_monitor_(NULL),
262 received_content_length_(0),
263 original_content_length_(0),
264 first_request_(true), 168 first_request_(true),
265 prerender_tracker_(NULL), 169 prerender_tracker_(NULL) {
266 data_reduction_proxy_params_(NULL),
267 data_reduction_proxy_usage_stats_(NULL),
268 data_reduction_proxy_auth_request_handler_(NULL),
269 data_reduction_proxy_statistics_prefs_(NULL) {
270 DCHECK(enable_referrers); 170 DCHECK(enable_referrers);
271 extensions_delegate_.reset( 171 extensions_delegate_.reset(
272 ChromeExtensionsNetworkDelegate::Create(event_router)); 172 ChromeExtensionsNetworkDelegate::Create(event_router));
273 } 173 }
274 174
275 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} 175 ChromeNetworkDelegate::~ChromeNetworkDelegate() {}
276 176
277 void ChromeNetworkDelegate::set_extension_info_map( 177 void ChromeNetworkDelegate::set_extension_info_map(
278 extensions::InfoMap* extension_info_map) { 178 extensions::InfoMap* extension_info_map) {
279 extensions_delegate_->set_extension_info_map(extension_info_map); 179 extensions_delegate_->set_extension_info_map(extension_info_map);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 force_youtube_safety_mode->MoveToThread( 240 force_youtube_safety_mode->MoveToThread(
341 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); 241 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO));
342 } 242 }
343 } 243 }
344 244
345 // static 245 // static
346 void ChromeNetworkDelegate::AllowAccessToAllFiles() { 246 void ChromeNetworkDelegate::AllowAccessToAllFiles() {
347 g_allow_file_access_ = true; 247 g_allow_file_access_ = true;
348 } 248 }
349 249
350 // static
351 // TODO(megjablon): Use data_reduction_proxy_delayed_pref_service to read prefs.
352 // Until updated the pref values may be up to an hour behind on desktop.
353 base::Value* ChromeNetworkDelegate::HistoricNetworkStatsInfoToValue(
354 PrefService* prefs) {
355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
356 int64 total_received = prefs->GetInt64(
357 data_reduction_proxy::prefs::kHttpReceivedContentLength);
358 int64 total_original = prefs->GetInt64(
359 data_reduction_proxy::prefs::kHttpOriginalContentLength);
360
361 base::DictionaryValue* dict = new base::DictionaryValue();
362 // Use strings to avoid overflow. base::Value only supports 32-bit integers.
363 dict->SetString("historic_received_content_length",
364 base::Int64ToString(total_received));
365 dict->SetString("historic_original_content_length",
366 base::Int64ToString(total_original));
367 return dict;
368 }
369
370 base::Value* ChromeNetworkDelegate::SessionNetworkStatsInfoToValue() const {
371 base::DictionaryValue* dict = new base::DictionaryValue();
372 // Use strings to avoid overflow. base::Value only supports 32-bit integers.
373 dict->SetString("session_received_content_length",
374 base::Int64ToString(received_content_length_));
375 dict->SetString("session_original_content_length",
376 base::Int64ToString(original_content_length_));
377 return dict;
378 }
379
380 int ChromeNetworkDelegate::OnBeforeURLRequest( 250 int ChromeNetworkDelegate::OnBeforeURLRequest(
381 net::URLRequest* request, 251 net::URLRequest* request,
382 const net::CompletionCallback& callback, 252 const net::CompletionCallback& callback,
383 GURL* new_url) { 253 GURL* new_url) {
384 #if defined(ENABLE_CONFIGURATION_POLICY) 254 #if defined(ENABLE_CONFIGURATION_POLICY)
385 // TODO(joaodasilva): This prevents extensions from seeing URLs that are 255 // TODO(joaodasilva): This prevents extensions from seeing URLs that are
386 // blocked. However, an extension might redirect the request to another URL, 256 // blocked. However, an extension might redirect the request to another URL,
387 // which is not blocked. 257 // which is not blocked.
388 int error = net::ERR_BLOCKED_BY_ADMINISTRATOR; 258 int error = net::ERR_BLOCKED_BY_ADMINISTRATOR;
389 if (url_blacklist_manager_ && 259 if (url_blacklist_manager_ &&
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 297
428 if (force_safe_search && rv == net::OK && new_url->is_empty()) 298 if (force_safe_search && rv == net::OK && new_url->is_empty())
429 safe_search_util::ForceGoogleSafeSearch(request, new_url); 299 safe_search_util::ForceGoogleSafeSearch(request, new_url);
430 300
431 if (connect_interceptor_) 301 if (connect_interceptor_)
432 connect_interceptor_->WitnessURLRequest(request); 302 connect_interceptor_->WitnessURLRequest(request);
433 303
434 return rv; 304 return rv;
435 } 305 }
436 306
437 void ChromeNetworkDelegate::OnResolveProxy(
438 const GURL& url,
439 int load_flags,
440 const net::ProxyService& proxy_service,
441 net::ProxyInfo* result) {
442 if (!on_resolve_proxy_handler_.is_null() &&
443 !proxy_config_getter_.is_null()) {
444 on_resolve_proxy_handler_.Run(url, load_flags,
445 proxy_config_getter_.Run(),
446 proxy_service.config(),
447 proxy_service.proxy_retry_info(),
448 data_reduction_proxy_params_, result);
449 }
450 }
451
452 void ChromeNetworkDelegate::OnProxyFallback(const net::ProxyServer& bad_proxy,
453 int net_error) {
454 if (data_reduction_proxy_usage_stats_) {
455 data_reduction_proxy_usage_stats_->OnProxyFallback(
456 bad_proxy, net_error);
457 }
458 }
459
460 int ChromeNetworkDelegate::OnBeforeSendHeaders( 307 int ChromeNetworkDelegate::OnBeforeSendHeaders(
461 net::URLRequest* request, 308 net::URLRequest* request,
462 const net::CompletionCallback& callback, 309 const net::CompletionCallback& callback,
463 net::HttpRequestHeaders* headers) { 310 net::HttpRequestHeaders* headers) {
464 bool force_safety_mode = 311 bool force_safety_mode =
465 (force_safe_search_ && force_safe_search_->GetValue()) || 312 (force_safe_search_ && force_safe_search_->GetValue()) ||
466 (force_youtube_safety_mode_ && force_youtube_safety_mode_->GetValue()); 313 (force_youtube_safety_mode_ && force_youtube_safety_mode_->GetValue());
467 if (force_safety_mode) 314 if (force_safety_mode)
468 safe_search_util::ForceYouTubeSafetyMode(request, headers); 315 safe_search_util::ForceYouTubeSafetyMode(request, headers);
469 316
470 TRACE_EVENT_ASYNC_STEP_PAST0("net", "URLRequest", request, "SendRequest"); 317 TRACE_EVENT_ASYNC_STEP_PAST0("net", "URLRequest", request, "SendRequest");
471 return extensions_delegate_->OnBeforeSendHeaders(request, callback, headers); 318 return extensions_delegate_->OnBeforeSendHeaders(request, callback, headers);
472 } 319 }
473 320
474 void ChromeNetworkDelegate::OnBeforeSendProxyHeaders(
475 net::URLRequest* request,
476 const net::ProxyInfo& proxy_info,
477 net::HttpRequestHeaders* headers) {
478 if (data_reduction_proxy_auth_request_handler_) {
479 data_reduction_proxy_auth_request_handler_->MaybeAddRequestHeader(
480 request, proxy_info.proxy_server(), headers);
481 }
482 }
483
484 void ChromeNetworkDelegate::OnSendHeaders( 321 void ChromeNetworkDelegate::OnSendHeaders(
485 net::URLRequest* request, 322 net::URLRequest* request,
486 const net::HttpRequestHeaders& headers) { 323 const net::HttpRequestHeaders& headers) {
487 extensions_delegate_->OnSendHeaders(request, headers); 324 extensions_delegate_->OnSendHeaders(request, headers);
488 } 325 }
489 326
490 int ChromeNetworkDelegate::OnHeadersReceived( 327 int ChromeNetworkDelegate::OnHeadersReceived(
491 net::URLRequest* request, 328 net::URLRequest* request,
492 const net::CompletionCallback& callback, 329 const net::CompletionCallback& callback,
493 const net::HttpResponseHeaders* original_response_headers, 330 const net::HttpResponseHeaders* original_response_headers,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 FROM_HERE_WITH_EXPLICIT_FUNCTION( 378 FROM_HERE_WITH_EXPLICIT_FUNCTION(
542 "423948 ChromeNetworkDelegate::OnRawBytesRead2")); 379 "423948 ChromeNetworkDelegate::OnRawBytesRead2"));
543 380
544 task_manager->model()->NotifyBytesRead(request, bytes_read); 381 task_manager->model()->NotifyBytesRead(request, bytes_read);
545 } 382 }
546 #endif // defined(ENABLE_TASK_MANAGER) 383 #endif // defined(ENABLE_TASK_MANAGER)
547 } 384 }
548 385
549 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request, 386 void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request,
550 bool started) { 387 bool started) {
551 if (data_reduction_proxy_usage_stats_)
552 data_reduction_proxy_usage_stats_->OnUrlRequestCompleted(request, started);
553
554 TRACE_EVENT_ASYNC_END0("net", "URLRequest", request); 388 TRACE_EVENT_ASYNC_END0("net", "URLRequest", request);
555 if (request->status().status() == net::URLRequestStatus::SUCCESS) { 389 if (request->status().status() == net::URLRequestStatus::SUCCESS) {
390 #if defined(OS_ANDROID)
556 // For better accuracy, we use the actual bytes read instead of the length 391 // For better accuracy, we use the actual bytes read instead of the length
557 // specified with the Content-Length header, which may be inaccurate, 392 // specified with the Content-Length header, which may be inaccurate,
558 // or missing, as is the case with chunked encoding. 393 // or missing, as is the case with chunked encoding.
559 int64 received_content_length = request->received_response_content_length(); 394 int64 received_content_length = request->received_response_content_length();
560 395
561 #if defined(OS_ANDROID)
562 if (precache::PrecacheManager::IsPrecachingEnabled()) { 396 if (precache::PrecacheManager::IsPrecachingEnabled()) {
563 // Record precache metrics when a fetch is completed successfully, if 397 // Record precache metrics when a fetch is completed successfully, if
564 // precaching is enabled. 398 // precaching is enabled.
565 BrowserThread::PostTask( 399 BrowserThread::PostTask(
566 BrowserThread::UI, FROM_HERE, 400 BrowserThread::UI, FROM_HERE,
567 base::Bind(&RecordPrecacheStatsOnUIThread, request->url(), 401 base::Bind(&RecordPrecacheStatsOnUIThread, request->url(),
568 base::Time::Now(), received_content_length, 402 base::Time::Now(), received_content_length,
569 request->was_cached(), profile_)); 403 request->was_cached(), profile_));
570 } 404 }
571 #endif // defined(OS_ANDROID) 405 #endif // defined(OS_ANDROID)
572
573 // Only record for http or https urls.
574 bool is_http = request->url().SchemeIs("http");
575 bool is_https = request->url().SchemeIs("https");
576
577 if (!request->was_cached() && // Don't record cached content
578 received_content_length && // Zero-byte responses aren't useful.
579 (is_http || is_https)) { // Only record for HTTP or HTTPS urls.
580 int64 original_content_length =
581 request->response_info().headers->GetInt64HeaderValue(
582 "x-original-content-length");
583 data_reduction_proxy::DataReductionProxyRequestType request_type =
584 data_reduction_proxy::GetDataReductionProxyRequestType(request);
585
586 base::TimeDelta freshness_lifetime =
587 request->response_info().headers->GetFreshnessLifetimes(
588 request->response_info().response_time).freshness;
589 int64 adjusted_original_content_length =
590 data_reduction_proxy::GetAdjustedOriginalContentLength(
591 request_type, original_content_length,
592 received_content_length);
593 AccumulateContentLength(received_content_length,
594 adjusted_original_content_length,
595 request_type);
596 RecordContentLengthHistograms(received_content_length,
597 original_content_length,
598 freshness_lifetime);
599
600 if (data_reduction_proxy_enabled_ &&
601 data_reduction_proxy_usage_stats_ &&
602 !proxy_config_getter_.is_null()) {
603 data_reduction_proxy_usage_stats_->RecordBytesHistograms(
604 request,
605 *data_reduction_proxy_enabled_,
606 proxy_config_getter_.Run());
607 }
608 DVLOG(2) << __FUNCTION__
609 << " received content length: " << received_content_length
610 << " original content length: " << original_content_length
611 << " url: " << request->url();
612 }
613
614 extensions_delegate_->OnCompleted(request, started); 406 extensions_delegate_->OnCompleted(request, started);
615 } else if (request->status().status() == net::URLRequestStatus::FAILED || 407 } else if (request->status().status() == net::URLRequestStatus::FAILED ||
616 request->status().status() == net::URLRequestStatus::CANCELED) { 408 request->status().status() == net::URLRequestStatus::CANCELED) {
617 extensions_delegate_->OnCompleted(request, started); 409 extensions_delegate_->OnCompleted(request, started);
618 } else { 410 } else {
619 NOTREACHED(); 411 NOTREACHED();
620 } 412 }
621 if (domain_reliability_monitor_) 413 if (domain_reliability_monitor_)
622 domain_reliability_monitor_->OnCompleted(request, started); 414 domain_reliability_monitor_->OnCompleted(request, started);
623 extensions_delegate_->ForwardProxyErrors(request); 415 extensions_delegate_->ForwardProxyErrors(request);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader( 607 bool ChromeNetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader(
816 const net::URLRequest& request, 608 const net::URLRequest& request,
817 const GURL& target_url, 609 const GURL& target_url,
818 const GURL& referrer_url) const { 610 const GURL& referrer_url) const {
819 base::debug::StackTrace callstack; 611 base::debug::StackTrace callstack;
820 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 612 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
821 base::Bind(&ReportInvalidReferrerSend, target_url, 613 base::Bind(&ReportInvalidReferrerSend, target_url,
822 referrer_url, callstack)); 614 referrer_url, callstack));
823 return true; 615 return true;
824 } 616 }
825
826 void ChromeNetworkDelegate::AccumulateContentLength(
827 int64 received_content_length,
828 int64 original_content_length,
829 data_reduction_proxy::DataReductionProxyRequestType request_type) {
830 DCHECK_GE(received_content_length, 0);
831 DCHECK_GE(original_content_length, 0);
832 if (data_reduction_proxy_statistics_prefs_) {
833 StoreAccumulatedContentLength(received_content_length,
834 original_content_length,
835 request_type,
836 reinterpret_cast<Profile*>(profile_),
837 data_reduction_proxy_statistics_prefs_);
838 }
839 received_content_length_ += received_content_length;
840 original_content_length_ += original_content_length;
841 }
OLDNEW
« no previous file with comments | « chrome/browser/net/chrome_network_delegate.h ('k') | chrome/browser/profiles/off_the_record_profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698