Add target to mojom template that generates all bindings headers.

The change should address random build failures of missing mojo
bindings generated headers on targets that cannot depend on bindings
code directly but need to use it.

Extra: Add missing deps to blink scheduler test_support target.

Bug: 852558
Change-Id: Ib0e3be23093dcda6629f6f8d0149d9d5a57bac07
Reviewed-on: https://chromium-review.googlesource.com/1151301
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Marek Haranczyk <mharanczyk@opera.com>
Cr-Commit-Position: refs/heads/master@{#582874}
diff --git a/ipc/BUILD.gn b/ipc/BUILD.gn
index bfebba7..7471d18 100644
--- a/ipc/BUILD.gn
+++ b/ipc/BUILD.gn
@@ -171,7 +171,7 @@
   ]
   public_deps = [
     ":message_support",
-    "//mojo/public/interfaces/bindings:bindings_shared__generator",
+    "//mojo/public/interfaces/bindings:bindings_headers",
   ]
 }
 
diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni
index 3329631..fa17798 100644
--- a/mojo/public/tools/bindings/mojom.gni
+++ b/mojo/public/tools/bindings/mojom.gni
@@ -593,6 +593,7 @@
     ]
     generator_shared_target_name = "${target_name}_shared__generator"
     action(generator_shared_target_name) {
+      visibility = [ ":*" ]
       script = mojom_generator_script
       inputs = mojom_generator_sources + jinja2_sources
       sources = invoker.sources
@@ -780,6 +781,7 @@
 
       generator_target_name = "${target_name}${variant_suffix}__generator"
       action(generator_target_name) {
+        visibility = [ ":*" ]
         script = mojom_generator_script
         inputs = mojom_generator_sources + jinja2_sources
         sources = invoker.sources
@@ -925,6 +927,21 @@
       }
     }
 
+    group("${target_name}${variant_suffix}_headers") {
+      public_deps = []
+      if (enabled_sources != []) {
+        public_deps += [
+          ":$generator_cpp_message_ids_target_name",
+          ":$generator_shared_target_name",
+          ":$generator_target_name",
+        ]
+      }
+      foreach(d, all_deps) {
+        full_name = get_label_info("$d", "label_no_toolchain")
+        public_deps += [ "${full_name}${variant_suffix}_headers" ]
+      }
+    }
+
     if (defined(invoker.component_macro_prefix)) {
       output_target_type = "component"
     } else {
@@ -958,8 +975,7 @@
       deps = [
         ":$generator_cpp_message_ids_target_name",
         "//mojo/public/cpp/bindings:struct_traits",
-        "//mojo/public/interfaces/bindings:bindings__generator",
-        "//mojo/public/interfaces/bindings:bindings_shared__generator",
+        "//mojo/public/interfaces/bindings:bindings_headers",
       ]
       public_deps = [
         ":$shared_cpp_library_target_name",
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn
index e289b32..508f22f 100644
--- a/third_party/blink/public/BUILD.gn
+++ b/third_party/blink/public/BUILD.gn
@@ -885,17 +885,13 @@
     # Blink public API exposes a number of Mojo interfaces; omitting it will
     # cause non-deterministic compile failures for code that uses the regular
     # variant of the generated files.
-    ":core_mojo_bindings__generator",
-    ":core_mojo_bindings_blink__generator",
-    ":embedded_frame_sink_mojo_bindings_blink__generator",
-    ":media_devices_mojo_bindings__generator",
-    ":media_devices_mojo_bindings_blink__generator",
-    ":mojo_bindings__generator",
-    ":mojo_bindings_blink__generator",
-    "mojom:mojom_core__generator",
-    "mojom:mojom_core_blink__generator",
-    "mojom:mojom_platform__generator",
-    "mojom:mojom_platform_blink__generator",
+    ":core_mojo_bindings_blink_headers",
+    ":core_mojo_bindings_headers",
+    ":embedded_frame_sink_mojo_bindings_blink_headers",
+    ":media_devices_mojo_bindings_blink_headers",
+    ":media_devices_mojo_bindings_headers",
+    ":mojo_bindings_blink_headers",
+    ":mojo_bindings_headers",
   ]
 }
 
@@ -928,7 +924,7 @@
   ]
   deps = [
     ":blink_headers",
-    ":mojo_bindings_shared__generator",
+    ":mojo_bindings_headers",
     "//mojo/public/cpp/bindings:struct_traits",
   ]
 }
diff --git a/third_party/blink/renderer/bindings/modules/v8/BUILD.gn b/third_party/blink/renderer/bindings/modules/v8/BUILD.gn
index 3438122..47a5d537 100644
--- a/third_party/blink/renderer/bindings/modules/v8/BUILD.gn
+++ b/third_party/blink/renderer/bindings/modules/v8/BUILD.gn
@@ -95,14 +95,14 @@
   visibility = [ ":*" ]
 
   deps = [
-    "//device/gamepad/public/mojom:mojom_blink__generator",
-    "//device/usb/public/mojom:mojom_blink__generator",
-    "//device/vr/public/mojom:mojom_blink__generator",
-    "//media/capture/mojom:image_capture_blink__generator",
-    "//services/device/public/mojom:generic_sensor__generator",
-    "//services/device/public/mojom:mojom_blink__generator",
-    "//services/shape_detection/public/mojom:mojom_blink__generator",
-    "//third_party/blink/public:media_devices_mojo_bindings_blink__generator",
+    "//device/gamepad/public/mojom:mojom_blink_headers",
+    "//device/usb/public/mojom:mojom_blink_headers",
+    "//device/vr/public/mojom:mojom_blink_headers",
+    "//media/capture/mojom:image_capture_blink_headers",
+    "//services/device/public/mojom:generic_sensor_headers",
+    "//services/device/public/mojom:mojom_blink_headers",
+    "//services/shape_detection/public/mojom:mojom_blink_headers",
+    "//third_party/blink/public:media_devices_mojo_bindings_blink_headers",
   ]
 }
 
diff --git a/third_party/blink/renderer/platform/blob/BUILD.gn b/third_party/blink/renderer/platform/blob/BUILD.gn
index f6af4da..b40abbe 100644
--- a/third_party/blink/renderer/platform/blob/BUILD.gn
+++ b/third_party/blink/renderer/platform/blob/BUILD.gn
@@ -13,11 +13,9 @@
 # another.
 jumbo_source_set("generator") {
   public_deps = [
-    "//third_party/blink/public/mojom:mojom_platform_blink__generator",
-    "//url/mojom:url_mojom_gurl_blink__generator",
-    "//url/mojom:url_mojom_gurl_shared__generator",
-    "//url/mojom:url_mojom_origin_blink__generator",
-    "//url/mojom:url_mojom_origin_shared__generator",
+    "//third_party/blink/public/mojom:mojom_platform_blink_headers",
+    "//url/mojom:url_mojom_gurl_blink_headers",
+    "//url/mojom:url_mojom_origin_blink_headers",
   ]
 }
 
diff --git a/third_party/blink/renderer/platform/scheduler/BUILD.gn b/third_party/blink/renderer/platform/scheduler/BUILD.gn
index 170ca91..4ca34c9 100644
--- a/third_party/blink/renderer/platform/scheduler/BUILD.gn
+++ b/third_party/blink/renderer/platform/scheduler/BUILD.gn
@@ -160,7 +160,8 @@
   deps = [
     "//base",
     "//base/test:test_support",
-    "//third_party/blink/public/mojom:mojom_platform_blink__generator",
+    "//mojo/public/cpp/bindings",
+    "//third_party/blink/public/mojom:mojom_platform_blink_headers",
   ]
 
   configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ]