Index: extensions/shell/browser/shell_browser_context.cc |
diff --git a/extensions/shell/browser/shell_browser_context.cc b/extensions/shell/browser/shell_browser_context.cc |
index 33a08e3c99815994cc038c1c08ffe963f625cd6e..8659de1ec59f8eb88a333e89707a6cc8bf16d2cd 100644 |
--- a/extensions/shell/browser/shell_browser_context.cc |
+++ b/extensions/shell/browser/shell_browser_context.cc |
@@ -4,16 +4,29 @@ |
#include "extensions/shell/browser/shell_browser_context.h" |
+#include "base/command_line.h" |
+#include "content/public/browser/browser_thread.h" |
+#include "content/public/common/content_switches.h" |
+#include "extensions/browser/extension_network_delegate.h" |
+#include "extensions/browser/extension_url_request_context_getter.h" |
#include "extensions/browser/guest_view/guest_view_manager.h" |
+#include "extensions/common/switches.h" |
#include "extensions/shell/browser/shell_special_storage_policy.h" |
namespace extensions { |
// Create a normal recording browser context. If we used an incognito context |
// then app_shell would also have to create a normal context and manage both. |
-ShellBrowserContext::ShellBrowserContext() |
+ShellBrowserContext::ShellBrowserContext(net::NetLog* net_log) |
: content::ShellBrowserContext(false, NULL), |
+ net_log_(net_log), |
+ ignore_certificate_errors_(false), |
storage_policy_(new ShellSpecialStoragePolicy) { |
+ base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
+ if (cmd_line->HasSwitch(::switches::kIgnoreCertificateErrors) || |
+ cmd_line->HasSwitch(switches::kDumpRenderTree)) { |
+ ignore_certificate_errors_ = true; |
+ } |
} |
ShellBrowserContext::~ShellBrowserContext() { |
@@ -27,6 +40,43 @@ storage::SpecialStoragePolicy* ShellBrowserContext::GetSpecialStoragePolicy() { |
return storage_policy_.get(); |
} |
+net::URLRequestContextGetter* ShellBrowserContext::CreateRequestContext( |
+ content::ProtocolHandlerMap* protocol_handlers, |
+ content::URLRequestInterceptorScopedVector request_interceptors, |
+ InfoMap* extension_info_map) { |
+ DCHECK(!url_request_context_getter_.get()); |
+ url_request_context_getter_ = |
+ new extensions::ExtensionURLRequestContextGetter( |
+ this, |
+ ignore_certificate_errors_, |
+ GetPath(), |
+ content::BrowserThread::UnsafeGetMessageLoopForThread( |
+ content::BrowserThread::IO), |
+ content::BrowserThread::UnsafeGetMessageLoopForThread( |
+ content::BrowserThread::FILE), |
+ protocol_handlers, |
+ request_interceptors.Pass(), |
+ net_log_, |
+ extension_info_map); |
+ Init(); |
+ return url_request_context_getter_.get(); |
+} |
+ |
+void ShellBrowserContext::Init(){ |
+ content:: BrowserThread:: PostTask( |
+ content::BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind( |
+ &ShellBrowserContext::InitializationOnIOThread, |
+ base::Unretained(this))); |
+} |
+ |
+void ShellBrowserContext::InitializationOnIOThread() { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
+ |
+ url_request_context_getter_->GetURLRequestContext(); |
+} |
+ |
void ShellBrowserContext::ProfileFunctionCallOnNonProfileBrowserContext1() { |
NOTREACHED(); |
} |