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

Unified Diff: headless/lib/browser/headless_browser_context.cc

Issue 1430673002: Headless demo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Better javascript Created 5 years, 1 month 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
« no previous file with comments | « headless/lib/browser/headless_browser_context.h ('k') | headless/lib/browser/headless_browser_main_parts.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: headless/lib/browser/headless_browser_context.cc
diff --git a/headless/lib/browser/headless_browser_context.cc b/headless/lib/browser/headless_browser_context.cc
new file mode 100644
index 0000000000000000000000000000000000000000..37c645dcf631ff5aaada9cc3e0de937ca7ffa702
--- /dev/null
+++ b/headless/lib/browser/headless_browser_context.cc
@@ -0,0 +1,173 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "headless/lib/browser/headless_browser_context.h"
+
+#include "base/environment.h"
+#include "content/public/browser/storage_partition.h"
+#include "content/public/browser/resource_context.h"
+#include "headless/lib/browser/headless_url_request_context_getter.h"
+#include "content/public/browser/browser_thread.h"
+
+#if defined(OS_WIN)
+#include "base/base_paths_win.h"
+#elif defined(OS_LINUX)
+#include "base/nix/xdg_util.h"
+#elif defined(OS_MACOSX)
+#include "base/base_paths_mac.h"
+#endif
+
+namespace headless {
+
+HeadlessBrowserContext::HeadlessBrowserContext()
+ : resource_context_(new HeadlessResourceContext) {
+ InitWhileIOAllowed();
+}
+
+HeadlessBrowserContext::~HeadlessBrowserContext() {
+ if (resource_context_) {
+ content::BrowserThread::DeleteSoon(
+ content::BrowserThread::IO,
+ FROM_HERE,
+ resource_context_.release());
+ }
+}
+
+HeadlessBrowserContext::HeadlessResourceContext::HeadlessResourceContext()
+ : getter_(NULL) { }
+
+HeadlessBrowserContext::HeadlessResourceContext::~HeadlessResourceContext() { }
+
+net::HostResolver*
+HeadlessBrowserContext::HeadlessResourceContext::GetHostResolver() {
+ CHECK(getter_);
+ return getter_->host_resolver();
+}
+
+net::URLRequestContext*
+HeadlessBrowserContext::HeadlessResourceContext::GetRequestContext() {
+ CHECK(getter_);
+ return getter_->GetURLRequestContext();
+}
+
+
+void HeadlessBrowserContext::InitWhileIOAllowed() {
+ #if defined(OS_WIN)
+ CHECK(PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
+ path_ = path_.Append(std::wstring(L"headless_shell"));
+#elif defined(OS_LINUX)
+ scoped_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
+ base::nix::kXdgConfigHomeEnvVar,
+ base::nix::kDotConfigDir));
+ path_ = config_dir.Append("headless_shell");
+#elif defined(OS_MACOSX)
+ CHECK(PathService::Get(base::DIR_APP_DATA, &path_));
+
+ path_ = path_.Append("Headless Chromium Shell");
+#elif defined(OS_ANDROID)
+ CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA, &path_));
+ path_ = path_.Append(FILE_PATH_LITERAL("headless_shell"));
+#else
+ NOTIMPLEMENTED();
+#endif
+}
+
+scoped_ptr<content::ZoomLevelDelegate>
+HeadlessBrowserContext::CreateZoomLevelDelegate(const base::FilePath& partition_path) {
+ return scoped_ptr<content::ZoomLevelDelegate>();
+}
+
+base::FilePath HeadlessBrowserContext::GetPath() const {
+ return path_;
+}
+
+bool HeadlessBrowserContext::IsOffTheRecord() const {
+ return false;
+}
+
+net::URLRequestContextGetter* HeadlessBrowserContext::GetRequestContext() {
+ return GetDefaultStoragePartition(this)->GetURLRequestContext();
+}
+
+net::URLRequestContextGetter* HeadlessBrowserContext::GetRequestContextForRenderProcess(
+ int renderer_child_id) {
+ return GetRequestContext();
+}
+
+net::URLRequestContextGetter* HeadlessBrowserContext::GetMediaRequestContext() {
+ return GetRequestContext();
+}
+
+net::URLRequestContextGetter* HeadlessBrowserContext::GetMediaRequestContextForRenderProcess(
+ int renderer_child_id) {
+ return GetRequestContext();
+}
+
+net::URLRequestContextGetter*
+HeadlessBrowserContext::GetMediaRequestContextForStoragePartition(
+ const base::FilePath& partition_path,
+ bool in_memory) {
+ return GetRequestContext();
+}
+
+content::ResourceContext* HeadlessBrowserContext::GetResourceContext() {
+ return resource_context_.get();
+}
+
+content::DownloadManagerDelegate* HeadlessBrowserContext::GetDownloadManagerDelegate() {
+ return nullptr;
+}
+
+content::BrowserPluginGuestManager* HeadlessBrowserContext::GetGuestManager() {
+ // TODO(altimin): Should be non-null? (is null in content/shell).
+ return nullptr;
+}
+
+storage::SpecialStoragePolicy* HeadlessBrowserContext::GetSpecialStoragePolicy() {
+ return nullptr;
+}
+
+content::PushMessagingService* HeadlessBrowserContext::GetPushMessagingService() {
+ return nullptr;
+}
+
+content::SSLHostStateDelegate* HeadlessBrowserContext::GetSSLHostStateDelegate() {
+ return nullptr;
+}
+
+content::PermissionManager* HeadlessBrowserContext::GetPermissionManager() {
+ return nullptr;
+}
+
+content::BackgroundSyncController* HeadlessBrowserContext::GetBackgroundSyncController() {
+ return nullptr;
+}
+
+net::URLRequestContextGetter* HeadlessBrowserContext::CreateRequestContext(
+ content::ProtocolHandlerMap* protocol_handlers,
+ content::URLRequestInterceptorScopedVector request_interceptors) {
+ DCHECK(!url_request_getter_.get());
+ url_request_getter_ = CreateURLRequestContextGetter(
+ protocol_handlers, request_interceptors.Pass());
+ resource_context_->set_url_request_context_getter(url_request_getter_.get());
+ return url_request_getter_.get();
+}
+
+HeadlessURLRequestContextGetter*
+HeadlessBrowserContext::CreateURLRequestContextGetter(
+ content::ProtocolHandlerMap* protocol_handlers,
+ content::URLRequestInterceptorScopedVector request_interceptors) {
+ return new HeadlessURLRequestContextGetter(
+ true /* ignore_certificate_errors */,
+ GetPath(),
+ content::BrowserThread::UnsafeGetMessageLoopForThread(content::BrowserThread::IO),
+ content::BrowserThread::UnsafeGetMessageLoopForThread(content::BrowserThread::FILE),
+ protocol_handlers,
+ request_interceptors.Pass(),
+ NULL);
+}
+
+} // namespace headless
« no previous file with comments | « headless/lib/browser/headless_browser_context.h ('k') | headless/lib/browser/headless_browser_main_parts.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698