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

Side by Side 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 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "headless/lib/browser/headless_browser_context.h"
6
7 #include "base/environment.h"
8 #include "content/public/browser/storage_partition.h"
9 #include "content/public/browser/resource_context.h"
10 #include "headless/lib/browser/headless_url_request_context_getter.h"
11 #include "content/public/browser/browser_thread.h"
12
13 #if defined(OS_WIN)
14 #include "base/base_paths_win.h"
15 #elif defined(OS_LINUX)
16 #include "base/nix/xdg_util.h"
17 #elif defined(OS_MACOSX)
18 #include "base/base_paths_mac.h"
19 #endif
20
21 namespace headless {
22
23 HeadlessBrowserContext::HeadlessBrowserContext()
24 : resource_context_(new HeadlessResourceContext) {
25 InitWhileIOAllowed();
26 }
27
28 HeadlessBrowserContext::~HeadlessBrowserContext() {
29 if (resource_context_) {
30 content::BrowserThread::DeleteSoon(
31 content::BrowserThread::IO,
32 FROM_HERE,
33 resource_context_.release());
34 }
35 }
36
37 HeadlessBrowserContext::HeadlessResourceContext::HeadlessResourceContext()
38 : getter_(NULL) { }
39
40 HeadlessBrowserContext::HeadlessResourceContext::~HeadlessResourceContext() { }
41
42 net::HostResolver*
43 HeadlessBrowserContext::HeadlessResourceContext::GetHostResolver() {
44 CHECK(getter_);
45 return getter_->host_resolver();
46 }
47
48 net::URLRequestContext*
49 HeadlessBrowserContext::HeadlessResourceContext::GetRequestContext() {
50 CHECK(getter_);
51 return getter_->GetURLRequestContext();
52 }
53
54
55 void HeadlessBrowserContext::InitWhileIOAllowed() {
56 #if defined(OS_WIN)
57 CHECK(PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
58 path_ = path_.Append(std::wstring(L"headless_shell"));
59 #elif defined(OS_LINUX)
60 scoped_ptr<base::Environment> env(base::Environment::Create());
61 base::FilePath config_dir(
62 base::nix::GetXDGDirectory(env.get(),
63 base::nix::kXdgConfigHomeEnvVar,
64 base::nix::kDotConfigDir));
65 path_ = config_dir.Append("headless_shell");
66 #elif defined(OS_MACOSX)
67 CHECK(PathService::Get(base::DIR_APP_DATA, &path_));
68
69 path_ = path_.Append("Headless Chromium Shell");
70 #elif defined(OS_ANDROID)
71 CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA, &path_));
72 path_ = path_.Append(FILE_PATH_LITERAL("headless_shell"));
73 #else
74 NOTIMPLEMENTED();
75 #endif
76 }
77
78 scoped_ptr<content::ZoomLevelDelegate>
79 HeadlessBrowserContext::CreateZoomLevelDelegate(const base::FilePath& partition_ path) {
80 return scoped_ptr<content::ZoomLevelDelegate>();
81 }
82
83 base::FilePath HeadlessBrowserContext::GetPath() const {
84 return path_;
85 }
86
87 bool HeadlessBrowserContext::IsOffTheRecord() const {
88 return false;
89 }
90
91 net::URLRequestContextGetter* HeadlessBrowserContext::GetRequestContext() {
92 return GetDefaultStoragePartition(this)->GetURLRequestContext();
93 }
94
95 net::URLRequestContextGetter* HeadlessBrowserContext::GetRequestContextForRender Process(
96 int renderer_child_id) {
97 return GetRequestContext();
98 }
99
100 net::URLRequestContextGetter* HeadlessBrowserContext::GetMediaRequestContext() {
101 return GetRequestContext();
102 }
103
104 net::URLRequestContextGetter* HeadlessBrowserContext::GetMediaRequestContextForR enderProcess(
105 int renderer_child_id) {
106 return GetRequestContext();
107 }
108
109 net::URLRequestContextGetter*
110 HeadlessBrowserContext::GetMediaRequestContextForStoragePartition(
111 const base::FilePath& partition_path,
112 bool in_memory) {
113 return GetRequestContext();
114 }
115
116 content::ResourceContext* HeadlessBrowserContext::GetResourceContext() {
117 return resource_context_.get();
118 }
119
120 content::DownloadManagerDelegate* HeadlessBrowserContext::GetDownloadManagerDele gate() {
121 return nullptr;
122 }
123
124 content::BrowserPluginGuestManager* HeadlessBrowserContext::GetGuestManager() {
125 // TODO(altimin): Should be non-null? (is null in content/shell).
126 return nullptr;
127 }
128
129 storage::SpecialStoragePolicy* HeadlessBrowserContext::GetSpecialStoragePolicy() {
130 return nullptr;
131 }
132
133 content::PushMessagingService* HeadlessBrowserContext::GetPushMessagingService() {
134 return nullptr;
135 }
136
137 content::SSLHostStateDelegate* HeadlessBrowserContext::GetSSLHostStateDelegate() {
138 return nullptr;
139 }
140
141 content::PermissionManager* HeadlessBrowserContext::GetPermissionManager() {
142 return nullptr;
143 }
144
145 content::BackgroundSyncController* HeadlessBrowserContext::GetBackgroundSyncCont roller() {
146 return nullptr;
147 }
148
149 net::URLRequestContextGetter* HeadlessBrowserContext::CreateRequestContext(
150 content::ProtocolHandlerMap* protocol_handlers,
151 content::URLRequestInterceptorScopedVector request_interceptors) {
152 DCHECK(!url_request_getter_.get());
153 url_request_getter_ = CreateURLRequestContextGetter(
154 protocol_handlers, request_interceptors.Pass());
155 resource_context_->set_url_request_context_getter(url_request_getter_.get());
156 return url_request_getter_.get();
157 }
158
159 HeadlessURLRequestContextGetter*
160 HeadlessBrowserContext::CreateURLRequestContextGetter(
161 content::ProtocolHandlerMap* protocol_handlers,
162 content::URLRequestInterceptorScopedVector request_interceptors) {
163 return new HeadlessURLRequestContextGetter(
164 true /* ignore_certificate_errors */,
165 GetPath(),
166 content::BrowserThread::UnsafeGetMessageLoopForThread(content::BrowserThre ad::IO),
167 content::BrowserThread::UnsafeGetMessageLoopForThread(content::BrowserThre ad::FILE),
168 protocol_handlers,
169 request_interceptors.Pass(),
170 NULL);
171 }
172
173 } // namespace headless
OLDNEW
« 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