Index: content/shell/shell_browser_context.cc |
diff --git a/content/shell/shell_browser_context.cc b/content/shell/shell_browser_context.cc |
index b4644773a5534a4b32ba9419c090c12a5cffd584..1acfa79b297378001041673ce91c6628cb8c57ca 100644 |
--- a/content/shell/shell_browser_context.cc |
+++ b/content/shell/shell_browser_context.cc |
@@ -12,11 +12,12 @@ |
#include "base/path_service.h" |
#include "base/threading/thread.h" |
#include "content/public/browser/browser_thread.h" |
+#include "content/public/browser/resource_context.h" |
+#include "content/public/browser/storage_partition.h" |
+#include "content/public/common/content_switches.h" |
#include "content/shell/shell_download_manager_delegate.h" |
-#include "content/shell/shell_resource_context.h" |
#include "content/shell/shell_switches.h" |
#include "content/shell/shell_url_request_context_getter.h" |
-#include "content/public/common/content_switches.h" |
#if defined(OS_WIN) |
#include "base/base_paths_win.h" |
@@ -28,9 +29,35 @@ |
namespace content { |
+class ShellBrowserContext::ShellResourceContext : public ResourceContext { |
+ public: |
+ ShellResourceContext() : getter_(NULL) {} |
+ virtual ~ShellResourceContext() {} |
+ |
+ // ResourceContext implementation: |
+ virtual net::HostResolver* GetHostResolver() OVERRIDE { |
+ CHECK(getter_); |
+ return getter_->host_resolver(); |
+ } |
+ virtual net::URLRequestContext* GetRequestContext() OVERRIDE { |
+ CHECK(getter_); |
+ return getter_->GetURLRequestContext(); |
+ } |
+ |
+ void set_url_request_context_getter(ShellURLRequestContextGetter* getter) { |
+ getter_ = getter; |
+ } |
+ |
+ private: |
+ ShellURLRequestContextGetter* getter_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ShellResourceContext); |
+}; |
+ |
ShellBrowserContext::ShellBrowserContext(bool off_the_record) |
: off_the_record_(off_the_record), |
- ignore_certificate_errors_(false) { |
+ ignore_certificate_errors_(false), |
+ resource_context_(new ShellResourceContext) { |
InitWhileIOAllowed(); |
} |
@@ -100,14 +127,33 @@ DownloadManagerDelegate* ShellBrowserContext::GetDownloadManagerDelegate() { |
} |
net::URLRequestContextGetter* ShellBrowserContext::GetRequestContext() { |
- if (!url_request_getter_) { |
- url_request_getter_ = new ShellURLRequestContextGetter( |
- ignore_certificate_errors_, |
- GetPath(), |
- BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO), |
- BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::FILE)); |
- } |
- return url_request_getter_; |
+ return GetDefaultStoragePartition(this)->GetURLRequestContext(); |
+} |
+ |
+net::URLRequestContextGetter* ShellBrowserContext::CreateRequestContext( |
+ 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) { |
+ DCHECK(!url_request_getter_); |
+ url_request_getter_ = new ShellURLRequestContextGetter( |
+ ignore_certificate_errors_, |
+ GetPath(), |
+ BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO), |
+ BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::FILE), |
+ blob_protocol_handler.Pass(), |
+ file_system_protocol_handler.Pass(), |
+ developer_protocol_handler.Pass(), |
+ chrome_protocol_handler.Pass(), |
+ chrome_devtools_protocol_handler.Pass()); |
+ resource_context_->set_url_request_context_getter(url_request_getter_.get()); |
+ return url_request_getter_.get(); |
} |
net::URLRequestContextGetter* |
@@ -135,17 +181,23 @@ net::URLRequestContextGetter* |
} |
net::URLRequestContextGetter* |
- ShellBrowserContext::GetRequestContextForStoragePartition( |
+ ShellBrowserContext::CreateRequestContextForStoragePartition( |
const base::FilePath& partition_path, |
- bool in_memory) { |
+ bool in_memory, |
+ 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) { |
return NULL; |
} |
ResourceContext* ShellBrowserContext::GetResourceContext() { |
- if (!resource_context_.get()) { |
- resource_context_.reset(new ShellResourceContext( |
- static_cast<ShellURLRequestContextGetter*>(GetRequestContext()))); |
- } |
return resource_context_.get(); |
} |