Index: chromecast/browser/BUILD.gn |
diff --git a/chromecast/browser/BUILD.gn b/chromecast/browser/BUILD.gn |
index 2897c93aa602c6941ebdfbed1c06d2b9b9d14d38..b410082c1cb15ec526dc88bc4b1cd91184fa29e3 100644 |
--- a/chromecast/browser/BUILD.gn |
+++ b/chromecast/browser/BUILD.gn |
@@ -4,6 +4,7 @@ |
import("//build/config/ui.gni") |
import("//chromecast/chromecast.gni") |
+import("//services/service_manager/public/service_manifest.gni") |
import("//testing/test.gni") |
import("//tools/grit/grit_rule.gni") |
@@ -143,6 +144,51 @@ source_set("browser") { |
} |
} |
+# HOW THIS WORKS |
+# This target generates an "overlay" interface spec, allowing the Cast build to |
+# declare specific behavior and requirements for the "content_browser" service. |
+# This is accomplished by generating a JSON file, which is packed into |
+# cast_shell.pak, and loaded at runtime. This can be used to: |
+# |
+# 1) Host Cast-specific embedded services in the browser process. |
+# To host an embedded service, add the service's name to the list of |
+# "packages" in this target, and add the target that generates that service's |
+# manifest to "deps", like so: |
+# |
+# packages = [ "foo" ] |
+# deps = [ "//path/to/foo/service:foo_manifest" ] |
+# |
+# You must also register the "foo" service with the content client. See |
+# CastContentBrowserClient::RegisterInProcessServices() for details. |
+# |
+# **NOTE** |
+# If your service's manifest is in chromecast/internal, do not add it here! |
+# Instead, add the service to the internal counterpart, which is referenced |
+# below. |
+# |
+# 2) Host an addtional interface in "content_browser" via a ConnectionFilter. |
+# In this case, nothing need be added to this file. Add your interface to the |
+# "provides" field in cast_content_browser_manifest_overlay.json, and use |
+# CastContentBrowserClient::AddConnectionFilters() to register bindings to it |
+# for incoming connections. Remember to add the provided interfaces to the |
+# "requires" field in the manifest of the service that needs them. |
+# |
+service_manifest_overlay("cast_content_browser_manifest_overlay") { |
+ source = "cast_content_browser_manifest_overlay.json" |
+ |
+ packaged_services = [ "media" ] |
alokp
2016/12/19 21:45:00
since you are not changing content manifest, this
slan
2016/12/19 22:14:04
It's not necessary, but I would like to keep it be
|
+ |
+ deps = [ |
+ "//media/mojo/services:media_manifest", |
+ ] |
+ |
+ if (chromecast_branding != "public") { |
+ overlays = [ "${root_gen_dir}/cast_content_browser_internal_manifest_overlay.json" ] |
+ |
+ deps += [ "//chromecast/internal/shell/browser:cast_content_browser_internal_manifest_overlay" ] |
alokp
2016/12/19 21:45:00
Not related to this patch, but I find it weird tha
slan
2016/12/19 22:14:04
Unfortunately, no.
In GN, there is not a really
|
+ } |
+} |
+ |
grit("resources") { |
visibility = [ |
":browser", |
@@ -155,6 +201,10 @@ grit("resources") { |
"grit/cast_browser_resources.h", |
"cast_browser_resources.pak", |
] |
+ |
+ deps = [ |
+ ":cast_content_browser_manifest_overlay", |
+ ] |
} |
source_set("test_support") { |