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 |