Chromium Code Reviews| Index: headless/lib/browser/headless_browser_context_impl.cc |
| diff --git a/headless/lib/browser/headless_browser_context_impl.cc b/headless/lib/browser/headless_browser_context_impl.cc |
| index ed0188050ec88de09923d17faeab4fc65db6f886..9de33e55f1f82a39c02963b7d2feaeff445349de 100644 |
| --- a/headless/lib/browser/headless_browser_context_impl.cc |
| +++ b/headless/lib/browser/headless_browser_context_impl.cc |
| @@ -13,10 +13,15 @@ |
| #include "content/public/browser/storage_partition.h" |
| #include "headless/lib/browser/headless_browser_impl.h" |
| #include "headless/lib/browser/headless_url_request_context_getter.h" |
| +#include "headless/public/util/kv_map_protocol_handler.h" |
| #include "net/url_request/url_request_context.h" |
| namespace headless { |
| +namespace { |
| +const char kHeadlessMojomProtocol[] = "headless-mojom"; |
| +} |
| + |
| // Contains net::URLRequestContextGetter required for resource loading. |
| // Must be destructed on the IO thread as per content::ResourceContext |
| // requirements. |
| @@ -202,10 +207,40 @@ HeadlessBrowserContext::Builder::SetProtocolHandlers( |
| return *this; |
| } |
| +HeadlessBrowserContext::Builder& |
| +HeadlessBrowserContext::Builder::AddJsMojoBindings( |
| + const std::string& mojom_name, |
| + const std::string& js_bindings) { |
| + mojo_bindings_.emplace_back(mojom_name, js_bindings); |
| + return *this; |
| +} |
| + |
| std::unique_ptr<HeadlessBrowserContext> |
| HeadlessBrowserContext::Builder::Build() { |
| + if (!mojo_bindings_.empty()) { |
| + std::unique_ptr<KVMapProtocolHandler> headless_mojom_protocol_handler( |
| + new KVMapProtocolHandler()); |
| + for (const MojoBindings& binding : mojo_bindings_) { |
| + headless_mojom_protocol_handler->InsertResponse( |
| + binding.mojom_name, |
| + KVMapProtocolHandler::Response(binding.js_bindings, |
| + "application/javascript")); |
| + } |
| + 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.
|
| + std::move(headless_mojom_protocol_handler); |
| + } |
| + |
| return base::WrapUnique(new HeadlessBrowserContextImpl( |
| std::move(protocol_handlers_), browser_->options())); |
| } |
| +HeadlessBrowserContext::Builder::MojoBindings::MojoBindings() {} |
| + |
| +HeadlessBrowserContext::Builder::MojoBindings::MojoBindings( |
| + const std::string& mojom_name, |
| + const std::string& js_bindings) |
| + : mojom_name(mojom_name), js_bindings(js_bindings) {} |
| + |
| +HeadlessBrowserContext::Builder::MojoBindings::~MojoBindings() {} |
| + |
| } // namespace headless |