Chromium Code Reviews| Index: headless/lib/browser/headless_content_browser_client.cc |
| diff --git a/headless/lib/browser/headless_content_browser_client.cc b/headless/lib/browser/headless_content_browser_client.cc |
| index b863c60fe58e942385a6e0e3b8eb2b52bc84324d..5509e0aaf4994c980bdbd2209ce2b15e1f147539 100644 |
| --- a/headless/lib/browser/headless_content_browser_client.cc |
| +++ b/headless/lib/browser/headless_content_browser_client.cc |
| @@ -5,6 +5,7 @@ |
| #include "headless/lib/browser/headless_content_browser_client.h" |
| #include <memory> |
| +#include <set> |
|
Sami
2016/11/14 21:22:37
Needed?
Eric Seckler
2016/11/15 08:46:58
changed to unordered_set. we're iterating over one
|
| #include "base/callback.h" |
| #include "base/json/json_reader.h" |
| @@ -23,6 +24,11 @@ |
| namespace headless { |
| +namespace { |
| +const char kCapabilityPath[] = |
| + "interface_provider_specs.navigation:frame.provides.renderer"; |
| +} // namespace |
| + |
| HeadlessContentBrowserClient::HeadlessContentBrowserClient( |
| HeadlessBrowserImpl* browser) |
| : browser_(browser) {} |
| @@ -56,12 +62,28 @@ HeadlessContentBrowserClient::GetDevToolsManagerDelegate() { |
| std::unique_ptr<base::Value> |
| HeadlessContentBrowserClient::GetServiceManifestOverlay( |
| const std::string& name) { |
| - if (name != content::kBrowserServiceName) |
| + if (name != content::kBrowserServiceName || |
| + browser_->options()->mojo_service_names.empty()) |
| return nullptr; |
| - base::StringPiece manifest_contents = |
| + |
| + base::StringPiece manifest_template = |
| ui::ResourceBundle::GetSharedInstance().GetRawDataResource( |
| - IDR_HEADLESS_BROWSER_MANIFEST_OVERLAY); |
| - return base::JSONReader::Read(manifest_contents); |
| + IDR_HEADLESS_BROWSER_MANIFEST_OVERLAY_TEMPLATE); |
| + std::unique_ptr<base::Value> manifest = |
| + base::JSONReader::Read(manifest_template); |
| + |
| + // Add mojo_service_names to renderer capability specified in options. |
| + base::DictionaryValue* manifest_dictionary = nullptr; |
| + CHECK(manifest->GetAsDictionary(&manifest_dictionary)); |
| + |
| + base::ListValue* capability_list = nullptr; |
| + CHECK(manifest_dictionary->GetList(kCapabilityPath, &capability_list)); |
| + |
| + for (std::string service_name : browser_->options()->mojo_service_names) { |
| + capability_list->AppendString(service_name); |
| + } |
| + |
| + return manifest; |
| } |
| } // namespace headless |