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

Unified Diff: headless/lib/browser/headless_content_browser_client.cc

Issue 2489673005: [headless] Make browser service manifest overlay configurable. (Closed)
Patch Set: address Sami's comments. Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698