| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 | 76 |
| 77 int process_id, render_frame_id; | 77 int process_id, render_frame_id; |
| 78 if (info->GetAssociatedRenderFrame(&process_id, &render_frame_id)) { | 78 if (info->GetAssociatedRenderFrame(&process_id, &render_frame_id)) { |
| 79 BrowserThread::PostTask( | 79 BrowserThread::PostTask( |
| 80 BrowserThread::UI, FROM_HERE, | 80 BrowserThread::UI, FROM_HERE, |
| 81 base::Bind(&NotifyEPMRequestStatus, status, profile_id, | 81 base::Bind(&NotifyEPMRequestStatus, status, profile_id, |
| 82 request->identifier(), process_id, render_frame_id)); | 82 request->identifier(), process_id, render_frame_id)); |
| 83 } | 83 } |
| 84 } | 84 } |
| 85 | 85 |
| 86 extensions::ExtensionNavigationUIData* GetExtensionNavigationUIData( | |
| 87 net::URLRequest* request) { | |
| 88 const content::ResourceRequestInfo* info = | |
| 89 content::ResourceRequestInfo::ForRequest(request); | |
| 90 if (!info) | |
| 91 return nullptr; | |
| 92 ChromeNavigationUIData* navigation_data = | |
| 93 static_cast<ChromeNavigationUIData*>(info->GetNavigationUIData()); | |
| 94 if (!navigation_data) | |
| 95 return nullptr; | |
| 96 return navigation_data->GetExtensionNavigationUIData(); | |
| 97 } | |
| 98 | |
| 99 class ChromeExtensionsNetworkDelegateImpl | 86 class ChromeExtensionsNetworkDelegateImpl |
| 100 : public ChromeExtensionsNetworkDelegate { | 87 : public ChromeExtensionsNetworkDelegate { |
| 101 public: | 88 public: |
| 102 explicit ChromeExtensionsNetworkDelegateImpl( | 89 explicit ChromeExtensionsNetworkDelegateImpl( |
| 103 extensions::EventRouterForwarder* event_router); | 90 extensions::EventRouterForwarder* event_router); |
| 104 ~ChromeExtensionsNetworkDelegateImpl() override; | 91 ~ChromeExtensionsNetworkDelegateImpl() override; |
| 105 | 92 |
| 106 private: | 93 private: |
| 107 // ChromeExtensionsNetworkDelegate implementation. | 94 // ChromeExtensionsNetworkDelegate implementation. |
| 108 void ForwardProxyErrors(net::URLRequest* request, int net_error) override; | 95 void ForwardProxyErrors(net::URLRequest* request, int net_error) override; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( | 158 void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( |
| 172 net::URLRequest* request) { | 159 net::URLRequest* request) { |
| 173 ForwardRequestStatus(REQUEST_DONE, request, profile_); | 160 ForwardRequestStatus(REQUEST_DONE, request, profile_); |
| 174 } | 161 } |
| 175 | 162 |
| 176 int ChromeExtensionsNetworkDelegateImpl::OnBeforeURLRequest( | 163 int ChromeExtensionsNetworkDelegateImpl::OnBeforeURLRequest( |
| 177 net::URLRequest* request, | 164 net::URLRequest* request, |
| 178 const net::CompletionCallback& callback, | 165 const net::CompletionCallback& callback, |
| 179 GURL* new_url) { | 166 GURL* new_url) { |
| 180 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( | 167 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( |
| 181 profile_, extension_info_map_.get(), | 168 profile_, extension_info_map_.get(), request, callback, new_url); |
| 182 GetExtensionNavigationUIData(request), request, callback, new_url); | |
| 183 } | 169 } |
| 184 | 170 |
| 185 int ChromeExtensionsNetworkDelegateImpl::OnBeforeStartTransaction( | 171 int ChromeExtensionsNetworkDelegateImpl::OnBeforeStartTransaction( |
| 186 net::URLRequest* request, | 172 net::URLRequest* request, |
| 187 const net::CompletionCallback& callback, | 173 const net::CompletionCallback& callback, |
| 188 net::HttpRequestHeaders* headers) { | 174 net::HttpRequestHeaders* headers) { |
| 189 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders( | 175 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders( |
| 190 profile_, extension_info_map_.get(), | 176 profile_, extension_info_map_.get(), request, callback, headers); |
| 191 GetExtensionNavigationUIData(request), request, callback, headers); | |
| 192 } | 177 } |
| 193 | 178 |
| 194 void ChromeExtensionsNetworkDelegateImpl::OnStartTransaction( | 179 void ChromeExtensionsNetworkDelegateImpl::OnStartTransaction( |
| 195 net::URLRequest* request, | 180 net::URLRequest* request, |
| 196 const net::HttpRequestHeaders& headers) { | 181 const net::HttpRequestHeaders& headers) { |
| 197 ExtensionWebRequestEventRouter::GetInstance()->OnSendHeaders( | 182 ExtensionWebRequestEventRouter::GetInstance()->OnSendHeaders( |
| 198 profile_, extension_info_map_.get(), | 183 profile_, extension_info_map_.get(), request, headers); |
| 199 GetExtensionNavigationUIData(request), request, headers); | |
| 200 } | 184 } |
| 201 | 185 |
| 202 int ChromeExtensionsNetworkDelegateImpl::OnHeadersReceived( | 186 int ChromeExtensionsNetworkDelegateImpl::OnHeadersReceived( |
| 203 net::URLRequest* request, | 187 net::URLRequest* request, |
| 204 const net::CompletionCallback& callback, | 188 const net::CompletionCallback& callback, |
| 205 const net::HttpResponseHeaders* original_response_headers, | 189 const net::HttpResponseHeaders* original_response_headers, |
| 206 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, | 190 scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
| 207 GURL* allowed_unsafe_redirect_url) { | 191 GURL* allowed_unsafe_redirect_url) { |
| 208 return ExtensionWebRequestEventRouter::GetInstance()->OnHeadersReceived( | 192 return ExtensionWebRequestEventRouter::GetInstance()->OnHeadersReceived( |
| 209 profile_, extension_info_map_.get(), | 193 profile_, extension_info_map_.get(), request, callback, |
| 210 GetExtensionNavigationUIData(request), request, callback, | |
| 211 original_response_headers, override_response_headers, | 194 original_response_headers, override_response_headers, |
| 212 allowed_unsafe_redirect_url); | 195 allowed_unsafe_redirect_url); |
| 213 } | 196 } |
| 214 | 197 |
| 215 void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( | 198 void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( |
| 216 net::URLRequest* request, | 199 net::URLRequest* request, |
| 217 const GURL& new_location) { | 200 const GURL& new_location) { |
| 218 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( | 201 ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( |
| 219 profile_, extension_info_map_.get(), | 202 profile_, extension_info_map_.get(), request, new_location); |
| 220 GetExtensionNavigationUIData(request), request, new_location); | |
| 221 } | 203 } |
| 222 | 204 |
| 223 void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( | 205 void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( |
| 224 net::URLRequest* request, | 206 net::URLRequest* request, |
| 225 int net_error) { | 207 int net_error) { |
| 226 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( | 208 ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( |
| 227 profile_, extension_info_map_.get(), | 209 profile_, extension_info_map_.get(), request, net_error); |
| 228 GetExtensionNavigationUIData(request), request, net_error); | |
| 229 ForwardProxyErrors(request, net_error); | 210 ForwardProxyErrors(request, net_error); |
| 230 } | 211 } |
| 231 | 212 |
| 232 void ChromeExtensionsNetworkDelegateImpl::OnCompleted(net::URLRequest* request, | 213 void ChromeExtensionsNetworkDelegateImpl::OnCompleted(net::URLRequest* request, |
| 233 bool started, | 214 bool started, |
| 234 int net_error) { | 215 int net_error) { |
| 235 DCHECK_NE(net::ERR_IO_PENDING, net_error); | 216 DCHECK_NE(net::ERR_IO_PENDING, net_error); |
| 236 | 217 |
| 237 if (net_error != net::OK) { | 218 if (net_error != net::OK) { |
| 238 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( | 219 ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( |
| 239 profile_, extension_info_map_.get(), | 220 profile_, extension_info_map_.get(), request, started, net_error); |
| 240 GetExtensionNavigationUIData(request), request, started, net_error); | |
| 241 return; | 221 return; |
| 242 } | 222 } |
| 243 | 223 |
| 244 bool is_redirect = request->response_headers() && | 224 bool is_redirect = request->response_headers() && |
| 245 net::HttpResponseHeaders::IsRedirectResponseCode( | 225 net::HttpResponseHeaders::IsRedirectResponseCode( |
| 246 request->response_headers()->response_code()); | 226 request->response_headers()->response_code()); |
| 247 if (!is_redirect) { | 227 if (!is_redirect) { |
| 248 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( | 228 ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( |
| 249 profile_, extension_info_map_.get(), | 229 profile_, extension_info_map_.get(), request, net_error); |
| 250 GetExtensionNavigationUIData(request), request, net_error); | |
| 251 } | 230 } |
| 252 } | 231 } |
| 253 | 232 |
| 254 void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( | 233 void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( |
| 255 net::URLRequest* request) { | 234 net::URLRequest* request) { |
| 256 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( | 235 ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( |
| 257 profile_, request); | 236 profile_, request); |
| 258 } | 237 } |
| 259 | 238 |
| 260 void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( | 239 void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( |
| 261 int line_number, | 240 int line_number, |
| 262 const base::string16& error) { | 241 const base::string16& error) { |
| 263 extensions::ProxyEventRouter::GetInstance()->OnPACScriptError( | 242 extensions::ProxyEventRouter::GetInstance()->OnPACScriptError( |
| 264 event_router_.get(), profile_, line_number, error); | 243 event_router_.get(), profile_, line_number, error); |
| 265 } | 244 } |
| 266 | 245 |
| 267 net::NetworkDelegate::AuthRequiredResponse | 246 net::NetworkDelegate::AuthRequiredResponse |
| 268 ChromeExtensionsNetworkDelegateImpl::OnAuthRequired( | 247 ChromeExtensionsNetworkDelegateImpl::OnAuthRequired( |
| 269 net::URLRequest* request, | 248 net::URLRequest* request, |
| 270 const net::AuthChallengeInfo& auth_info, | 249 const net::AuthChallengeInfo& auth_info, |
| 271 const AuthCallback& callback, | 250 const AuthCallback& callback, |
| 272 net::AuthCredentials* credentials) { | 251 net::AuthCredentials* credentials) { |
| 273 return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired( | 252 return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired( |
| 274 profile_, extension_info_map_.get(), | 253 profile_, extension_info_map_.get(), request, auth_info, callback, |
| 275 GetExtensionNavigationUIData(request), request, auth_info, callback, | |
| 276 credentials); | 254 credentials); |
| 277 } | 255 } |
| 278 | 256 |
| 279 } // namespace | 257 } // namespace |
| 280 | 258 |
| 281 #endif // defined(ENABLE_EXTENSIONS) | 259 #endif // defined(ENABLE_EXTENSIONS) |
| 282 | 260 |
| 283 // static | 261 // static |
| 284 ChromeExtensionsNetworkDelegate* ChromeExtensionsNetworkDelegate::Create( | 262 ChromeExtensionsNetworkDelegate* ChromeExtensionsNetworkDelegate::Create( |
| 285 extensions::EventRouterForwarder* event_router) { | 263 extensions::EventRouterForwarder* event_router) { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 } | 343 } |
| 366 | 344 |
| 367 net::NetworkDelegate::AuthRequiredResponse | 345 net::NetworkDelegate::AuthRequiredResponse |
| 368 ChromeExtensionsNetworkDelegate::OnAuthRequired( | 346 ChromeExtensionsNetworkDelegate::OnAuthRequired( |
| 369 net::URLRequest* request, | 347 net::URLRequest* request, |
| 370 const net::AuthChallengeInfo& auth_info, | 348 const net::AuthChallengeInfo& auth_info, |
| 371 const AuthCallback& callback, | 349 const AuthCallback& callback, |
| 372 net::AuthCredentials* credentials) { | 350 net::AuthCredentials* credentials) { |
| 373 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 351 return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
| 374 } | 352 } |
| OLD | NEW |