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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 | 99 |
100 class ChromeExtensionsNetworkDelegateImpl | 100 class ChromeExtensionsNetworkDelegateImpl |
101 : public ChromeExtensionsNetworkDelegate { | 101 : public ChromeExtensionsNetworkDelegate { |
102 public: | 102 public: |
103 explicit ChromeExtensionsNetworkDelegateImpl( | 103 explicit ChromeExtensionsNetworkDelegateImpl( |
104 extensions::EventRouterForwarder* event_router); | 104 extensions::EventRouterForwarder* event_router); |
105 ~ChromeExtensionsNetworkDelegateImpl() override; | 105 ~ChromeExtensionsNetworkDelegateImpl() override; |
106 | 106 |
107 private: | 107 private: |
108 // ChromeExtensionsNetworkDelegate implementation. | 108 // ChromeExtensionsNetworkDelegate implementation. |
109 void ForwardProxyErrors(net::URLRequest* request) override; | 109 void ForwardProxyErrors(net::URLRequest* request, int net_error) override; |
110 void ForwardStartRequestStatus(net::URLRequest* request) override; | 110 void ForwardStartRequestStatus(net::URLRequest* request) override; |
111 void ForwardDoneRequestStatus(net::URLRequest* request) override; | 111 void ForwardDoneRequestStatus(net::URLRequest* request) override; |
112 int OnBeforeURLRequest(net::URLRequest* request, | 112 int OnBeforeURLRequest(net::URLRequest* request, |
113 const net::CompletionCallback& callback, | 113 const net::CompletionCallback& callback, |
114 GURL* new_url) override; | 114 GURL* new_url) override; |
115 int OnBeforeStartTransaction(net::URLRequest* request, | 115 int OnBeforeStartTransaction(net::URLRequest* request, |
116 const net::CompletionCallback& callback, | 116 const net::CompletionCallback& callback, |
117 net::HttpRequestHeaders* headers) override; | 117 net::HttpRequestHeaders* headers) override; |
118 void OnStartTransaction(net::URLRequest* request, | 118 void OnStartTransaction(net::URLRequest* request, |
119 const net::HttpRequestHeaders& headers) override; | 119 const net::HttpRequestHeaders& headers) override; |
120 int OnHeadersReceived( | 120 int OnHeadersReceived( |
121 net::URLRequest* request, | 121 net::URLRequest* request, |
122 const net::CompletionCallback& callback, | 122 const net::CompletionCallback& callback, |
123 const net::HttpResponseHeaders* original_response_headers, | 123 const net::HttpResponseHeaders* original_response_headers, |
124 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 124 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
125 GURL* allowed_unsafe_redirect_url) override; | 125 GURL* allowed_unsafe_redirect_url) override; |
126 void OnBeforeRedirect(net::URLRequest* request, | 126 void OnBeforeRedirect(net::URLRequest* request, |
127 const GURL& new_location) override; | 127 const GURL& new_location) override; |
128 void OnResponseStarted(net::URLRequest* request) override; | 128 void OnResponseStarted(net::URLRequest* request, int net_error) override; |
129 void OnCompleted(net::URLRequest* request, bool started) override; | 129 void OnCompleted(net::URLRequest* request, |
| 130 bool started, |
| 131 int net_error) override; |
130 void OnURLRequestDestroyed(net::URLRequest* request) override; | 132 void OnURLRequestDestroyed(net::URLRequest* request) override; |
131 void OnPACScriptError(int line_number, const base::string16& error) override; | 133 void OnPACScriptError(int line_number, const base::string16& error) override; |
132 net::NetworkDelegate::AuthRequiredResponse OnAuthRequired( | 134 net::NetworkDelegate::AuthRequiredResponse OnAuthRequired( |
133 net::URLRequest* request, | 135 net::URLRequest* request, |
134 const net::AuthChallengeInfo& auth_info, | 136 const net::AuthChallengeInfo& auth_info, |
135 const AuthCallback& callback, | 137 const AuthCallback& callback, |
136 net::AuthCredentials* credentials) override; | 138 net::AuthCredentials* credentials) override; |
137 | 139 |
138 scoped_refptr<extensions::EventRouterForwarder> event_router_; | 140 scoped_refptr<extensions::EventRouterForwarder> event_router_; |
139 | 141 |
140 DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsNetworkDelegateImpl); | 142 DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsNetworkDelegateImpl); |
141 }; | 143 }; |
142 | 144 |
143 ChromeExtensionsNetworkDelegateImpl::ChromeExtensionsNetworkDelegateImpl( | 145 ChromeExtensionsNetworkDelegateImpl::ChromeExtensionsNetworkDelegateImpl( |
144 extensions::EventRouterForwarder* event_router) { | 146 extensions::EventRouterForwarder* event_router) { |
145 DCHECK(event_router); | 147 DCHECK(event_router); |
146 event_router_ = event_router; | 148 event_router_ = event_router; |
147 } | 149 } |
148 | 150 |
149 ChromeExtensionsNetworkDelegateImpl::~ChromeExtensionsNetworkDelegateImpl() {} | 151 ChromeExtensionsNetworkDelegateImpl::~ChromeExtensionsNetworkDelegateImpl() {} |
150 | 152 |
151 void ChromeExtensionsNetworkDelegateImpl::ForwardProxyErrors( | 153 void ChromeExtensionsNetworkDelegateImpl::ForwardProxyErrors( |
152 net::URLRequest* request) { | 154 net::URLRequest* request, |
153 if (request->status().status() == net::URLRequestStatus::FAILED) { | 155 int net_error) { |
154 switch (request->status().error()) { | 156 if (net_error != net::OK) { |
| 157 switch (net_error) { |
155 case net::ERR_PROXY_AUTH_UNSUPPORTED: | 158 case net::ERR_PROXY_AUTH_UNSUPPORTED: |
156 case net::ERR_PROXY_CONNECTION_FAILED: | 159 case net::ERR_PROXY_CONNECTION_FAILED: |
157 case net::ERR_TUNNEL_CONNECTION_FAILED: | 160 case net::ERR_TUNNEL_CONNECTION_FAILED: |
158 extensions::ProxyEventRouter::GetInstance()->OnProxyError( | 161 extensions::ProxyEventRouter::GetInstance()->OnProxyError( |
159 event_router_.get(), profile_, request->status().error()); | 162 event_router_.get(), profile_, net_error); |
160 } | 163 } |
161 } | 164 } |
162 } | 165 } |
163 | 166 |
164 void ChromeExtensionsNetworkDelegateImpl::ForwardStartRequestStatus( | 167 void ChromeExtensionsNetworkDelegateImpl::ForwardStartRequestStatus( |
165 net::URLRequest* request) { | 168 net::URLRequest* request) { |
166 ForwardRequestStatus(REQUEST_STARTED, request, profile_); | 169 ForwardRequestStatus(REQUEST_STARTED, request, profile_); |
167 } | 170 } |
168 | 171 |
169 void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( | 172 void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 } | 229 } |
227 | 230 |
228 void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( | 231 void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( |
229 net::URLRequest* request, | 232 net::URLRequest* request, |
230 const GURL& new_location) { | 233 const GURL& new_location) { |
231 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( | 234 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( |
232 profile_, extension_info_map_.get(), | 235 profile_, extension_info_map_.get(), |
233 GetExtensionNavigationUIData(request), request, new_location); | 236 GetExtensionNavigationUIData(request), request, new_location); |
234 } | 237 } |
235 | 238 |
236 | |
237 void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( | 239 void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( |
238 net::URLRequest* request) { | 240 net::URLRequest* request, |
| 241 int net_error) { |
239 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( | 242 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( |
240 profile_, extension_info_map_.get(), | 243 profile_, extension_info_map_.get(), |
241 GetExtensionNavigationUIData(request), request); | 244 GetExtensionNavigationUIData(request), request, net_error); |
242 ForwardProxyErrors(request); | 245 ForwardProxyErrors(request, net_error); |
243 } | 246 } |
244 | 247 |
245 void ChromeExtensionsNetworkDelegateImpl::OnCompleted( | 248 void ChromeExtensionsNetworkDelegateImpl::OnCompleted(net::URLRequest* request, |
246 net::URLRequest* request, | 249 bool started, |
247 bool started) { | 250 int net_error) { |
248 if (request->status().status() == net::URLRequestStatus::SUCCESS) { | 251 DCHECK_NE(net::ERR_IO_PENDING, net_error); |
249 bool is_redirect = request->response_headers() && | 252 |
250 net::HttpResponseHeaders::IsRedirectResponseCode( | 253 if (net_error != net::OK) { |
251 request->response_headers()->response_code()); | 254 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( |
252 if (!is_redirect) { | 255 profile_, extension_info_map_.get(), |
253 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( | 256 GetExtensionNavigationUIData(request), request, started, net_error); |
254 profile_, extension_info_map_.get(), | |
255 GetExtensionNavigationUIData(request), request); | |
256 } | |
257 return; | 257 return; |
258 } | 258 } |
259 | 259 |
260 if (request->status().status() == net::URLRequestStatus::FAILED || | 260 bool is_redirect = request->response_headers() && |
261 request->status().status() == net::URLRequestStatus::CANCELED) { | 261 net::HttpResponseHeaders::IsRedirectResponseCode( |
262 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( | 262 request->response_headers()->response_code()); |
| 263 if (!is_redirect) { |
| 264 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( |
263 profile_, extension_info_map_.get(), | 265 profile_, extension_info_map_.get(), |
264 GetExtensionNavigationUIData(request), request, started); | 266 GetExtensionNavigationUIData(request), request, net_error); |
265 return; | |
266 } | 267 } |
267 | |
268 NOTREACHED(); | |
269 } | 268 } |
270 | 269 |
271 void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( | 270 void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( |
272 net::URLRequest* request) { | 271 net::URLRequest* request) { |
273 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( | 272 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( |
274 profile_, request); | 273 profile_, request); |
275 } | 274 } |
276 | 275 |
277 void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( | 276 void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( |
278 int line_number, | 277 int line_number, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 ChromeExtensionsNetworkDelegate::~ChromeExtensionsNetworkDelegate() {} | 313 ChromeExtensionsNetworkDelegate::~ChromeExtensionsNetworkDelegate() {} |
315 | 314 |
316 void ChromeExtensionsNetworkDelegate::set_extension_info_map( | 315 void ChromeExtensionsNetworkDelegate::set_extension_info_map( |
317 extensions::InfoMap* extension_info_map) { | 316 extensions::InfoMap* extension_info_map) { |
318 #if defined(ENABLE_EXTENSIONS) | 317 #if defined(ENABLE_EXTENSIONS) |
319 extension_info_map_ = extension_info_map; | 318 extension_info_map_ = extension_info_map; |
320 #endif | 319 #endif |
321 } | 320 } |
322 | 321 |
323 void ChromeExtensionsNetworkDelegate::ForwardProxyErrors( | 322 void ChromeExtensionsNetworkDelegate::ForwardProxyErrors( |
324 net::URLRequest* request) { | 323 net::URLRequest* request, |
325 } | 324 int net_error) {} |
326 | 325 |
327 void ChromeExtensionsNetworkDelegate::ForwardStartRequestStatus( | 326 void ChromeExtensionsNetworkDelegate::ForwardStartRequestStatus( |
328 net::URLRequest* request) { | 327 net::URLRequest* request) { |
329 } | 328 } |
330 | 329 |
331 void ChromeExtensionsNetworkDelegate::ForwardDoneRequestStatus( | 330 void ChromeExtensionsNetworkDelegate::ForwardDoneRequestStatus( |
332 net::URLRequest* request) { | 331 net::URLRequest* request) { |
333 } | 332 } |
334 | 333 |
335 int ChromeExtensionsNetworkDelegate::OnBeforeURLRequest( | 334 int ChromeExtensionsNetworkDelegate::OnBeforeURLRequest( |
(...skipping 21 matching lines...) Expand all Loading... |
357 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 356 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
358 GURL* allowed_unsafe_redirect_url) { | 357 GURL* allowed_unsafe_redirect_url) { |
359 return net::OK; | 358 return net::OK; |
360 } | 359 } |
361 | 360 |
362 void ChromeExtensionsNetworkDelegate::OnBeforeRedirect( | 361 void ChromeExtensionsNetworkDelegate::OnBeforeRedirect( |
363 net::URLRequest* request, | 362 net::URLRequest* request, |
364 const GURL& new_location) { | 363 const GURL& new_location) { |
365 } | 364 } |
366 | 365 |
| 366 void ChromeExtensionsNetworkDelegate::OnResponseStarted( |
| 367 net::URLRequest* request, |
| 368 int net_error) {} |
367 | 369 |
368 void ChromeExtensionsNetworkDelegate::OnResponseStarted( | 370 void ChromeExtensionsNetworkDelegate::OnCompleted(net::URLRequest* request, |
369 net::URLRequest* request) { | 371 bool started, |
370 } | 372 int net_error) {} |
371 | |
372 void ChromeExtensionsNetworkDelegate::OnCompleted( | |
373 net::URLRequest* request, | |
374 bool started) { | |
375 } | |
376 | 373 |
377 void ChromeExtensionsNetworkDelegate::OnURLRequestDestroyed( | 374 void ChromeExtensionsNetworkDelegate::OnURLRequestDestroyed( |
378 net::URLRequest* request) { | 375 net::URLRequest* request) { |
379 } | 376 } |
380 | 377 |
381 void ChromeExtensionsNetworkDelegate::OnPACScriptError( | 378 void ChromeExtensionsNetworkDelegate::OnPACScriptError( |
382 int line_number, | 379 int line_number, |
383 const base::string16& error) { | 380 const base::string16& error) { |
384 } | 381 } |
385 | 382 |
386 net::NetworkDelegate::AuthRequiredResponse | 383 net::NetworkDelegate::AuthRequiredResponse |
387 ChromeExtensionsNetworkDelegate::OnAuthRequired( | 384 ChromeExtensionsNetworkDelegate::OnAuthRequired( |
388 net::URLRequest* request, | 385 net::URLRequest* request, |
389 const net::AuthChallengeInfo& auth_info, | 386 const net::AuthChallengeInfo& auth_info, |
390 const AuthCallback& callback, | 387 const AuthCallback& callback, |
391 net::AuthCredentials* credentials) { | 388 net::AuthCredentials* credentials) { |
392 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 389 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
393 } | 390 } |
OLD | NEW |