Merge pull request #136 from deepak1556/browser_context_partition_patch
handle partition config in browser context
This commit is contained in:
commit
7612b10dc1
10 changed files with 57 additions and 35 deletions
|
@ -69,13 +69,17 @@ class BrowserContext::ResourceContext : public content::ResourceContext {
|
||||||
BrowserContext::BrowserContext() : resource_context_(new ResourceContext) {
|
BrowserContext::BrowserContext() : resource_context_(new ResourceContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserContext::Initialize() {
|
void BrowserContext::Initialize(const std::string& partition_path, bool in_memory) {
|
||||||
if (!PathService::Get(DIR_USER_DATA, &path_)) {
|
if (!PathService::Get(DIR_USER_DATA, &path_)) {
|
||||||
PathService::Get(DIR_APP_DATA, &path_);
|
PathService::Get(DIR_APP_DATA, &path_);
|
||||||
path_ = path_.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName()));
|
path_ = path_.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName()));
|
||||||
PathService::Override(DIR_USER_DATA, path_);
|
PathService::Override(DIR_USER_DATA, path_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!partition_path.empty())
|
||||||
|
path_ = path_.Append(base::FilePath::FromUTF8Unsafe(partition_path));
|
||||||
|
in_memory_ = in_memory;
|
||||||
|
|
||||||
auto prefs_path = GetPath().Append(FILE_PATH_LITERAL("Preferences"));
|
auto prefs_path = GetPath().Append(FILE_PATH_LITERAL("Preferences"));
|
||||||
base::PrefServiceFactory prefs_factory;
|
base::PrefServiceFactory prefs_factory;
|
||||||
prefs_factory.SetUserPrefsFile(prefs_path,
|
prefs_factory.SetUserPrefsFile(prefs_path,
|
||||||
|
@ -108,6 +112,7 @@ net::URLRequestContextGetter* BrowserContext::CreateRequestContext(
|
||||||
this,
|
this,
|
||||||
net_log,
|
net_log,
|
||||||
GetPath(),
|
GetPath(),
|
||||||
|
in_memory_,
|
||||||
BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO),
|
BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO),
|
||||||
BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::FILE),
|
BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::FILE),
|
||||||
protocol_handlers,
|
protocol_handlers,
|
||||||
|
@ -130,7 +135,7 @@ scoped_ptr<content::ZoomLevelDelegate> BrowserContext::CreateZoomLevelDelegate(
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BrowserContext::IsOffTheRecord() const {
|
bool BrowserContext::IsOffTheRecord() const {
|
||||||
return false;
|
return in_memory_;
|
||||||
}
|
}
|
||||||
|
|
||||||
net::URLRequestContextGetter* BrowserContext::GetRequestContext() {
|
net::URLRequestContextGetter* BrowserContext::GetRequestContext() {
|
||||||
|
|
|
@ -23,7 +23,8 @@ class BrowserContext : public content::BrowserContext,
|
||||||
BrowserContext();
|
BrowserContext();
|
||||||
~BrowserContext();
|
~BrowserContext();
|
||||||
|
|
||||||
virtual void Initialize();
|
virtual void Initialize(const std::string& partition_path,
|
||||||
|
bool in_memory = false);
|
||||||
|
|
||||||
// content::BrowserContext:
|
// content::BrowserContext:
|
||||||
scoped_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate(
|
scoped_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate(
|
||||||
|
@ -71,6 +72,7 @@ class BrowserContext : public content::BrowserContext,
|
||||||
void RegisterInternalPrefs(PrefRegistrySimple* pref_registry);
|
void RegisterInternalPrefs(PrefRegistrySimple* pref_registry);
|
||||||
|
|
||||||
base::FilePath path_;
|
base::FilePath path_;
|
||||||
|
bool in_memory_;
|
||||||
scoped_ptr<ResourceContext> resource_context_;
|
scoped_ptr<ResourceContext> resource_context_;
|
||||||
scoped_refptr<URLRequestContextGetter> url_request_getter_;
|
scoped_refptr<URLRequestContextGetter> url_request_getter_;
|
||||||
scoped_ptr<PrefService> prefs_;
|
scoped_ptr<PrefService> prefs_;
|
||||||
|
|
|
@ -121,12 +121,10 @@ void BrowserMainParts::PreMainMessageLoopStart() {
|
||||||
|
|
||||||
void BrowserMainParts::PreMainMessageLoopRun() {
|
void BrowserMainParts::PreMainMessageLoopRun() {
|
||||||
browser_context_.reset(CreateBrowserContext());
|
browser_context_.reset(CreateBrowserContext());
|
||||||
browser_context_->Initialize();
|
browser_context_->Initialize(std::string());
|
||||||
|
|
||||||
web_ui_controller_factory_.reset(
|
|
||||||
new WebUIControllerFactory(browser_context_.get()));
|
|
||||||
content::WebUIControllerFactory::RegisterFactory(
|
content::WebUIControllerFactory::RegisterFactory(
|
||||||
web_ui_controller_factory_.get());
|
WebUIControllerFactory::GetInstance());
|
||||||
|
|
||||||
// --remote-debugging-port
|
// --remote-debugging-port
|
||||||
auto command_line = base::CommandLine::ForCurrentProcess();
|
auto command_line = base::CommandLine::ForCurrentProcess();
|
||||||
|
|
|
@ -28,7 +28,6 @@ class WMState;
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
class BrowserContext;
|
class BrowserContext;
|
||||||
class WebUIControllerFactory;
|
|
||||||
|
|
||||||
class BrowserMainParts : public content::BrowserMainParts {
|
class BrowserMainParts : public content::BrowserMainParts {
|
||||||
public:
|
public:
|
||||||
|
@ -57,7 +56,6 @@ class BrowserMainParts : public content::BrowserMainParts {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
scoped_ptr<BrowserContext> browser_context_;
|
scoped_ptr<BrowserContext> browser_context_;
|
||||||
scoped_ptr<WebUIControllerFactory> web_ui_controller_factory_;
|
|
||||||
scoped_ptr<devtools_http_handler::DevToolsHttpHandler> devtools_http_handler_;
|
scoped_ptr<devtools_http_handler::DevToolsHttpHandler> devtools_http_handler_;
|
||||||
|
|
||||||
#if defined(TOOLKIT_VIEWS)
|
#if defined(TOOLKIT_VIEWS)
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "browser/browser_context.h"
|
|
||||||
|
|
||||||
#include "base/memory/ref_counted_memory.h"
|
#include "base/memory/ref_counted_memory.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "base/strings/stringprintf.h"
|
#include "base/strings/stringprintf.h"
|
||||||
|
@ -93,7 +91,8 @@ class BundledDataSource : public content::URLDataSource {
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
DevToolsUI::DevToolsUI(BrowserContext* browser_context, content::WebUI* web_ui)
|
DevToolsUI::DevToolsUI(content::BrowserContext* browser_context,
|
||||||
|
content::WebUI* web_ui)
|
||||||
: WebUIController(web_ui) {
|
: WebUIController(web_ui) {
|
||||||
web_ui->SetBindings(0);
|
web_ui->SetBindings(0);
|
||||||
content::URLDataSource::Add(browser_context, new BundledDataSource());
|
content::URLDataSource::Add(browser_context, new BundledDataSource());
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#define BRIGHTRAY_BROWSER_DEVTOOLS_UI_H_
|
#define BRIGHTRAY_BROWSER_DEVTOOLS_UI_H_
|
||||||
|
|
||||||
#include "base/compiler_specific.h"
|
#include "base/compiler_specific.h"
|
||||||
|
#include "content/public/browser/browser_context.h"
|
||||||
#include "content/public/browser/web_ui_controller.h"
|
#include "content/public/browser/web_ui_controller.h"
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
@ -14,7 +15,8 @@ class BrowserContext;
|
||||||
|
|
||||||
class DevToolsUI : public content::WebUIController {
|
class DevToolsUI : public content::WebUIController {
|
||||||
public:
|
public:
|
||||||
explicit DevToolsUI(BrowserContext* browser_context, content::WebUI* web_ui);
|
explicit DevToolsUI(content::BrowserContext* browser_context,
|
||||||
|
content::WebUI* web_ui);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DISALLOW_COPY_AND_ASSIGN(DevToolsUI);
|
DISALLOW_COPY_AND_ASSIGN(DevToolsUI);
|
||||||
|
|
|
@ -121,6 +121,7 @@ URLRequestContextGetter::URLRequestContextGetter(
|
||||||
Delegate* delegate,
|
Delegate* delegate,
|
||||||
NetLog* net_log,
|
NetLog* net_log,
|
||||||
const base::FilePath& base_path,
|
const base::FilePath& base_path,
|
||||||
|
bool in_memory,
|
||||||
base::MessageLoop* io_loop,
|
base::MessageLoop* io_loop,
|
||||||
base::MessageLoop* file_loop,
|
base::MessageLoop* file_loop,
|
||||||
content::ProtocolHandlerMap* protocol_handlers,
|
content::ProtocolHandlerMap* protocol_handlers,
|
||||||
|
@ -128,6 +129,7 @@ URLRequestContextGetter::URLRequestContextGetter(
|
||||||
: delegate_(delegate),
|
: delegate_(delegate),
|
||||||
net_log_(net_log),
|
net_log_(net_log),
|
||||||
base_path_(base_path),
|
base_path_(base_path),
|
||||||
|
in_memory_(in_memory),
|
||||||
io_loop_(io_loop),
|
io_loop_(io_loop),
|
||||||
file_loop_(file_loop),
|
file_loop_(file_loop),
|
||||||
url_sec_mgr_(net::URLSecurityManager::Create(NULL, NULL)),
|
url_sec_mgr_(net::URLSecurityManager::Create(NULL, NULL)),
|
||||||
|
@ -154,8 +156,8 @@ net::HostResolver* URLRequestContextGetter::host_resolver() {
|
||||||
net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
|
net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
|
||||||
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
||||||
|
|
||||||
auto& command_line = *base::CommandLine::ForCurrentProcess();
|
|
||||||
if (!url_request_context_.get()) {
|
if (!url_request_context_.get()) {
|
||||||
|
auto& command_line = *base::CommandLine::ForCurrentProcess();
|
||||||
url_request_context_.reset(new net::URLRequestContext);
|
url_request_context_.reset(new net::URLRequestContext);
|
||||||
|
|
||||||
// --log-net-log
|
// --log-net-log
|
||||||
|
@ -166,11 +168,18 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
|
||||||
url_request_context_->set_network_delegate(network_delegate_.get());
|
url_request_context_->set_network_delegate(network_delegate_.get());
|
||||||
|
|
||||||
storage_.reset(new net::URLRequestContextStorage(url_request_context_.get()));
|
storage_.reset(new net::URLRequestContextStorage(url_request_context_.get()));
|
||||||
auto cookie_config = content::CookieStoreConfig(
|
|
||||||
base_path_.Append(FILE_PATH_LITERAL("Cookies")),
|
scoped_refptr<net::CookieStore> cookie_store = nullptr;
|
||||||
content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES,
|
if (in_memory_) {
|
||||||
NULL, NULL);
|
cookie_store = content::CreateCookieStore(content::CookieStoreConfig());
|
||||||
storage_->set_cookie_store(content::CreateCookieStore(cookie_config));
|
} else {
|
||||||
|
auto cookie_config = content::CookieStoreConfig(
|
||||||
|
base_path_.Append(FILE_PATH_LITERAL("Cookies")),
|
||||||
|
content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES,
|
||||||
|
NULL, NULL);
|
||||||
|
cookie_store = content::CreateCookieStore(cookie_config);
|
||||||
|
}
|
||||||
|
storage_->set_cookie_store(cookie_store.get());
|
||||||
storage_->set_channel_id_service(make_scoped_ptr(
|
storage_->set_channel_id_service(make_scoped_ptr(
|
||||||
new net::ChannelIDService(new net::DefaultChannelIDStore(NULL),
|
new net::ChannelIDService(new net::DefaultChannelIDStore(NULL),
|
||||||
base::WorkerPool::GetTaskRunner(true))));
|
base::WorkerPool::GetTaskRunner(true))));
|
||||||
|
@ -265,7 +274,12 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
|
||||||
storage_->set_host_resolver(host_resolver.Pass());
|
storage_->set_host_resolver(host_resolver.Pass());
|
||||||
network_session_params.host_resolver = url_request_context_->host_resolver();
|
network_session_params.host_resolver = url_request_context_->host_resolver();
|
||||||
|
|
||||||
net::HttpCache::BackendFactory* backend = delegate_->CreateHttpCacheBackendFactory(base_path_);
|
net::HttpCache::BackendFactory* backend = nullptr;
|
||||||
|
if (in_memory_) {
|
||||||
|
backend = net::HttpCache::DefaultBackend::InMemory(0);
|
||||||
|
} else {
|
||||||
|
backend = delegate_->CreateHttpCacheBackendFactory(base_path_);
|
||||||
|
}
|
||||||
storage_->set_http_transaction_factory(new net::HttpCache(network_session_params, backend));
|
storage_->set_http_transaction_factory(new net::HttpCache(network_session_params, backend));
|
||||||
|
|
||||||
storage_->set_job_factory(delegate_->CreateURLRequestJobFactory(
|
storage_->set_job_factory(delegate_->CreateURLRequestJobFactory(
|
||||||
|
|
|
@ -49,6 +49,7 @@ class URLRequestContextGetter : public net::URLRequestContextGetter {
|
||||||
Delegate* delegate,
|
Delegate* delegate,
|
||||||
NetLog* net_log,
|
NetLog* net_log,
|
||||||
const base::FilePath& base_path,
|
const base::FilePath& base_path,
|
||||||
|
bool in_memory,
|
||||||
base::MessageLoop* io_loop,
|
base::MessageLoop* io_loop,
|
||||||
base::MessageLoop* file_loop,
|
base::MessageLoop* file_loop,
|
||||||
content::ProtocolHandlerMap* protocol_handlers,
|
content::ProtocolHandlerMap* protocol_handlers,
|
||||||
|
@ -66,6 +67,7 @@ class URLRequestContextGetter : public net::URLRequestContextGetter {
|
||||||
|
|
||||||
NetLog* net_log_;
|
NetLog* net_log_;
|
||||||
base::FilePath base_path_;
|
base::FilePath base_path_;
|
||||||
|
bool in_memory_;
|
||||||
base::MessageLoop* io_loop_;
|
base::MessageLoop* io_loop_;
|
||||||
base::MessageLoop* file_loop_;
|
base::MessageLoop* file_loop_;
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,8 @@
|
||||||
|
|
||||||
#include "browser/web_ui_controller_factory.h"
|
#include "browser/web_ui_controller_factory.h"
|
||||||
|
|
||||||
#include "browser/browser_context.h"
|
|
||||||
#include "browser/devtools_ui.h"
|
#include "browser/devtools_ui.h"
|
||||||
|
#include "base/memory/singleton.h"
|
||||||
#include "content/public/browser/web_contents.h"
|
#include "content/public/browser/web_contents.h"
|
||||||
#include "content/public/browser/web_ui.h"
|
#include "content/public/browser/web_ui.h"
|
||||||
#include "content/public/common/url_constants.h"
|
#include "content/public/common/url_constants.h"
|
||||||
|
@ -19,9 +18,12 @@ const char kChromeUIDevToolsBundledHost[] = "devtools";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WebUIControllerFactory::WebUIControllerFactory(BrowserContext* browser_context)
|
// static
|
||||||
: browser_context_(browser_context) {
|
WebUIControllerFactory* WebUIControllerFactory::GetInstance() {
|
||||||
DCHECK(browser_context_);
|
return Singleton<WebUIControllerFactory>::get();
|
||||||
|
}
|
||||||
|
|
||||||
|
WebUIControllerFactory::WebUIControllerFactory() {
|
||||||
}
|
}
|
||||||
|
|
||||||
WebUIControllerFactory::~WebUIControllerFactory() {
|
WebUIControllerFactory::~WebUIControllerFactory() {
|
||||||
|
@ -48,11 +50,10 @@ bool WebUIControllerFactory::UseWebUIBindingsForURL(
|
||||||
|
|
||||||
content::WebUIController* WebUIControllerFactory::CreateWebUIControllerForURL(
|
content::WebUIController* WebUIControllerFactory::CreateWebUIControllerForURL(
|
||||||
content::WebUI* web_ui, const GURL& url) const {
|
content::WebUI* web_ui, const GURL& url) const {
|
||||||
DCHECK(browser_context_);
|
if (url.host() == kChromeUIDevToolsBundledHost) {
|
||||||
|
auto browser_context = web_ui->GetWebContents()->GetBrowserContext();
|
||||||
if (url.host() == kChromeUIDevToolsBundledHost)
|
return new DevToolsUI(browser_context, web_ui);
|
||||||
return new DevToolsUI(browser_context_, web_ui);
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,13 +9,17 @@
|
||||||
#include "content/public/browser/web_ui.h"
|
#include "content/public/browser/web_ui.h"
|
||||||
#include "content/public/browser/web_ui_controller_factory.h"
|
#include "content/public/browser/web_ui_controller_factory.h"
|
||||||
|
|
||||||
|
template <typename T> struct DefaultSingletonTraits;
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
class BrowserContext;
|
class BrowserContext;
|
||||||
|
|
||||||
class WebUIControllerFactory : public content::WebUIControllerFactory {
|
class WebUIControllerFactory : public content::WebUIControllerFactory {
|
||||||
public:
|
public:
|
||||||
explicit WebUIControllerFactory(BrowserContext* browser_context);
|
static WebUIControllerFactory* GetInstance();
|
||||||
|
|
||||||
|
WebUIControllerFactory();
|
||||||
virtual ~WebUIControllerFactory();
|
virtual ~WebUIControllerFactory();
|
||||||
|
|
||||||
content::WebUI::TypeID GetWebUIType(
|
content::WebUI::TypeID GetWebUIType(
|
||||||
|
@ -28,11 +32,8 @@ class WebUIControllerFactory : public content::WebUIControllerFactory {
|
||||||
content::WebUI* web_ui,
|
content::WebUI* web_ui,
|
||||||
const GURL& url) const override;
|
const GURL& url) const override;
|
||||||
|
|
||||||
static WebUIControllerFactory* GetInstance();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Weak reference to the browser context.
|
friend struct DefaultSingletonTraits<WebUIControllerFactory>;
|
||||||
BrowserContext* browser_context_;
|
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(WebUIControllerFactory);
|
DISALLOW_COPY_AND_ASSIGN(WebUIControllerFactory);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue