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(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
23 tracked_objects::ScopedTracker
tracking_profile(
24 FROM_HERE_WITH_EXPLICIT_FUNCTION(
25 "475753 NetworkDelegate::OnBeforeURLRequest"));
26 return OnBeforeURLRequest(request
, callback
, new_url
);
29 void NetworkDelegate::NotifyResolveProxy(
32 const ProxyService
& proxy_service
,
34 DCHECK(CalledOnValidThread());
36 OnResolveProxy(url
, load_flags
, proxy_service
, result
);
39 void NetworkDelegate::NotifyProxyFallback(
40 const ProxyServer
& bad_proxy
,
42 DCHECK(CalledOnValidThread());
43 OnProxyFallback(bad_proxy
, net_error
);
46 int NetworkDelegate::NotifyBeforeSendHeaders(
47 URLRequest
* request
, const CompletionCallback
& callback
,
48 HttpRequestHeaders
* headers
) {
49 DCHECK(CalledOnValidThread());
51 DCHECK(!callback
.is_null());
52 return OnBeforeSendHeaders(request
, callback
, headers
);
55 void NetworkDelegate::NotifyBeforeSendProxyHeaders(
57 const ProxyInfo
& proxy_info
,
58 HttpRequestHeaders
* headers
) {
59 DCHECK(CalledOnValidThread());
61 OnBeforeSendProxyHeaders(request
, proxy_info
, headers
);
64 void NetworkDelegate::NotifySendHeaders(URLRequest
* request
,
65 const HttpRequestHeaders
& headers
) {
66 DCHECK(CalledOnValidThread());
67 OnSendHeaders(request
, headers
);
70 int NetworkDelegate::NotifyHeadersReceived(
72 const CompletionCallback
& callback
,
73 const HttpResponseHeaders
* original_response_headers
,
74 scoped_refptr
<HttpResponseHeaders
>* override_response_headers
,
75 GURL
* allowed_unsafe_redirect_url
) {
76 DCHECK(CalledOnValidThread());
77 DCHECK(original_response_headers
);
78 DCHECK(!callback
.is_null());
79 return OnHeadersReceived(request
,
81 original_response_headers
,
82 override_response_headers
,
83 allowed_unsafe_redirect_url
);
86 void NetworkDelegate::NotifyResponseStarted(URLRequest
* request
) {
87 DCHECK(CalledOnValidThread());
89 OnResponseStarted(request
);
92 void NetworkDelegate::NotifyRawBytesRead(const URLRequest
& request
,
94 DCHECK(CalledOnValidThread());
95 OnRawBytesRead(request
, bytes_read
);
98 void NetworkDelegate::NotifyBeforeRedirect(URLRequest
* request
,
99 const GURL
& new_location
) {
100 DCHECK(CalledOnValidThread());
102 OnBeforeRedirect(request
, new_location
);
105 void NetworkDelegate::NotifyCompleted(URLRequest
* request
, bool started
) {
106 DCHECK(CalledOnValidThread());
108 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/475753 is fixed.
109 tracked_objects::ScopedTracker
tracking_profile(
110 FROM_HERE_WITH_EXPLICIT_FUNCTION("475753 NetworkDelegate::OnCompleted"));
111 OnCompleted(request
, started
);
114 void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest
* request
) {
115 DCHECK(CalledOnValidThread());
117 OnURLRequestDestroyed(request
);
120 void NetworkDelegate::NotifyPACScriptError(int line_number
,
121 const base::string16
& error
) {
122 DCHECK(CalledOnValidThread());
123 OnPACScriptError(line_number
, error
);
126 NetworkDelegate::AuthRequiredResponse
NetworkDelegate::NotifyAuthRequired(
128 const AuthChallengeInfo
& auth_info
,
129 const AuthCallback
& callback
,
130 AuthCredentials
* credentials
) {
131 DCHECK(CalledOnValidThread());
132 return OnAuthRequired(request
, auth_info
, callback
, credentials
);
135 bool NetworkDelegate::CanGetCookies(const URLRequest
& request
,
136 const CookieList
& cookie_list
) {
137 DCHECK(CalledOnValidThread());
138 DCHECK(!(request
.load_flags() & LOAD_DO_NOT_SEND_COOKIES
));
139 return OnCanGetCookies(request
, cookie_list
);
142 bool NetworkDelegate::CanSetCookie(const URLRequest
& request
,
143 const std::string
& cookie_line
,
144 CookieOptions
* options
) {
145 DCHECK(CalledOnValidThread());
146 DCHECK(!(request
.load_flags() & LOAD_DO_NOT_SAVE_COOKIES
));
147 return OnCanSetCookie(request
, cookie_line
, options
);
150 bool NetworkDelegate::CanAccessFile(const URLRequest
& request
,
151 const base::FilePath
& path
) const {
152 DCHECK(CalledOnValidThread());
153 return OnCanAccessFile(request
, path
);
156 bool NetworkDelegate::CanThrottleRequest(const URLRequest
& request
) const {
157 DCHECK(CalledOnValidThread());
158 return OnCanThrottleRequest(request
);
161 bool NetworkDelegate::CanEnablePrivacyMode(
163 const GURL
& first_party_for_cookies
) const {
164 DCHECK(CalledOnValidThread());
165 return OnCanEnablePrivacyMode(url
, first_party_for_cookies
);
168 bool NetworkDelegate::FirstPartyOnlyCookieExperimentEnabled() const {
169 return OnFirstPartyOnlyCookieExperimentEnabled();
172 bool NetworkDelegate::CancelURLRequestWithPolicyViolatingReferrerHeader(
173 const URLRequest
& request
,
174 const GURL
& target_url
,
175 const GURL
& referrer_url
) const {
176 DCHECK(CalledOnValidThread());
177 return OnCancelURLRequestWithPolicyViolatingReferrerHeader(
178 request
, target_url
, referrer_url
);