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. 4 5 #include "net/base/network_delegate.h" 6 7 #include "base/logging.h" 8 #include "net/base/load_flags.h" 9 #include "net/base/net_errors.h" 10 #include "net/proxy/proxy_info.h" 11 #include "net/url_request/url_request.h" 12 13 namespace net { 14 15 int NetworkDelegate::NotifyBeforeURLRequest( 16 URLRequest* request, const CompletionCallback& callback, 17 GURL* new_url) { 18 DCHECK(CalledOnValidThread()); 19 DCHECK(request); 20 DCHECK(!callback.is_null()); 21 return OnBeforeURLRequest(request, callback, new_url); 22 } 23 24 void NetworkDelegate::NotifyResolveProxy( 25 const GURL& url, 26 int load_flags, 27 const ProxyService& proxy_service, 28 ProxyInfo* result) { 29 DCHECK(CalledOnValidThread()); 30 DCHECK(result); 31 OnResolveProxy(url, load_flags, proxy_service, result); 32 } 33 34 void NetworkDelegate::NotifyProxyFallback( 35 const ProxyServer& bad_proxy, 36 int net_error) { 37 DCHECK(CalledOnValidThread()); 38 OnProxyFallback(bad_proxy, net_error); 39 } 40 41 int NetworkDelegate::NotifyBeforeSendHeaders( 42 URLRequest* request, const CompletionCallback& callback, 43 HttpRequestHeaders* headers) { 44 DCHECK(CalledOnValidThread()); 45 DCHECK(headers); 46 DCHECK(!callback.is_null()); 47 return OnBeforeSendHeaders(request, callback, headers); 48 } 49 50 void NetworkDelegate::NotifyBeforeSendProxyHeaders( 51 URLRequest* request, 52 const ProxyInfo& proxy_info, 53 HttpRequestHeaders* headers) { 54 DCHECK(CalledOnValidThread()); 55 DCHECK(headers); 56 OnBeforeSendProxyHeaders(request, proxy_info, headers); 57 } 58 59 void NetworkDelegate::NotifySendHeaders(URLRequest* request, 60 const HttpRequestHeaders& headers) { 61 DCHECK(CalledOnValidThread()); 62 OnSendHeaders(request, headers); 63 } 64 65 int NetworkDelegate::NotifyHeadersReceived( 66 URLRequest* request, 67 const CompletionCallback& callback, 68 const HttpResponseHeaders* original_response_headers, 69 scoped_refptr<HttpResponseHeaders>* override_response_headers, 70 GURL* allowed_unsafe_redirect_url) { 71 DCHECK(CalledOnValidThread()); 72 DCHECK(original_response_headers); 73 DCHECK(!callback.is_null()); 74 return OnHeadersReceived(request, 75 callback, 76 original_response_headers, 77 override_response_headers, 78 allowed_unsafe_redirect_url); 79 } 80 81 void NetworkDelegate::NotifyResponseStarted(URLRequest* request) { 82 DCHECK(CalledOnValidThread()); 83 DCHECK(request); 84 OnResponseStarted(request); 85 } 86 87 void NetworkDelegate::NotifyRawBytesRead(const URLRequest& request, 88 int bytes_read) { 89 DCHECK(CalledOnValidThread()); 90 OnRawBytesRead(request, bytes_read); 91 } 92 93 void NetworkDelegate::NotifyBeforeRedirect(URLRequest* request, 94 const GURL& new_location) { 95 DCHECK(CalledOnValidThread()); 96 DCHECK(request); 97 OnBeforeRedirect(request, new_location); 98 } 99 100 void NetworkDelegate::NotifyCompleted(URLRequest* request, bool started) { 101 DCHECK(CalledOnValidThread()); 102 DCHECK(request); 103 OnCompleted(request, started); 104 } 105 106 void NetworkDelegate::NotifyURLRequestDestroyed(URLRequest* request) { 107 DCHECK(CalledOnValidThread()); 108 DCHECK(request); 109 OnURLRequestDestroyed(request); 110 } 111 112 void NetworkDelegate::NotifyPACScriptError(int line_number, 113 const base::string16& error) { 114 DCHECK(CalledOnValidThread()); 115 OnPACScriptError(line_number, error); 116 } 117 118 NetworkDelegate::AuthRequiredResponse NetworkDelegate::NotifyAuthRequired( 119 URLRequest* request, 120 const AuthChallengeInfo& auth_info, 121 const AuthCallback& callback, 122 AuthCredentials* credentials) { 123 DCHECK(CalledOnValidThread()); 124 return OnAuthRequired(request, auth_info, callback, credentials); 125 } 126 127 int NetworkDelegate::NotifyBeforeSocketStreamConnect( 128 SocketStream* socket, 129 const CompletionCallback& callback) { 130 DCHECK(CalledOnValidThread()); 131 DCHECK(socket); 132 DCHECK(!callback.is_null()); 133 return OnBeforeSocketStreamConnect(socket, callback); 134 } 135 136 bool NetworkDelegate::CanGetCookies(const URLRequest& request, 137 const CookieList& cookie_list) { 138 DCHECK(CalledOnValidThread()); 139 DCHECK(!(request.load_flags() & net::LOAD_DO_NOT_SEND_COOKIES)); 140 return OnCanGetCookies(request, cookie_list); 141 } 142 143 bool NetworkDelegate::CanSetCookie(const URLRequest& request, 144 const std::string& cookie_line, 145 CookieOptions* options) { 146 DCHECK(CalledOnValidThread()); 147 DCHECK(!(request.load_flags() & net::LOAD_DO_NOT_SAVE_COOKIES)); 148 return OnCanSetCookie(request, cookie_line, options); 149 } 150 151 bool NetworkDelegate::CanAccessFile(const URLRequest& request, 152 const base::FilePath& path) const { 153 DCHECK(CalledOnValidThread()); 154 return OnCanAccessFile(request, path); 155 } 156 157 bool NetworkDelegate::CanThrottleRequest(const URLRequest& request) const { 158 DCHECK(CalledOnValidThread()); 159 return OnCanThrottleRequest(request); 160 } 161 162 bool NetworkDelegate::CanEnablePrivacyMode( 163 const GURL& url, 164 const GURL& first_party_for_cookies) const { 165 DCHECK(CalledOnValidThread()); 166 return OnCanEnablePrivacyMode(url, first_party_for_cookies); 167 } 168 169 bool NetworkDelegate::CancelURLRequestWithPolicyViolatingReferrerHeader( 170 const URLRequest& request, 171 const GURL& target_url, 172 const GURL& referrer_url) const { 173 DCHECK(CalledOnValidThread()); 174 return OnCancelURLRequestWithPolicyViolatingReferrerHeader( 175 request, target_url, referrer_url); 176 } 177 178 int NetworkDelegate::OnBeforeURLRequest(URLRequest* request, 179 const CompletionCallback& callback, 180 GURL* new_url) { 181 return OK; 182 } 183 184 void NetworkDelegate::OnResolveProxy( 185 const GURL& url, 186 int load_flags, 187 const ProxyService& proxy_service, 188 ProxyInfo* result) { 189 } 190 191 void NetworkDelegate::OnProxyFallback(const ProxyServer& bad_proxy, 192 int net_error) { 193 } 194 195 int NetworkDelegate::OnBeforeSendHeaders(URLRequest* request, 196 const CompletionCallback& callback, 197 HttpRequestHeaders* headers) { 198 return OK; 199 } 200 201 void NetworkDelegate::OnBeforeSendProxyHeaders( 202 URLRequest* request, 203 const ProxyInfo& proxy_info, 204 HttpRequestHeaders* headers) { 205 } 206 207 void NetworkDelegate::OnSendHeaders(URLRequest* request, 208 const HttpRequestHeaders& headers) { 209 } 210 211 int NetworkDelegate::OnHeadersReceived( 212 URLRequest* request, 213 const CompletionCallback& callback, 214 const HttpResponseHeaders* original_response_headers, 215 scoped_refptr<HttpResponseHeaders>* override_response_headers, 216 GURL* allowed_unsafe_redirect_url) { 217 return OK; 218 } 219 220 void NetworkDelegate::OnBeforeRedirect(URLRequest* request, 221 const GURL& new_location) { 222 } 223 224 void NetworkDelegate::OnResponseStarted(URLRequest* request) { 225 } 226 227 void NetworkDelegate::OnRawBytesRead(const URLRequest& request, 228 int bytes_read) { 229 } 230 231 void NetworkDelegate::OnCompleted(URLRequest* request, bool started) { 232 } 233 234 void NetworkDelegate::OnURLRequestDestroyed(URLRequest* request) { 235 } 236 237 void NetworkDelegate::OnPACScriptError(int line_number, 238 const base::string16& error) { 239 } 240 241 NetworkDelegate::AuthRequiredResponse NetworkDelegate::OnAuthRequired( 242 URLRequest* request, 243 const AuthChallengeInfo& auth_info, 244 const AuthCallback& callback, 245 AuthCredentials* credentials) { 246 return AUTH_REQUIRED_RESPONSE_NO_ACTION; 247 } 248 249 bool NetworkDelegate::OnCanGetCookies(const URLRequest& request, 250 const CookieList& cookie_list) { 251 return true; 252 } 253 254 bool NetworkDelegate::OnCanSetCookie(const URLRequest& request, 255 const std::string& cookie_line, 256 CookieOptions* options) { 257 return true; 258 } 259 260 bool NetworkDelegate::OnCanAccessFile(const URLRequest& request, 261 const base::FilePath& path) const { 262 return false; 263 } 264 265 bool NetworkDelegate::OnCanThrottleRequest(const URLRequest& request) const { 266 return false; 267 } 268 269 bool NetworkDelegate::OnCanEnablePrivacyMode( 270 const GURL& url, 271 const GURL& first_party_for_cookies) const { 272 return false; 273 } 274 275 int NetworkDelegate::OnBeforeSocketStreamConnect( 276 SocketStream* socket, 277 const CompletionCallback& callback) { 278 return OK; 279 } 280 281 bool NetworkDelegate::OnCancelURLRequestWithPolicyViolatingReferrerHeader( 282 const URLRequest& request, 283 const GURL& target_url, 284 const GURL& referrer_url) const { 285 return false; 286 } 287 288 } // namespace net 289