Index: extensions/browser/extension_network_delegate.cc |
diff --git a/chrome/browser/net/chrome_extensions_network_delegate.cc b/extensions/browser/extension_network_delegate.cc |
similarity index 23% |
copy from chrome/browser/net/chrome_extensions_network_delegate.cc |
copy to extensions/browser/extension_network_delegate.cc |
index 3a0a123ee8f055252dceb61bb984b8e088110c25..50516df7efd0a250c4c37d1a500d9378139a1687 100644 |
--- a/chrome/browser/net/chrome_extensions_network_delegate.cc |
+++ b/extensions/browser/extension_network_delegate.cc |
@@ -2,188 +2,65 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/net/chrome_extensions_network_delegate.h" |
+#include "extensions/browser/extension_network_delegate.h" |
-#include "net/base/net_errors.h" |
- |
-#if defined(ENABLE_EXTENSIONS) |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/extensions/api/proxy/proxy_api.h" |
-#include "chrome/browser/extensions/event_router_forwarder.h" |
-#include "chrome/browser/profiles/profile_manager.h" |
-#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/render_frame_host.h" |
#include "content/public/browser/resource_request_info.h" |
#include "extensions/browser/api/web_request/web_request_api.h" |
#include "extensions/browser/extension_system.h" |
-#include "extensions/browser/info_map.h" |
+#include "extensions/browser/extensions_browser_client.h" |
#include "extensions/browser/process_manager.h" |
#include "net/url_request/url_request.h" |
-using content::BrowserThread; |
-using content::ResourceRequestInfo; |
+namespace extensions { |
namespace { |
- |
-enum RequestStatus { REQUEST_STARTED, REQUEST_DONE }; |
- |
-// Notifies the extensions::ProcessManager that a request has started or stopped |
-// for a particular RenderFrame. |
-void NotifyEPMRequestStatus(RequestStatus status, |
- void* profile_id, |
- int process_id, |
- int render_frame_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- Profile* profile = reinterpret_cast<Profile*>(profile_id); |
- if (!g_browser_process->profile_manager()->IsValidProfile(profile)) |
- return; |
- |
- extensions::ProcessManager* process_manager = |
- extensions::ExtensionSystem::Get(profile)->process_manager(); |
- // This may be NULL in unit tests. |
- if (!process_manager) |
- return; |
- |
- // Will be NULL if the request was not issued on behalf of a renderer (e.g. a |
- // system-level request). |
- content::RenderFrameHost* render_frame_host = |
- content::RenderFrameHost::FromID(process_id, render_frame_id); |
- if (render_frame_host) { |
- if (status == REQUEST_STARTED) { |
- process_manager->OnNetworkRequestStarted(render_frame_host); |
- } else if (status == REQUEST_DONE) { |
- process_manager->OnNetworkRequestDone(render_frame_host); |
- } else { |
- NOTREACHED(); |
- } |
- } |
-} |
- |
-void ForwardRequestStatus( |
- RequestStatus status, net::URLRequest* request, void* profile_id) { |
- const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); |
- if (!info) |
- return; |
- |
- if (status == REQUEST_STARTED && request->url_chain().size() > 1) { |
- // It's a redirect, this request has already been counted. |
- return; |
- } |
- |
- int process_id, render_frame_id; |
- if (info->GetAssociatedRenderFrame(&process_id, &render_frame_id)) { |
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
- base::Bind(&NotifyEPMRequestStatus, |
- status, profile_id, process_id, render_frame_id)); |
- } |
-} |
- |
-class ChromeExtensionsNetworkDelegateImpl |
- : public ChromeExtensionsNetworkDelegate { |
- public: |
- explicit ChromeExtensionsNetworkDelegateImpl( |
- extensions::EventRouterForwarder* event_router); |
- virtual ~ChromeExtensionsNetworkDelegateImpl(); |
- |
- private: |
- // ChromeExtensionsNetworkDelegate implementation. |
- virtual void ForwardProxyErrors(net::URLRequest* request) OVERRIDE; |
- virtual void ForwardStartRequestStatus(net::URLRequest* request) OVERRIDE; |
- virtual void ForwardDoneRequestStatus(net::URLRequest* request) OVERRIDE; |
- virtual int OnBeforeURLRequest(net::URLRequest* request, |
- const net::CompletionCallback& callback, |
- GURL* new_url) OVERRIDE; |
- virtual int OnBeforeSendHeaders(net::URLRequest* request, |
- const net::CompletionCallback& callback, |
- net::HttpRequestHeaders* headers) OVERRIDE; |
- virtual void OnSendHeaders(net::URLRequest* request, |
- const net::HttpRequestHeaders& headers) OVERRIDE; |
- virtual int OnHeadersReceived( |
- net::URLRequest* request, |
- const net::CompletionCallback& callback, |
- const net::HttpResponseHeaders* original_response_headers, |
- scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
- GURL* allowed_unsafe_redirect_url) OVERRIDE; |
- virtual void OnBeforeRedirect(net::URLRequest* request, |
- const GURL& new_location) OVERRIDE; |
- virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE; |
- virtual void OnCompleted(net::URLRequest* request, bool started) OVERRIDE; |
- virtual void OnURLRequestDestroyed(net::URLRequest* request) OVERRIDE; |
- virtual void OnPACScriptError(int line_number, |
- const base::string16& error) OVERRIDE; |
- virtual net::NetworkDelegate::AuthRequiredResponse OnAuthRequired( |
- net::URLRequest* request, |
- const net::AuthChallengeInfo& auth_info, |
- const AuthCallback& callback, |
- net::AuthCredentials* credentials) OVERRIDE; |
- |
- scoped_refptr<extensions::EventRouterForwarder> event_router_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsNetworkDelegateImpl); |
-}; |
- |
-ChromeExtensionsNetworkDelegateImpl::ChromeExtensionsNetworkDelegateImpl( |
- extensions::EventRouterForwarder* event_router) { |
- DCHECK(event_router); |
- event_router_ = event_router; |
+bool g_accept_all_cookies = true; |
} |
-ChromeExtensionsNetworkDelegateImpl::~ChromeExtensionsNetworkDelegateImpl() {} |
- |
-void ChromeExtensionsNetworkDelegateImpl::ForwardProxyErrors( |
- net::URLRequest* request) { |
- if (request->status().status() == net::URLRequestStatus::FAILED) { |
- switch (request->status().error()) { |
- case net::ERR_PROXY_AUTH_UNSUPPORTED: |
- case net::ERR_PROXY_CONNECTION_FAILED: |
- case net::ERR_TUNNEL_CONNECTION_FAILED: |
- extensions::ProxyEventRouter::GetInstance()->OnProxyError( |
- event_router_.get(), profile_, request->status().error()); |
- } |
- } |
+ExtensionNetworkDelegate::ExtensionNetworkDelegate( |
+ void* browser_context, InfoMap* extension_info_map) { |
+ browser_context_ = browser_context; |
+ extension_info_map_ = extension_info_map; |
} |
-void ChromeExtensionsNetworkDelegateImpl::ForwardStartRequestStatus( |
- net::URLRequest* request) { |
- ForwardRequestStatus(REQUEST_STARTED, request, profile_); |
-} |
+ExtensionNetworkDelegate::~ExtensionNetworkDelegate() {} |
-void ChromeExtensionsNetworkDelegateImpl::ForwardDoneRequestStatus( |
- net::URLRequest* request) { |
- ForwardRequestStatus(REQUEST_DONE, request, profile_); |
+void ExtensionNetworkDelegate::SetAcceptAllCookies(bool accept) { |
+ g_accept_all_cookies = accept; |
} |
-int ChromeExtensionsNetworkDelegateImpl::OnBeforeURLRequest( |
+int ExtensionNetworkDelegate::OnBeforeURLRequest( |
net::URLRequest* request, |
const net::CompletionCallback& callback, |
GURL* new_url) { |
return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( |
- profile_, extension_info_map_.get(), request, callback, new_url); |
+ browser_context_, extension_info_map_.get(), request, callback, new_url); |
} |
-int ChromeExtensionsNetworkDelegateImpl::OnBeforeSendHeaders( |
+int ExtensionNetworkDelegate::OnBeforeSendHeaders( |
net::URLRequest* request, |
const net::CompletionCallback& callback, |
net::HttpRequestHeaders* headers) { |
return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders( |
- profile_, extension_info_map_.get(), request, callback, headers); |
+ browser_context_, extension_info_map_.get(), request, callback, headers); |
} |
-void ChromeExtensionsNetworkDelegateImpl::OnSendHeaders( |
+void ExtensionNetworkDelegate::OnSendHeaders( |
net::URLRequest* request, |
const net::HttpRequestHeaders& headers) { |
ExtensionWebRequestEventRouter::GetInstance()->OnSendHeaders( |
- profile_, extension_info_map_.get(), request, headers); |
+ browser_context_, extension_info_map_.get(), request, headers); |
} |
-int ChromeExtensionsNetworkDelegateImpl::OnHeadersReceived( |
+int ExtensionNetworkDelegate::OnHeadersReceived( |
net::URLRequest* request, |
const net::CompletionCallback& callback, |
const net::HttpResponseHeaders* original_response_headers, |
scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
GURL* allowed_unsafe_redirect_url) { |
return ExtensionWebRequestEventRouter::GetInstance()->OnHeadersReceived( |
- profile_, |
+ browser_context_, |
extension_info_map_.get(), |
request, |
callback, |
@@ -192,22 +69,21 @@ int ChromeExtensionsNetworkDelegateImpl::OnHeadersReceived( |
allowed_unsafe_redirect_url); |
} |
-void ChromeExtensionsNetworkDelegateImpl::OnBeforeRedirect( |
+void ExtensionNetworkDelegate::OnBeforeRedirect( |
net::URLRequest* request, |
const GURL& new_location) { |
ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRedirect( |
- profile_, extension_info_map_.get(), request, new_location); |
+ browser_context_, extension_info_map_.get(), request, new_location); |
} |
-void ChromeExtensionsNetworkDelegateImpl::OnResponseStarted( |
+void ExtensionNetworkDelegate::OnResponseStarted( |
net::URLRequest* request) { |
ExtensionWebRequestEventRouter::GetInstance()->OnResponseStarted( |
- profile_, extension_info_map_.get(), request); |
- ForwardProxyErrors(request); |
+ browser_context_, extension_info_map_.get(), request); |
} |
-void ChromeExtensionsNetworkDelegateImpl::OnCompleted( |
+void ExtensionNetworkDelegate::OnCompleted( |
net::URLRequest* request, |
bool started) { |
if (request->status().status() == net::URLRequestStatus::SUCCESS) { |
@@ -216,7 +92,7 @@ void ChromeExtensionsNetworkDelegateImpl::OnCompleted( |
request->response_headers()->response_code()); |
if (!is_redirect) { |
ExtensionWebRequestEventRouter::GetInstance()->OnCompleted( |
- profile_, extension_info_map_.get(), request); |
+ browser_context_, extension_info_map_.get(), request); |
} |
return; |
} |
@@ -224,133 +100,33 @@ void ChromeExtensionsNetworkDelegateImpl::OnCompleted( |
if (request->status().status() == net::URLRequestStatus::FAILED || |
request->status().status() == net::URLRequestStatus::CANCELED) { |
ExtensionWebRequestEventRouter::GetInstance()->OnErrorOccurred( |
- profile_, extension_info_map_.get(), request, started); |
+ browser_context_, extension_info_map_.get(), request, started); |
return; |
} |
NOTREACHED(); |
} |
-void ChromeExtensionsNetworkDelegateImpl::OnURLRequestDestroyed( |
+void ExtensionNetworkDelegate::OnURLRequestDestroyed( |
net::URLRequest* request) { |
ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( |
- profile_, request); |
+ browser_context_, request); |
} |
-void ChromeExtensionsNetworkDelegateImpl::OnPACScriptError( |
+void ExtensionNetworkDelegate::OnPACScriptError( |
int line_number, |
const base::string16& error) { |
- extensions::ProxyEventRouter::GetInstance()->OnPACScriptError( |
- event_router_.get(), profile_, line_number, error); |
} |
net::NetworkDelegate::AuthRequiredResponse |
-ChromeExtensionsNetworkDelegateImpl::OnAuthRequired( |
+ExtensionNetworkDelegate::OnAuthRequired( |
net::URLRequest* request, |
const net::AuthChallengeInfo& auth_info, |
const AuthCallback& callback, |
net::AuthCredentials* credentials) { |
return ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired( |
- profile_, extension_info_map_.get(), request, auth_info, callback, |
+ browser_context_, extension_info_map_.get(), request, auth_info, callback, |
credentials); |
} |
-} // namespace |
- |
-#endif // defined(ENABLE_EXTENSIONS) |
- |
-// static |
-ChromeExtensionsNetworkDelegate* ChromeExtensionsNetworkDelegate::Create( |
- extensions::EventRouterForwarder* event_router) { |
-#if defined(ENABLE_EXTENSIONS) |
- return new ChromeExtensionsNetworkDelegateImpl(event_router); |
-#else |
- return new ChromeExtensionsNetworkDelegate(); |
-#endif |
-} |
- |
-ChromeExtensionsNetworkDelegate::ChromeExtensionsNetworkDelegate() |
- : profile_(NULL) { |
-} |
- |
-ChromeExtensionsNetworkDelegate::~ChromeExtensionsNetworkDelegate() {} |
- |
-void ChromeExtensionsNetworkDelegate::set_extension_info_map( |
- extensions::InfoMap* extension_info_map) { |
-#if defined(ENABLE_EXTENSIONS) |
- extension_info_map_ = extension_info_map; |
-#endif |
-} |
- |
-void ChromeExtensionsNetworkDelegate::ForwardProxyErrors( |
- net::URLRequest* request) { |
-} |
- |
-void ChromeExtensionsNetworkDelegate::ForwardStartRequestStatus( |
- net::URLRequest* request) { |
-} |
- |
-void ChromeExtensionsNetworkDelegate::ForwardDoneRequestStatus( |
- net::URLRequest* request) { |
-} |
- |
-int ChromeExtensionsNetworkDelegate::OnBeforeURLRequest( |
- net::URLRequest* request, |
- const net::CompletionCallback& callback, |
- GURL* new_url) { |
- return net::OK; |
-} |
- |
-int ChromeExtensionsNetworkDelegate::OnBeforeSendHeaders( |
- net::URLRequest* request, |
- const net::CompletionCallback& callback, |
- net::HttpRequestHeaders* headers) { |
- return net::OK; |
-} |
- |
-void ChromeExtensionsNetworkDelegate::OnSendHeaders( |
- net::URLRequest* request, |
- const net::HttpRequestHeaders& headers) { |
-} |
- |
-int ChromeExtensionsNetworkDelegate::OnHeadersReceived( |
- net::URLRequest* request, |
- const net::CompletionCallback& callback, |
- const net::HttpResponseHeaders* original_response_headers, |
- scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
- GURL* allowed_unsafe_redirect_url) { |
- return net::OK; |
-} |
- |
-void ChromeExtensionsNetworkDelegate::OnBeforeRedirect( |
- net::URLRequest* request, |
- const GURL& new_location) { |
-} |
- |
- |
-void ChromeExtensionsNetworkDelegate::OnResponseStarted( |
- net::URLRequest* request) { |
-} |
- |
-void ChromeExtensionsNetworkDelegate::OnCompleted( |
- net::URLRequest* request, |
- bool started) { |
-} |
- |
-void ChromeExtensionsNetworkDelegate::OnURLRequestDestroyed( |
- net::URLRequest* request) { |
-} |
- |
-void ChromeExtensionsNetworkDelegate::OnPACScriptError( |
- int line_number, |
- const base::string16& error) { |
-} |
- |
-net::NetworkDelegate::AuthRequiredResponse |
-ChromeExtensionsNetworkDelegate::OnAuthRequired( |
- net::URLRequest* request, |
- const net::AuthChallengeInfo& auth_info, |
- const AuthCallback& callback, |
- net::AuthCredentials* credentials) { |
- return net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
-} |
+} // namespace extensions |