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

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

Issue 2489673005: [headless] Make browser service manifest overlay configurable. (Closed)
Patch Set: fix includes. 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..b6c2f05b296b0af01275423a27f1776ab4f1586c 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 <unordered_set>
#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
« no previous file with comments | « headless/lib/browser/headless_browser_manifest_overlay_template.json ('k') | headless/lib/embedder_mojo_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698