blob: 192b9e37cefe93ef4750a970d949b6780a7f7f54 [file] [log] [blame]
[email protected]9045b8822012-01-13 20:35:351// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]0651b812011-02-24 00:22:502// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/base/network_delegate.h"
6
7#include "base/logging.h"
vadimt844c15572014-11-04 22:55:578#include "base/profiler/scoped_tracker.h"
ssid6d6b40102016-04-05 18:59:569#include "base/trace_event/trace_event.h"
[email protected]9c8ae8c2012-03-09 13:13:3510#include "net/base/load_flags.h"
[email protected]c6c6e5652013-10-29 02:40:3011#include "net/base/net_errors.h"
[email protected]597a1ab2014-06-26 08:12:2712#include "net/proxy/proxy_info.h"
[email protected]9c8ae8c2012-03-09 13:13:3513#include "net/url_request/url_request.h"
[email protected]0651b812011-02-24 00:22:5014
15namespace net {
16
[email protected]084262c2011-12-01 21:12:4717int NetworkDelegate::NotifyBeforeURLRequest(
18 URLRequest* request, const CompletionCallback& callback,
19 GURL* new_url) {
ssid6d6b40102016-04-05 18:59:5620 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
21 "NetworkDelegate::NotifyBeforeURLRequest");
[email protected]0651b812011-02-24 00:22:5022 DCHECK(CalledOnValidThread());
23 DCHECK(request);
[email protected]084262c2011-12-01 21:12:4724 DCHECK(!callback.is_null());
pkasting941842c2015-04-11 01:51:3025 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
vadimt844c15572014-11-04 22:55:5726 tracked_objects::ScopedTracker tracking_profile(
27 FROM_HERE_WITH_EXPLICIT_FUNCTION(
pkasting941842c2015-04-11 01:51:3028 "475753 NetworkDelegate::OnBeforeURLRequest"));
[email protected]4c76d7c2011-04-15 19:14:1229 return OnBeforeURLRequest(request, callback, new_url);
[email protected]0651b812011-02-24 00:22:5030}
31
ryansturm2343cb62016-06-15 01:09:0032int NetworkDelegate::NotifyBeforeStartTransaction(
33 URLRequest* request,
34 const CompletionCallback& callback,
[email protected]084262c2011-12-01 21:12:4735 HttpRequestHeaders* headers) {
ssid6d6b40102016-04-05 18:59:5636 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
ryansturm2343cb62016-06-15 01:09:0037 "NetworkDelegate::NotifyBeforeStartTransation");
[email protected]0651b812011-02-24 00:22:5038 DCHECK(CalledOnValidThread());
39 DCHECK(headers);
[email protected]084262c2011-12-01 21:12:4740 DCHECK(!callback.is_null());
ryansturm2343cb62016-06-15 01:09:0041 return OnBeforeStartTransaction(request, callback, headers);
[email protected]0651b812011-02-24 00:22:5042}
43
ryansturm49a8cb12016-06-15 16:51:0944void NetworkDelegate::NotifyBeforeSendHeaders(
[email protected]597a1ab2014-06-26 08:12:2745 URLRequest* request,
46 const ProxyInfo& proxy_info,
ryansturm49a8cb12016-06-15 16:51:0947 const ProxyRetryInfoMap& proxy_retry_info,
[email protected]597a1ab2014-06-26 08:12:2748 HttpRequestHeaders* headers) {
49 DCHECK(CalledOnValidThread());
50 DCHECK(headers);
ryansturm49a8cb12016-06-15 16:51:0951 OnBeforeSendHeaders(request, proxy_info, proxy_retry_info, headers);
[email protected]597a1ab2014-06-26 08:12:2752}
53
ryansturm2343cb62016-06-15 01:09:0054void NetworkDelegate::NotifyStartTransaction(
55 URLRequest* request,
56 const HttpRequestHeaders& headers) {
ssid6d6b40102016-04-05 18:59:5657 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
ryansturm2343cb62016-06-15 01:09:0058 "NetworkDelegate::NotifyStartTransaction");
[email protected]82b42302011-04-20 16:28:1659 DCHECK(CalledOnValidThread());
ryansturm2343cb62016-06-15 01:09:0060 OnStartTransaction(request, headers);
[email protected]82b42302011-04-20 16:28:1661}
62
[email protected]ea8141e2011-10-05 13:12:5163int NetworkDelegate::NotifyHeadersReceived(
64 URLRequest* request,
[email protected]084262c2011-12-01 21:12:4765 const CompletionCallback& callback,
[email protected]507af8f2012-10-20 00:42:3266 const HttpResponseHeaders* original_response_headers,
[email protected]5f714132014-03-26 10:41:1667 scoped_refptr<HttpResponseHeaders>* override_response_headers,
68 GURL* allowed_unsafe_redirect_url) {
ssid6d6b40102016-04-05 18:59:5669 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
70 "NetworkDelegate::NotifyHeadersReceived");
[email protected]ea8141e2011-10-05 13:12:5171 DCHECK(CalledOnValidThread());
72 DCHECK(original_response_headers);
[email protected]084262c2011-12-01 21:12:4773 DCHECK(!callback.is_null());
[email protected]5f714132014-03-26 10:41:1674 return OnHeadersReceived(request,
75 callback,
76 original_response_headers,
77 override_response_headers,
78 allowed_unsafe_redirect_url);
[email protected]ea8141e2011-10-05 13:12:5179}
80
maksim.sisov0f4aa142016-09-05 05:55:2881void NetworkDelegate::NotifyResponseStarted(URLRequest* request,
82 int net_error) {
[email protected]0651b812011-02-24 00:22:5083 DCHECK(CalledOnValidThread());
84 DCHECK(request);
maksim.sisov0f4aa142016-09-05 05:55:2885
86 OnResponseStarted(request, net_error);
[email protected]0651b812011-02-24 00:22:5087}
88
sclittlea133de02015-11-10 23:54:2189void NetworkDelegate::NotifyNetworkBytesReceived(URLRequest* request,
sclittlece72c482015-08-24 20:20:5990 int64_t bytes_received) {
ssid6d6b40102016-04-05 18:59:5691 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
92 "NetworkDelegate::NotifyNetworkBytesReceived");
[email protected]8523ba52011-05-22 19:00:5893 DCHECK(CalledOnValidThread());
sclittlece72c482015-08-24 20:20:5994 DCHECK_GT(bytes_received, 0);
95 OnNetworkBytesReceived(request, bytes_received);
[email protected]8523ba52011-05-22 19:00:5896}
97
sclittlea133de02015-11-10 23:54:2198void NetworkDelegate::NotifyNetworkBytesSent(URLRequest* request,
sclittle28d558b2015-09-28 21:40:5299 int64_t bytes_sent) {
100 DCHECK(CalledOnValidThread());
101 DCHECK_GT(bytes_sent, 0);
102 OnNetworkBytesSent(request, bytes_sent);
103}
104
[email protected]31b2e5f2011-04-20 16:58:32105void NetworkDelegate::NotifyBeforeRedirect(URLRequest* request,
106 const GURL& new_location) {
107 DCHECK(CalledOnValidThread());
108 DCHECK(request);
109 OnBeforeRedirect(request, new_location);
110}
111
maksim.sisov0f4aa142016-09-05 05:55:28112void NetworkDelegate::NotifyCompleted(URLRequest* request,
113 bool started,
114 int net_error) {
ssid6d6b40102016-04-05 18:59:56115 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
116 "NetworkDelegate::NotifyCompleted");
[email protected]0651b812011-02-24 00:22:50117 DCHECK(CalledOnValidThread());
118 DCHECK(request);
pkasting941842c2015-04-11 01:51:30119 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
vadimt844c15572014-11-04 22:55:57120 tracked_objects::ScopedTracker tracking_profile(
pkasting941842c2015-04-11 01:51:30121 FROM_HERE_WITH_EXPLICIT_FUNCTION("475753 NetworkDelegate::OnCompleted"));
maksim.sisov0f4aa142016-09-05 05:55:28122
123 OnCompleted(request, started, net_error);
[email protected]0651b812011-02-24 00:22:50124}
125
[email protected]4875ba12011-03-30 22:31:51126void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) {
ssid6d6b40102016-04-05 18:59:56127 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
128 "NetworkDelegate::NotifyURLRequestDestroyed");
[email protected]5aa20132011-04-27 23:11:34129 DCHECK(CalledOnValidThread());
[email protected]4875ba12011-03-30 22:31:51130 DCHECK(request);
[email protected]5aa20132011-04-27 23:11:34131 OnURLRequestDestroyed(request);
132}
133
[email protected]82a37672011-05-03 12:02:41134void NetworkDelegate::NotifyPACScriptError(int line_number,
[email protected]42cba2fb2013-03-29 19:58:57135 const base::string16& error) {
[email protected]82a37672011-05-03 12:02:41136 DCHECK(CalledOnValidThread());
137 OnPACScriptError(line_number, error);
138}
139
[email protected]c2911d72011-10-03 22:16:36140NetworkDelegate::AuthRequiredResponse NetworkDelegate::NotifyAuthRequired(
141 URLRequest* request,
142 const AuthChallengeInfo& auth_info,
143 const AuthCallback& callback,
144 AuthCredentials* credentials) {
[email protected]7efc582d2011-08-03 20:46:35145 DCHECK(CalledOnValidThread());
[email protected]c2911d72011-10-03 22:16:36146 return OnAuthRequired(request, auth_info, callback, credentials);
[email protected]7efc582d2011-08-03 20:46:35147}
148
[email protected]4c219e22012-05-05 19:41:04149bool NetworkDelegate::CanGetCookies(const URLRequest& request,
150 const CookieList& cookie_list) {
[email protected]9c8ae8c2012-03-09 13:13:35151 DCHECK(CalledOnValidThread());
ttuttle859dc7a2015-04-23 19:42:29152 DCHECK(!(request.load_flags() & LOAD_DO_NOT_SEND_COOKIES));
[email protected]4c219e22012-05-05 19:41:04153 return OnCanGetCookies(request, cookie_list);
[email protected]9c8ae8c2012-03-09 13:13:35154}
155
[email protected]f33e6872013-05-07 07:00:37156bool NetworkDelegate::CanSetCookie(const URLRequest& request,
157 const std::string& cookie_line,
158 CookieOptions* options) {
[email protected]9c8ae8c2012-03-09 13:13:35159 DCHECK(CalledOnValidThread());
ttuttle859dc7a2015-04-23 19:42:29160 DCHECK(!(request.load_flags() & LOAD_DO_NOT_SAVE_COOKIES));
[email protected]4c219e22012-05-05 19:41:04161 return OnCanSetCookie(request, cookie_line, options);
162}
163
164bool NetworkDelegate::CanAccessFile(const URLRequest& request,
[email protected]a3ef4832013-02-02 05:12:33165 const base::FilePath& path) const {
[email protected]4c219e22012-05-05 19:41:04166 DCHECK(CalledOnValidThread());
167 return OnCanAccessFile(request, path);
[email protected]9c8ae8c2012-03-09 13:13:35168}
169
[email protected]e6d017652013-05-17 18:01:40170bool NetworkDelegate::CanEnablePrivacyMode(
171 const GURL& url,
172 const GURL& first_party_for_cookies) const {
ssid6d6b40102016-04-05 18:59:56173 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
174 "NetworkDelegate::CanEnablePrivacyMode");
[email protected]e6d017652013-05-17 18:01:40175 DCHECK(CalledOnValidThread());
176 return OnCanEnablePrivacyMode(url, first_party_for_cookies);
177}
178
estark7625d812015-10-12 20:10:41179bool NetworkDelegate::AreExperimentalCookieFeaturesEnabled() const {
180 return OnAreExperimentalCookieFeaturesEnabled();
mkwst0513c9d2015-04-01 05:53:15181}
182
jww79aceda2015-12-07 01:56:34183bool NetworkDelegate::AreStrictSecureCookiesEnabled() const {
184 return OnAreStrictSecureCookiesEnabled();
185}
186
jochen0e3b3a62014-09-16 18:31:23187bool NetworkDelegate::CancelURLRequestWithPolicyViolatingReferrerHeader(
188 const URLRequest& request,
189 const GURL& target_url,
190 const GURL& referrer_url) const {
191 DCHECK(CalledOnValidThread());
192 return OnCancelURLRequestWithPolicyViolatingReferrerHeader(
193 request, target_url, referrer_url);
194}
195
maksim.sisov0f4aa142016-09-05 05:55:28196void NetworkDelegate::OnResponseStarted(URLRequest* request, int net_error) {
197 OnResponseStarted(request);
198}
199
200// Deprecated
201void NetworkDelegate::OnResponseStarted(URLRequest* request) {
202 NOTREACHED();
203}
204
205void NetworkDelegate::OnCompleted(URLRequest* request,
206 bool started,
207 int net_error) {
208 OnCompleted(request, started);
209}
210
211// Deprecated.
212void NetworkDelegate::OnCompleted(URLRequest* request, bool started) {
213 NOTREACHED();
214}
215
[email protected]0651b812011-02-24 00:22:50216} // namespace net