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
3 // found in the LICENSE file.
5 #include "net/base/network_delegate.h"
7 #include "base/logging.h"
8 #include "base/profiler/scoped_tracker.h"
9 #include "net/base/load_flags.h"
10 #include "net/base/net_errors.h"
11 #include "net/proxy/proxy_info.h"
12 #include "net/url_request/url_request.h"
16 int NetworkDelegate::NotifyBeforeURLRequest(
17 URLRequest* request, const CompletionCallback& callback,
19 DCHECK(CalledOnValidThread());
21 DCHECK(!callback.is_null());
22 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
23 tracked_objects::ScopedTracker tracking_profile(
24 FROM_HERE_WITH_EXPLICIT_FUNCTION(
25 "423948 NetworkDelegate::OnBeforeURLRequest"));
26 return OnBeforeURLRequest(request, callback, new_url);
29 void NetworkDelegate::NotifyResolveProxy(
32 const ProxyService& proxy_service,
34 DCHECK(CalledOnValidThread());
36 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
37 tracked_objects::ScopedTracker tracking_profile(
38 FROM_HERE_WITH_EXPLICIT_FUNCTION(
39 "423948 NetworkDelegate::OnResolveProxy"));
40 OnResolveProxy(url, load_flags, proxy_service, result);
43 void NetworkDelegate::NotifyProxyFallback(
44 const ProxyServer& bad_proxy,
46 DCHECK(CalledOnValidThread());
47 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
48 tracked_objects::ScopedTracker tracking_profile(
49 FROM_HERE_WITH_EXPLICIT_FUNCTION(
50 "423948 NetworkDelegate::OnProxyFallback"));
51 OnProxyFallback(bad_proxy, net_error);
54 int NetworkDelegate::NotifyBeforeSendHeaders(
55 URLRequest* request, const CompletionCallback& callback,
56 HttpRequestHeaders* headers) {
57 DCHECK(CalledOnValidThread());
59 DCHECK(!callback.is_null());
60 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
61 tracked_objects::ScopedTracker tracking_profile(
62 FROM_HERE_WITH_EXPLICIT_FUNCTION(
63 "423948 NetworkDelegate::OnBeforeSendHeaders"));
64 return OnBeforeSendHeaders(request, callback, headers);
67 void NetworkDelegate::NotifyBeforeSendProxyHeaders(
69 const ProxyInfo& proxy_info,
70 HttpRequestHeaders* headers) {
71 DCHECK(CalledOnValidThread());
73 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
74 tracked_objects::ScopedTracker tracking_profile(
75 FROM_HERE_WITH_EXPLICIT_FUNCTION(
76 "423948 NetworkDelegate::OnBeforeSendProxyHeaders"));
77 OnBeforeSendProxyHeaders(request, proxy_info, headers);
80 void NetworkDelegate::NotifySendHeaders(URLRequest* request,
81 const HttpRequestHeaders& headers) {
82 DCHECK(CalledOnValidThread());
83 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
84 tracked_objects::ScopedTracker tracking_profile(
85 FROM_HERE_WITH_EXPLICIT_FUNCTION(
86 "423948 NetworkDelegate::OnSendHeaders"));
87 OnSendHeaders(request, headers);
90 int NetworkDelegate::NotifyHeadersReceived(
92 const CompletionCallback& callback,
93 const HttpResponseHeaders* original_response_headers,
94 scoped_refptr<HttpResponseHeaders>* override_response_headers,
95 GURL* allowed_unsafe_redirect_url) {
96 DCHECK(CalledOnValidThread());
97 DCHECK(original_response_headers);
98 DCHECK(!callback.is_null());
99 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
100 tracked_objects::ScopedTracker tracking_profile(
101 FROM_HERE_WITH_EXPLICIT_FUNCTION(
102 "423948 NetworkDelegate::OnHeadersReceived"));
103 return OnHeadersReceived(request,
105 original_response_headers,
106 override_response_headers,
107 allowed_unsafe_redirect_url);
110 void NetworkDelegate::NotifyResponseStarted(URLRequest* request) {
111 DCHECK(CalledOnValidThread());
113 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
114 tracked_objects::ScopedTracker tracking_profile(
115 FROM_HERE_WITH_EXPLICIT_FUNCTION(
116 "423948 NetworkDelegate::OnResponseStarted"));
117 OnResponseStarted(request);
120 void NetworkDelegate::NotifyRawBytesRead(const URLRequest& request,
122 DCHECK(CalledOnValidThread());
123 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
124 tracked_objects::ScopedTracker tracking_profile(
125 FROM_HERE_WITH_EXPLICIT_FUNCTION(
126 "423948 NetworkDelegate::OnRawBytesRead"));
127 OnRawBytesRead(request, bytes_read);
130 void NetworkDelegate::NotifyBeforeRedirect(URLRequest* request,
131 const GURL& new_location) {
132 DCHECK(CalledOnValidThread());
134 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
135 tracked_objects::ScopedTracker tracking_profile(
136 FROM_HERE_WITH_EXPLICIT_FUNCTION(
137 "423948 NetworkDelegate::OnBeforeRedirect"));
138 OnBeforeRedirect(request, new_location);
141 void NetworkDelegate::NotifyCompleted(URLRequest* request, bool started) {
142 DCHECK(CalledOnValidThread());
144 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
145 tracked_objects::ScopedTracker tracking_profile(
146 FROM_HERE_WITH_EXPLICIT_FUNCTION("423948 NetworkDelegate::OnCompleted"));
147 OnCompleted(request, started);
150 void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) {
151 DCHECK(CalledOnValidThread());
153 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
154 tracked_objects::ScopedTracker tracking_profile(
155 FROM_HERE_WITH_EXPLICIT_FUNCTION(
156 "423948 NetworkDelegate::OnURLRequestDestroyed"));
157 OnURLRequestDestroyed(request);
160 void NetworkDelegate::NotifyPACScriptError(int line_number,
161 const base::string16& error) {
162 DCHECK(CalledOnValidThread());
163 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
164 tracked_objects::ScopedTracker tracking_profile(
165 FROM_HERE_WITH_EXPLICIT_FUNCTION(
166 "423948 NetworkDelegate::OnPACScriptError"));
167 OnPACScriptError(line_number, error);
170 NetworkDelegate::AuthRequiredResponse NetworkDelegate::NotifyAuthRequired(
172 const AuthChallengeInfo& auth_info,
173 const AuthCallback& callback,
174 AuthCredentials* credentials) {
175 DCHECK(CalledOnValidThread());
176 return OnAuthRequired(request, auth_info, callback, credentials);
179 int NetworkDelegate::NotifyBeforeSocketStreamConnect(
180 SocketStream* socket,
181 const CompletionCallback& callback) {
182 DCHECK(CalledOnValidThread());
184 DCHECK(!callback.is_null());
185 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
186 tracked_objects::ScopedTracker tracking_profile(
187 FROM_HERE_WITH_EXPLICIT_FUNCTION(
188 "423948 NetworkDelegate::OnBeforeSocketStreamConnect"));
189 return OnBeforeSocketStreamConnect(socket, callback);
192 bool NetworkDelegate::CanGetCookies(const URLRequest& request,
193 const CookieList& cookie_list) {
194 DCHECK(CalledOnValidThread());
195 DCHECK(!(request.load_flags() & net::LOAD_DO_NOT_SEND_COOKIES));
196 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
197 tracked_objects::ScopedTracker tracking_profile(
198 FROM_HERE_WITH_EXPLICIT_FUNCTION(
199 "423948 NetworkDelegate::OnCanGetCookies"));
200 return OnCanGetCookies(request, cookie_list);
203 bool NetworkDelegate::CanSetCookie(const URLRequest& request,
204 const std::string& cookie_line,
205 CookieOptions* options) {
206 DCHECK(CalledOnValidThread());
207 DCHECK(!(request.load_flags() & net::LOAD_DO_NOT_SAVE_COOKIES));
208 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
209 tracked_objects::ScopedTracker tracking_profile(
210 FROM_HERE_WITH_EXPLICIT_FUNCTION(
211 "423948 NetworkDelegate::OnCanSetCookie"));
212 return OnCanSetCookie(request, cookie_line, options);
215 bool NetworkDelegate::CanAccessFile(const URLRequest& request,
216 const base::FilePath& path) const {
217 DCHECK(CalledOnValidThread());
218 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
219 tracked_objects::ScopedTracker tracking_profile(
220 FROM_HERE_WITH_EXPLICIT_FUNCTION(
221 "423948 NetworkDelegate::OnCanAccessFile"));
222 return OnCanAccessFile(request, path);
225 bool NetworkDelegate::CanThrottleRequest(const URLRequest& request) const {
226 DCHECK(CalledOnValidThread());
227 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
228 tracked_objects::ScopedTracker tracking_profile(
229 FROM_HERE_WITH_EXPLICIT_FUNCTION(
230 "423948 NetworkDelegate::OnCanThrottleRequest"));
231 return OnCanThrottleRequest(request);
234 bool NetworkDelegate::CanEnablePrivacyMode(
236 const GURL& first_party_for_cookies) const {
237 DCHECK(CalledOnValidThread());
238 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
239 tracked_objects::ScopedTracker tracking_profile(
240 FROM_HERE_WITH_EXPLICIT_FUNCTION(
241 "423948 NetworkDelegate::OnCanEnablePrivacyMode"));
242 return OnCanEnablePrivacyMode(url, first_party_for_cookies);
245 bool NetworkDelegate::CancelURLRequestWithPolicyViolatingReferrerHeader(
246 const URLRequest& request,
247 const GURL& target_url,
248 const GURL& referrer_url) const {
249 DCHECK(CalledOnValidThread());
250 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
251 tracked_objects::ScopedTracker tracking_profile(
252 FROM_HERE_WITH_EXPLICIT_FUNCTION(
253 "423948 NetworkDelegate::OnCancelURLRequestWithPolicy..."));
254 return OnCancelURLRequestWithPolicyViolatingReferrerHeader(
255 request, target_url, referrer_url);
258 int NetworkDelegate::OnBeforeURLRequest(URLRequest* request,
259 const CompletionCallback& callback,
264 void NetworkDelegate::OnResolveProxy(
267 const ProxyService& proxy_service,
271 void NetworkDelegate::OnProxyFallback(const ProxyServer& bad_proxy,
275 int NetworkDelegate::OnBeforeSendHeaders(URLRequest* request,
276 const CompletionCallback& callback,
277 HttpRequestHeaders* headers) {
281 void NetworkDelegate::OnBeforeSendProxyHeaders(
283 const ProxyInfo& proxy_info,
284 HttpRequestHeaders* headers) {
287 void NetworkDelegate::OnSendHeaders(URLRequest* request,
288 const HttpRequestHeaders& headers) {
291 int NetworkDelegate::OnHeadersReceived(
293 const CompletionCallback& callback,
294 const HttpResponseHeaders* original_response_headers,
295 scoped_refptr<HttpResponseHeaders>* override_response_headers,
296 GURL* allowed_unsafe_redirect_url) {
300 void NetworkDelegate::OnBeforeRedirect(URLRequest* request,
301 const GURL& new_location) {
304 void NetworkDelegate::OnResponseStarted(URLRequest* request) {
307 void NetworkDelegate::OnRawBytesRead(const URLRequest& request,
311 void NetworkDelegate::OnCompleted(URLRequest* request, bool started) {
314 void NetworkDelegate::OnURLRequestDestroyed(URLRequest* request) {
317 void NetworkDelegate::OnPACScriptError(int line_number,
318 const base::string16& error) {
321 NetworkDelegate::AuthRequiredResponse NetworkDelegate::OnAuthRequired(
323 const AuthChallengeInfo& auth_info,
324 const AuthCallback& callback,
325 AuthCredentials* credentials) {
326 return AUTH_REQUIRED_RESPONSE_NO_ACTION;
329 bool NetworkDelegate::OnCanGetCookies(const URLRequest& request,
330 const CookieList& cookie_list) {
334 bool NetworkDelegate::OnCanSetCookie(const URLRequest& request,
335 const std::string& cookie_line,
336 CookieOptions* options) {
340 bool NetworkDelegate::OnCanAccessFile(const URLRequest& request,
341 const base::FilePath& path) const {
345 bool NetworkDelegate::OnCanThrottleRequest(const URLRequest& request) const {
349 bool NetworkDelegate::OnCanEnablePrivacyMode(
351 const GURL& first_party_for_cookies) const {
355 int NetworkDelegate::OnBeforeSocketStreamConnect(
356 SocketStream* socket,
357 const CompletionCallback& callback) {
361 bool NetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader(
362 const URLRequest& request,
363 const GURL& target_url,
364 const GURL& referrer_url) const {