| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_extensions_network_delegate.h" | 5 #include "chrome/browser/net/chrome_extensions_network_delegate.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 84 |
| 85 class ChromeExtensionsNetworkDelegateImpl | 85 class ChromeExtensionsNetworkDelegateImpl |
| 86 : public ChromeExtensionsNetworkDelegate { | 86 : public ChromeExtensionsNetworkDelegate { |
| 87 public: | 87 public: |
| 88 explicit ChromeExtensionsNetworkDelegateImpl( | 88 explicit ChromeExtensionsNetworkDelegateImpl( |
| 89 extensions::EventRouterForwarder* event_router); | 89 extensions::EventRouterForwarder* event_router); |
| 90 ~ChromeExtensionsNetworkDelegateImpl() override; | 90 ~ChromeExtensionsNetworkDelegateImpl() override; |
| 91 | 91 |
| 92 private: | 92 private: |
| 93 // ChromeExtensionsNetworkDelegate implementation. | 93 // ChromeExtensionsNetworkDelegate implementation. |
| 94 void ForwardProxyErrors(net::URLRequest* request) override; | 94 void ForwardProxyErrors(net::URLRequest* request, int net_error) override; |
| 95 void ForwardStartRequestStatus(net::URLRequest* request) override; | 95 void ForwardStartRequestStatus(net::URLRequest* request) override; |
| 96 void ForwardDoneRequestStatus(net::URLRequest* request) override; | 96 void ForwardDoneRequestStatus(net::URLRequest* request) override; |
| 97 int OnBeforeURLRequest(net::URLRequest* request, | 97 int OnBeforeURLRequest(net::URLRequest* request, |
| 98 const net::CompletionCallback& callback, | 98 const net::CompletionCallback& callback, |
| 99 GURL* new_url) override; | 99 GURL* new_url) override; |
| 100 int OnBeforeStartTransaction(net::URLRequest* request, | 100 int OnBeforeStartTransaction(net::URLRequest* request, |
| 101 const net::CompletionCallback& callback, | 101 const net::CompletionCallback& callback, |
| 102 net::HttpRequestHeaders* headers) override; | 102 net::HttpRequestHeaders* headers) override; |
| 103 void OnStartTransaction(net::URLRequest* request, | 103 void OnStartTransaction(net::URLRequest* request, |
| 104 const net::HttpRequestHeaders& headers) override; | 104 const net::HttpRequestHeaders& headers) override; |
| 105 int OnHeadersReceived( | 105 int OnHeadersReceived( |
| 106 net::URLRequest* request, | 106 net::URLRequest* request, |
| 107 const net::CompletionCallback& callback, | 107 const net::CompletionCallback& callback, |
| 108 const net::HttpResponseHeaders* original_response_headers, | 108 const net::HttpResponseHeaders* original_response_headers, |
| 109 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 109 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
| 110 GURL* allowed_unsafe_redirect_url) override; | 110 GURL* allowed_unsafe_redirect_url) override; |
| 111 void OnBeforeRedirect(net::URLRequest* request, | 111 void OnBeforeRedirect(net::URLRequest* request, |
| 112 const GURL& new_location) override; | 112 const GURL& new_location) override; |
| 113 void OnResponseStarted(net::URLRequest* request) override; | 113 void OnResponseStarted(net::URLRequest* request, int net_error) override; |
| 114 void OnCompleted(net::URLRequest* request, bool started) override; | 114 void OnCompleted(net::URLRequest* request, |
| 115 bool started, |
| 116 int net_error) override; |
| 115 void OnURLRequestDestroyed(net::URLRequest* request) override; | 117 void OnURLRequestDestroyed(net::URLRequest* request) override; |
| 116 void OnPACScriptError(int line_number, const base::string16& error) override; | 118 void OnPACScriptError(int line_number, const base::string16& error) override; |
| 117 net::NetworkDelegate::AuthRequiredResponse OnAuthRequired( | 119 net::NetworkDelegate::AuthRequiredResponse OnAuthRequired( |
| 118 net::URLRequest* request, | 120 net::URLRequest* request, |
| 119 const net::AuthChallengeInfo& auth_info, | 121 const net::AuthChallengeInfo& auth_info, |
| 120 const AuthCallback& callback, | 122 const AuthCallback& callback, |
| 121 net::AuthCredentials* credentials) override; | 123 net::AuthCredentials* credentials) override; |
| 122 | 124 |
| 123 scoped_refptr<extensions::EventRouterForwarder> event_router_; | 125 scoped_refptr<extensions::EventRouterForwarder> event_router_; |
| 124 | 126 |
| 125 DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsNetworkDelegateImpl); | 127 DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsNetworkDelegateImpl); |
| 126 }; | 128 }; |
| 127 | 129 |
| 128 ChromeExtensionsNetworkDelegateImpl::ChromeExtensionsNetworkDelegateImpl( | 130 ChromeExtensionsNetworkDelegateImpl::ChromeExtensionsNetworkDelegateImpl( |
| 129 extensions::EventRouterForwarder* event_router) { | 131 extensions::EventRouterForwarder* event_router) { |
| 130 DCHECK(event_router); | 132 DCHECK(event_router); |
| 131 event_router_ = event_router; | 133 event_router_ = event_router; |
| 132 } | 134 } |
| 133 | 135 |
| 134 ChromeExtensionsNetworkDelegateImpl::~ChromeExtensionsNetworkDelegateImpl() {} | 136 ChromeExtensionsNetworkDelegateImpl::~ChromeExtensionsNetworkDelegateImpl() {} |
| 135 | 137 |
| 136 void ChromeExtensionsNetworkDelegateImpl::ForwardProxyErrors( | 138 void ChromeExtensionsNetworkDelegateImpl::ForwardProxyErrors( |
| 137 net::URLRequest* request) { | 139 net::URLRequest* request, |
| 138 if (request->status().status() == net::URLRequestStatus::FAILED) { | 140 int net_error) { |
| 139 switch (request->status().error()) { | 141 if (net_error != net::OK) { |
| 142 switch (net_error) { |
| 140 case net::ERR_PROXY_AUTH_UNSUPPORTED: | 143 case net::ERR_PROXY_AUTH_UNSUPPORTED: |
| 141 case net::ERR_PROXY_CONNECTION_FAILED: | 144 case net::ERR_PROXY_CONNECTION_FAILED: |
| 142 case net::ERR_TUNNEL_CONNECTION_FAILED: | 145 case net::ERR_TUNNEL_CONNECTION_FAILED: |
| 143 extensions::ProxyEventRouter::GetInstance()->OnProxyError( | 146 extensions::ProxyEventRouter::GetInstance()->OnProxyError( |
| 144 event_router_.get(), profile_, request->status().error()); | 147 event_router_.get(), profile_, net_error); |
| 145 } | 148 } |
| 146 } | 149 } |
| 147 } | 150 } |
| 148 | 151 |
| 149 void ChromeExtensionsNetworkDelegateImpl::ForwardStartRequestStatus( | 152 void ChromeExtensionsNetworkDelegateImpl::ForwardStartRequestStatus( |
| 150 net::URLRequest* request) { | 153 net::URLRequest* request) { |
| 151 ForwardRequestStatus(REQUEST_STARTED, request, profile_); | 154 ForwardRequestStatus(REQUEST_STARTED, request, profile_); |
| 152 } | 155 } |
| 153 | 156 |
| 154 void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( | 157 void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 allowed_unsafe_redirect_url); | 213 allowed_unsafe_redirect_url); |
| 211 } | 214 } |
| 212 | 215 |
| 213 void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( | 216 void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( |
| 214 net::URLRequest* request, | 217 net::URLRequest* request, |
| 215 const GURL& new_location) { | 218 const GURL& new_location) { |
| 216 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( | 219 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( |
| 217 profile_, extension_info_map_.get(), request, new_location); | 220 profile_, extension_info_map_.get(), request, new_location); |
| 218 } | 221 } |
| 219 | 222 |
| 220 | |
| 221 void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( | 223 void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( |
| 222 net::URLRequest* request) { | 224 net::URLRequest* request, |
| 225 int net_error) { |
| 223 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( | 226 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( |
| 224 profile_, extension_info_map_.get(), request); | 227 profile_, extension_info_map_.get(), request, net_error); |
| 225 ForwardProxyErrors(request); | 228 ForwardProxyErrors(request, net_error); |
| 226 } | 229 } |
| 227 | 230 |
| 228 void ChromeExtensionsNetworkDelegateImpl::OnCompleted( | 231 void ChromeExtensionsNetworkDelegateImpl::OnCompleted(net::URLRequest* request, |
| 229 net::URLRequest* request, | 232 bool started, |
| 230 bool started) { | 233 int net_error) { |
| 231 if (request->status().status() == net::URLRequestStatus::SUCCESS) { | 234 DCHECK_NE(net::ERR_IO_PENDING, net_error); |
| 232 bool is_redirect = request->response_headers() && | 235 |
| 233 net::HttpResponseHeaders::IsRedirectResponseCode( | 236 if (net_error != net::OK) { |
| 234 request->response_headers()->response_code()); | 237 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( |
| 235 if (!is_redirect) { | 238 profile_, extension_info_map_.get(), request, started, net_error); |
| 236 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( | |
| 237 profile_, extension_info_map_.get(), request); | |
| 238 } | |
| 239 return; | 239 return; |
| 240 } | 240 } |
| 241 | 241 |
| 242 if (request->status().status() == net::URLRequestStatus::FAILED || | 242 bool is_redirect = request->response_headers() && |
| 243 request->status().status() == net::URLRequestStatus::CANCELED) { | 243 net::HttpResponseHeaders::IsRedirectResponseCode( |
| 244 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( | 244 request->response_headers()->response_code()); |
| 245 profile_, extension_info_map_.get(), request, started); | 245 if (!is_redirect) { |
| 246 return; | 246 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( |
| 247 profile_, extension_info_map_.get(), request, net_error); |
| 247 } | 248 } |
| 248 | |
| 249 NOTREACHED(); | |
| 250 } | 249 } |
| 251 | 250 |
| 252 void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( | 251 void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( |
| 253 net::URLRequest* request) { | 252 net::URLRequest* request) { |
| 254 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( | 253 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( |
| 255 profile_, request); | 254 profile_, request); |
| 256 } | 255 } |
| 257 | 256 |
| 258 void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( | 257 void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( |
| 259 int line_number, | 258 int line_number, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 ChromeExtensionsNetworkDelegate::~ChromeExtensionsNetworkDelegate() {} | 293 ChromeExtensionsNetworkDelegate::~ChromeExtensionsNetworkDelegate() {} |
| 295 | 294 |
| 296 void ChromeExtensionsNetworkDelegate::set_extension_info_map( | 295 void ChromeExtensionsNetworkDelegate::set_extension_info_map( |
| 297 extensions::InfoMap* extension_info_map) { | 296 extensions::InfoMap* extension_info_map) { |
| 298 #if defined(ENABLE_EXTENSIONS) | 297 #if defined(ENABLE_EXTENSIONS) |
| 299 extension_info_map_ = extension_info_map; | 298 extension_info_map_ = extension_info_map; |
| 300 #endif | 299 #endif |
| 301 } | 300 } |
| 302 | 301 |
| 303 void ChromeExtensionsNetworkDelegate::ForwardProxyErrors( | 302 void ChromeExtensionsNetworkDelegate::ForwardProxyErrors( |
| 304 net::URLRequest* request) { | 303 net::URLRequest* request, |
| 305 } | 304 int net_error) {} |
| 306 | 305 |
| 307 void ChromeExtensionsNetworkDelegate::ForwardStartRequestStatus( | 306 void ChromeExtensionsNetworkDelegate::ForwardStartRequestStatus( |
| 308 net::URLRequest* request) { | 307 net::URLRequest* request) { |
| 309 } | 308 } |
| 310 | 309 |
| 311 void ChromeExtensionsNetworkDelegate::ForwardDoneRequestStatus( | 310 void ChromeExtensionsNetworkDelegate::ForwardDoneRequestStatus( |
| 312 net::URLRequest* request) { | 311 net::URLRequest* request) { |
| 313 } | 312 } |
| 314 | 313 |
| 315 int ChromeExtensionsNetworkDelegate::OnBeforeURLRequest( | 314 int ChromeExtensionsNetworkDelegate::OnBeforeURLRequest( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 337 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 336 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
| 338 GURL* allowed_unsafe_redirect_url) { | 337 GURL* allowed_unsafe_redirect_url) { |
| 339 return net::OK; | 338 return net::OK; |
| 340 } | 339 } |
| 341 | 340 |
| 342 void ChromeExtensionsNetworkDelegate::OnBeforeRedirect( | 341 void ChromeExtensionsNetworkDelegate::OnBeforeRedirect( |
| 343 net::URLRequest* request, | 342 net::URLRequest* request, |
| 344 const GURL& new_location) { | 343 const GURL& new_location) { |
| 345 } | 344 } |
| 346 | 345 |
| 346 void ChromeExtensionsNetworkDelegate::OnResponseStarted( |
| 347 net::URLRequest* request, |
| 348 int net_error) {} |
| 347 | 349 |
| 348 void ChromeExtensionsNetworkDelegate::OnResponseStarted( | 350 void ChromeExtensionsNetworkDelegate::OnCompleted(net::URLRequest* request, |
| 349 net::URLRequest* request) { | 351 bool started, |
| 350 } | 352 int net_error) {} |
| 351 | |
| 352 void ChromeExtensionsNetworkDelegate::OnCompleted( | |
| 353 net::URLRequest* request, | |
| 354 bool started) { | |
| 355 } | |
| 356 | 353 |
| 357 void ChromeExtensionsNetworkDelegate::OnURLRequestDestroyed( | 354 void ChromeExtensionsNetworkDelegate::OnURLRequestDestroyed( |
| 358 net::URLRequest* request) { | 355 net::URLRequest* request) { |
| 359 } | 356 } |
| 360 | 357 |
| 361 void ChromeExtensionsNetworkDelegate::OnPACScriptError( | 358 void ChromeExtensionsNetworkDelegate::OnPACScriptError( |
| 362 int line_number, | 359 int line_number, |
| 363 const base::string16& error) { | 360 const base::string16& error) { |
| 364 } | 361 } |
| 365 | 362 |
| 366 net::NetworkDelegate::AuthRequiredResponse | 363 net::NetworkDelegate::AuthRequiredResponse |
| 367 ChromeExtensionsNetworkDelegate::OnAuthRequired( | 364 ChromeExtensionsNetworkDelegate::OnAuthRequired( |
| 368 net::URLRequest* request, | 365 net::URLRequest* request, |
| 369 const net::AuthChallengeInfo& auth_info, | 366 const net::AuthChallengeInfo& auth_info, |
| 370 const AuthCallback& callback, | 367 const AuthCallback& callback, |
| 371 net::AuthCredentials* credentials) { | 368 net::AuthCredentials* credentials) { |
| 372 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 369 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
| 373 } | 370 } |
| OLD | NEW |