Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2351)

Unified Diff: android_webview/browser/net/aw_url_request_context_getter.h

Issue 11308362: Add StoragePartition's ProtocolHandlers at URLRequestContext construction time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address awong's two nits Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/browser/net/aw_url_request_context_getter.h
diff --git a/android_webview/browser/net/aw_url_request_context_getter.h b/android_webview/browser/net/aw_url_request_context_getter.h
index c5b9ecf4711b2cdffde63916e8ff1f804c20d86b..cc2d81fadc54c40a2abea5f1e7985d0555ec887d 100644
--- a/android_webview/browser/net/aw_url_request_context_getter.h
+++ b/android_webview/browser/net/aw_url_request_context_getter.h
@@ -5,15 +5,13 @@
#ifndef ANDROID_WEBVIEW_BROWSER_NET_AW_URL_REQUEST_CONTEXT_GETTER_H_
#define ANDROID_WEBVIEW_BROWSER_NET_AW_URL_REQUEST_CONTEXT_GETTER_H_
-#include "content/public/browser/browser_thread_delegate.h"
-
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
+#include "content/public/browser/browser_thread_delegate.h"
#include "net/http/http_network_session.h"
#include "net/url_request/url_request_context_getter.h"
-
-namespace content {
-class ResourceContext;
-}
+#include "net/url_request/url_request_job_factory.h"
namespace net {
class HttpTransactionFactory;
@@ -30,12 +28,10 @@ class AwNetworkDelegate;
class AwURLRequestContextGetter : public net::URLRequestContextGetter,
public content::BrowserThreadDelegate {
public:
- AwURLRequestContextGetter(AwBrowserContext* browser_context);
+ explicit AwURLRequestContextGetter(AwBrowserContext* browser_context);
void InitializeOnNetworkThread();
- content::ResourceContext* GetResourceContext();
-
// content::BrowserThreadDelegate implementation.
virtual void Init() OVERRIDE;
virtual void CleanUp() OVERRIDE {}
@@ -46,17 +42,48 @@ class AwURLRequestContextGetter : public net::URLRequestContextGetter,
GetNetworkTaskRunner() const OVERRIDE;
private:
+ friend class AwBrowserContext;
+
virtual ~AwURLRequestContextGetter();
+ // Prior to GetURLRequestContext() being called, SetProtocolHandlers() is
+ // called to hand over the ProtocolHandlers that GetURLRequestContext() will
+ // later install into |job_factory_|. This ordering is enforced by having
+ // AwBrowserContext::CreateRequestContext() call SetProtocolHandlers().
+ // SetProtocolHandlers() is necessary because the ProtocolHandlers are created
+ // on the UI thread while |job_factory_| must be created on the IO thread.
+ void SetProtocolHandlers(
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ blob_protocol_handler,
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ file_system_protocol_handler,
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ developer_protocol_handler,
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ chrome_protocol_handler,
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ chrome_devtools_protocol_handler);
+
void PopulateNetworkSessionParams(net::HttpNetworkSession::Params* params);
AwBrowserContext* browser_context_; // weak
scoped_ptr<net::URLRequestContext> url_request_context_;
scoped_ptr<net::ProxyConfigService> proxy_config_service_;
- scoped_ptr<content::ResourceContext> resource_context_;
scoped_ptr<net::URLRequestJobFactory> job_factory_;
scoped_ptr<net::HttpTransactionFactory> main_http_factory_;
+ // ProtocolHandlers are stored here between SetProtocolHandlers() and the
+ // first GetURLRequestContext() call.
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> blob_protocol_handler_;
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ file_system_protocol_handler_;
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ developer_protocol_handler_;
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ chrome_protocol_handler_;
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>
+ chrome_devtools_protocol_handler_;
+
DISALLOW_COPY_AND_ASSIGN(AwURLRequestContextGetter);
};

Powered by Google App Engine
This is Rietveld 408576698