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

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

Issue 2049363003: Adds support for headless chrome embedder mojo services (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Abandon (for now) the concice bindings. Add BINDINGS_POLICY_HEADLESS and headless-mojo:// Created 4 years, 5 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "headless/lib/browser/headless_browser_context_impl.h" 5 #include "headless/lib/browser/headless_browser_context_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
12 #include "content/public/browser/resource_context.h" 12 #include "content/public/browser/resource_context.h"
13 #include "content/public/browser/storage_partition.h" 13 #include "content/public/browser/storage_partition.h"
14 #include "headless/lib/browser/headless_browser_impl.h" 14 #include "headless/lib/browser/headless_browser_impl.h"
15 #include "headless/lib/browser/headless_url_request_context_getter.h" 15 #include "headless/lib/browser/headless_url_request_context_getter.h"
16 #include "headless/public/util/kv_map_protocol_handler.h"
16 #include "net/url_request/url_request_context.h" 17 #include "net/url_request/url_request_context.h"
17 18
18 namespace headless { 19 namespace headless {
19 20
21 namespace {
22 const char kHeadlessMojomProtocol[] = "headless-mojom";
23 }
24
20 // Contains net::URLRequestContextGetter required for resource loading. 25 // Contains net::URLRequestContextGetter required for resource loading.
21 // Must be destructed on the IO thread as per content::ResourceContext 26 // Must be destructed on the IO thread as per content::ResourceContext
22 // requirements. 27 // requirements.
23 class HeadlessResourceContext : public content::ResourceContext { 28 class HeadlessResourceContext : public content::ResourceContext {
24 public: 29 public:
25 HeadlessResourceContext(); 30 HeadlessResourceContext();
26 ~HeadlessResourceContext() override; 31 ~HeadlessResourceContext() override;
27 32
28 // ResourceContext implementation: 33 // ResourceContext implementation:
29 net::HostResolver* GetHostResolver() override; 34 net::HostResolver* GetHostResolver() override;
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 200
196 HeadlessBrowserContext::Builder::Builder(Builder&&) = default; 201 HeadlessBrowserContext::Builder::Builder(Builder&&) = default;
197 202
198 HeadlessBrowserContext::Builder& 203 HeadlessBrowserContext::Builder&
199 HeadlessBrowserContext::Builder::SetProtocolHandlers( 204 HeadlessBrowserContext::Builder::SetProtocolHandlers(
200 ProtocolHandlerMap protocol_handlers) { 205 ProtocolHandlerMap protocol_handlers) {
201 protocol_handlers_ = std::move(protocol_handlers); 206 protocol_handlers_ = std::move(protocol_handlers);
202 return *this; 207 return *this;
203 } 208 }
204 209
210 HeadlessBrowserContext::Builder&
211 HeadlessBrowserContext::Builder::AddJsMojoBindings(
212 const std::string& mojom_name,
213 const std::string& js_bindings) {
214 mojo_bindings_.emplace_back(mojom_name, js_bindings);
215 return *this;
216 }
217
205 std::unique_ptr<HeadlessBrowserContext> 218 std::unique_ptr<HeadlessBrowserContext>
206 HeadlessBrowserContext::Builder::Build() { 219 HeadlessBrowserContext::Builder::Build() {
220 if (!mojo_bindings_.empty()) {
221 std::unique_ptr<KVMapProtocolHandler> headless_mojom_protocol_handler(
222 new KVMapProtocolHandler());
223 for (const MojoBindings& binding : mojo_bindings_) {
224 headless_mojom_protocol_handler->InsertResponse(
225 binding.mojom_name,
226 KVMapProtocolHandler::Response(binding.js_bindings,
227 "application/javascript"));
228 }
229 protocol_handlers_[kHeadlessMojomProtocol] =
Sami 2016/06/27 11:10:42 Maybe DCHECK that we're not clobbering the users's
alex clarke (OOO till 29th) 2016/06/27 11:35:52 Done.
230 std::move(headless_mojom_protocol_handler);
231 }
232
207 return base::WrapUnique(new HeadlessBrowserContextImpl( 233 return base::WrapUnique(new HeadlessBrowserContextImpl(
208 std::move(protocol_handlers_), browser_->options())); 234 std::move(protocol_handlers_), browser_->options()));
209 } 235 }
210 236
237 HeadlessBrowserContext::Builder::MojoBindings::MojoBindings() {}
238
239 HeadlessBrowserContext::Builder::MojoBindings::MojoBindings(
240 const std::string& mojom_name,
241 const std::string& js_bindings)
242 : mojom_name(mojom_name), js_bindings(js_bindings) {}
243
244 HeadlessBrowserContext::Builder::MojoBindings::~MojoBindings() {}
245
211 } // namespace headless 246 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698