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

Side by Side Diff: headless/lib/browser/headless_browser_context.cc

Issue 1674263002: headless: Initial headless embedder API implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add pak file generation. Created 4 years, 10 months 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/path_service.h"
8 #include "content/public/browser/browser_thread.h"
9 #include "content/public/browser/resource_context.h"
10 #include "content/public/browser/storage_partition.h"
11 #include "headless/lib/browser/headless_url_request_context_getter.h"
12 #include "net/url_request/url_request_context.h"
13
14 namespace headless {
15
16 HeadlessBrowserContext::HeadlessBrowserContext(
17 const HeadlessBrowser::Options& options)
18 : resource_context_(new HeadlessResourceContext), options_(options) {
19 InitWhileIOAllowed();
20 }
21
22 HeadlessBrowserContext::~HeadlessBrowserContext() {
23 if (resource_context_) {
24 content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
25 resource_context_.release());
26 }
27 }
28
29 HeadlessBrowserContext::HeadlessResourceContext::HeadlessResourceContext()
30 : getter_(nullptr) {}
31
32 HeadlessBrowserContext::HeadlessResourceContext::~HeadlessResourceContext() {}
33
34 net::HostResolver*
35 HeadlessBrowserContext::HeadlessResourceContext::GetHostResolver() {
36 CHECK(getter_);
37 return getter_->GetURLRequestContext()->host_resolver();
38 }
39
40 net::URLRequestContext*
41 HeadlessBrowserContext::HeadlessResourceContext::GetRequestContext() {
42 CHECK(getter_);
43 return getter_->GetURLRequestContext();
44 }
45
46 void HeadlessBrowserContext::InitWhileIOAllowed() {
47 // TODO(skyostil): Allow the embedder to override this.
48 PathService::Get(base::DIR_EXE, &path_);
49 }
50
51 scoped_ptr<content::ZoomLevelDelegate>
52 HeadlessBrowserContext::CreateZoomLevelDelegate(
53 const base::FilePath& partition_path) {
54 return scoped_ptr<content::ZoomLevelDelegate>();
55 }
56
57 base::FilePath HeadlessBrowserContext::GetPath() const {
58 return path_;
59 }
60
61 bool HeadlessBrowserContext::IsOffTheRecord() const {
62 return false;
63 }
64
65 net::URLRequestContextGetter* HeadlessBrowserContext::GetRequestContext() {
66 return GetDefaultStoragePartition(this)->GetURLRequestContext();
67 }
68
69 net::URLRequestContextGetter*
70 HeadlessBrowserContext::GetRequestContextForRenderProcess(
71 int renderer_child_id) {
72 return GetRequestContext();
73 }
74
75 net::URLRequestContextGetter* HeadlessBrowserContext::GetMediaRequestContext() {
76 return GetRequestContext();
77 }
78
79 net::URLRequestContextGetter*
80 HeadlessBrowserContext::GetMediaRequestContextForRenderProcess(
81 int renderer_child_id) {
82 return GetRequestContext();
83 }
84
85 net::URLRequestContextGetter*
86 HeadlessBrowserContext::GetMediaRequestContextForStoragePartition(
87 const base::FilePath& partition_path,
88 bool in_memory) {
89 return GetRequestContext();
90 }
91
92 content::ResourceContext* HeadlessBrowserContext::GetResourceContext() {
93 return resource_context_.get();
94 }
95
96 content::DownloadManagerDelegate*
97 HeadlessBrowserContext::GetDownloadManagerDelegate() {
98 return nullptr;
99 }
100
101 content::BrowserPluginGuestManager* HeadlessBrowserContext::GetGuestManager() {
102 // TODO(altimin): Should be non-null? (is null in content/shell).
103 return nullptr;
104 }
105
106 storage::SpecialStoragePolicy*
107 HeadlessBrowserContext::GetSpecialStoragePolicy() {
108 return nullptr;
109 }
110
111 content::PushMessagingService*
112 HeadlessBrowserContext::GetPushMessagingService() {
113 return nullptr;
114 }
115
116 content::SSLHostStateDelegate*
117 HeadlessBrowserContext::GetSSLHostStateDelegate() {
118 return nullptr;
119 }
120
121 content::PermissionManager* HeadlessBrowserContext::GetPermissionManager() {
122 return nullptr;
123 }
124
125 content::BackgroundSyncController*
126 HeadlessBrowserContext::GetBackgroundSyncController() {
127 return nullptr;
128 }
129
130 scoped_refptr<net::URLRequestContextGetter>
131 HeadlessBrowserContext::CreateRequestContext(
132 content::ProtocolHandlerMap* protocol_handlers,
133 content::URLRequestInterceptorScopedVector request_interceptors) {
134 DCHECK(!url_request_getter_.get());
135 if (options().url_request_context_getter) {
136 url_request_getter_ = options().url_request_context_getter;
137 } else {
138 url_request_getter_ = CreateURLRequestContextGetter(
139 protocol_handlers, std::move(request_interceptors));
140 }
Ryan Sleevi 2016/02/22 22:01:21 This leaves me really uncomfortable, from an API d
Sami 2016/02/23 20:19:07 Agreed on all points. I think we're still finding
141 resource_context_->set_url_request_context_getter(url_request_getter_.get());
142 return url_request_getter_;
143 }
144
145 HeadlessURLRequestContextGetter*
146 HeadlessBrowserContext::CreateURLRequestContextGetter(
147 content::ProtocolHandlerMap* protocol_handlers,
148 content::URLRequestInterceptorScopedVector request_interceptors) {
149 return new HeadlessURLRequestContextGetter(
150 true /* ignore_certificate_errors */, GetPath(),
Ryan Sleevi 2016/02/22 21:11:13 SECURITY: *woah* this is a really really scary fla
Sami 2016/02/23 20:19:07 Wow, I'm not sure why this flag was set this way -
151 content::BrowserThread::UnsafeGetMessageLoopForThread(
152 content::BrowserThread::IO),
153 content::BrowserThread::UnsafeGetMessageLoopForThread(
154 content::BrowserThread::FILE),
Ryan Sleevi 2016/02/22 21:11:13 DESIGN: I cannot see any reason for you to pass th
Sami 2016/02/23 20:19:07 Hmm, looks like this was some relic in Content She
155 protocol_handlers, std::move(request_interceptors), nullptr /* net_log */,
156 options());
157 }
158
159 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698