[Reland] WebUI: Exclude unnecessary build tasks from Android and iOS builds.

Added assertions to make sure that cr_elements/BUILD.gn and
cr_components/BUILD.gn are not loaded at all in Android/iOS builds.
These folders hold Polymer elements, which are not relevant for
Android/iOS since Polymer is not used (and not shipped) on those
platforms.

Those assertions revealed a bunch of places were unnecessary work was
triggered on Android/iOS builds, and had to be fixed.

These were originally discovered as part of migrating various shared
WebUI elements to TypeScript (through bot failures).

Bug: 1189595
Change-Id: I3a3065228056b23a9421e26bdab0c1e970514939
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3544200
Reviewed-by: Robert Sesek <[email protected]>
Auto-Submit: Demetrios Papadopoulos <[email protected]>
Reviewed-by: Rebekah Potter <[email protected]>
Commit-Queue: Demetrios Papadopoulos <[email protected]>
Cr-Commit-Position: refs/heads/main@{#985869}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index ddd365d3..c2349c4 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1984,8 +1984,6 @@
     "//chrome/browser/ui/webui/downloads:mojo_bindings",
     "//chrome/browser/ui/webui/history_clusters:mojo_bindings",
     "//chrome/browser/ui/webui/internals/user_education:mojo_bindings",
-    "//chrome/browser/ui/webui/new_tab_page:mojo_bindings",
-    "//chrome/browser/ui/webui/new_tab_page_third_party:mojo_bindings",
     "//chrome/browser/ui/webui/omnibox:mojo_bindings",
     "//chrome/browser/ui/webui/read_later:mojo_bindings",
     "//chrome/browser/ui/webui/read_later/side_panel:mojo_bindings",
@@ -2410,10 +2408,6 @@
     "//ui/surface",
     "//ui/web_dialogs",
     "//ui/webui",
-    "//ui/webui/resources/cr_components/color_change_listener:mojom",
-    "//ui/webui/resources/cr_components/customize_themes:mojom",
-    "//ui/webui/resources/cr_components/most_visited:mojom",
-    "//ui/webui/resources/js/browser_command:mojo_bindings",
   ]
   if (is_chromeos_ash) {
     sources += [
@@ -4439,6 +4433,8 @@
       "//chrome/browser/ui/color:color_headers",
       "//chrome/browser/ui/webui/access_code_cast:mojo_bindings",
       "//chrome/browser/ui/webui/image_editor:mojo_bindings",
+      "//chrome/browser/ui/webui/new_tab_page:mojo_bindings",
+      "//chrome/browser/ui/webui/new_tab_page_third_party:mojo_bindings",
       "//chrome/browser/ui/webui/tab_strip:mojo_bindings",
       "//chrome/browser/web_applications",
       "//chrome/browser/web_applications/adjustments",
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index 1b56197..10aeeb4 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -86,7 +86,6 @@
 #include "third_party/blink/public/mojom/prerender/prerender.mojom.h"
 #include "third_party/blink/public/public_buildflags.h"
 #include "ui/accessibility/accessibility_features.h"
-#include "ui/webui/resources/cr_components/customize_themes/customize_themes.mojom.h"
 
 #if BUILDFLAG(ENABLE_UNHANDLED_TAP)
 #include "chrome/browser/android/contextualsearch/unhandled_tap_notifier_impl.h"
@@ -172,6 +171,7 @@
 #include "media/base/media_switches.h"
 #include "media/mojo/mojom/speech_recognition_service.mojom.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
+#include "ui/webui/resources/cr_components/customize_themes/customize_themes.mojom.h"
 #include "ui/webui/resources/cr_components/most_visited/most_visited.mojom.h"
 #include "ui/webui/resources/js/browser_command/browser_command.mojom.h"
 #endif  // BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 41a3e4e..5658fea7 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -410,8 +410,6 @@
     "//chrome/browser/ui/webui/download_shelf:mojo_bindings",
     "//chrome/browser/ui/webui/downloads:mojo_bindings",
     "//chrome/browser/ui/webui/history_clusters:mojo_bindings",
-    "//chrome/browser/ui/webui/new_tab_page:mojo_bindings",
-    "//chrome/browser/ui/webui/new_tab_page_third_party:mojo_bindings",
     "//chrome/browser/ui/webui/omnibox:mojo_bindings",
     "//chrome/browser/ui/webui/read_later:mojo_bindings",
     "//chrome/browser/ui/webui/read_later/side_panel:mojo_bindings",
@@ -645,9 +643,6 @@
     "//ui/surface",
     "//ui/web_dialogs",
     "//ui/webui",
-    "//ui/webui/resources/cr_components/color_change_listener:mojom",
-    "//ui/webui/resources/cr_components/customize_themes:mojom",
-    "//ui/webui/resources/cr_components/most_visited:mojom",
     "//v8:v8_version",
   ]
 
@@ -1747,6 +1742,8 @@
       "//chrome/browser/ui/webui/app_service_internals:mojo_bindings",
       "//chrome/browser/ui/webui/image_editor:mojo_bindings",
       "//chrome/browser/ui/webui/internals/user_education:mojo_bindings",
+      "//chrome/browser/ui/webui/new_tab_page:mojo_bindings",
+      "//chrome/browser/ui/webui/new_tab_page_third_party:mojo_bindings",
       "//chrome/browser/ui/webui/tab_strip:mojo_bindings",
       "//chrome/browser/web_applications",
       "//chrome/common:buildflags",
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index d91d4dd2d..5341b987 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -5595,7 +5595,6 @@
     "//chrome/browser/ui:test_support",
     "//chrome/browser/ui/commander:fuzzy_finder",
     "//chrome/browser/ui/webui/downloads:mojo_bindings",
-    "//chrome/browser/ui/webui/new_tab_page:mojo_bindings",
     "//chrome/browser/updates/announcement_notification:unit_tests",
     "//chrome/browser/video_tutorials:unit_tests",
     "//chrome/browser/web_share_target:unit_tests",
@@ -5852,7 +5851,6 @@
     "//ui/shell_dialogs",
     "//ui/web_dialogs:web_dialogs_unittests",
     "//ui/webui",
-    "//ui/webui/resources/cr_components/customize_themes:mojom",
     "//v8",
   ]
 
@@ -6808,6 +6806,7 @@
 
     deps += [
       "//chrome/browser/share/core:share_targets_unittest",
+      "//chrome/browser/ui/webui/new_tab_page:mojo_bindings",
       "//components/app_constants",
       "//components/media_router/common:test_support",
       "//components/services/app_service/public/cpp:publisher",
diff --git a/chrome/test/data/webui/cr_components/BUILD.gn b/chrome/test/data/webui/cr_components/BUILD.gn
index d10ff6d..d3ec1ca 100644
--- a/chrome/test/data/webui/cr_components/BUILD.gn
+++ b/chrome/test/data/webui/cr_components/BUILD.gn
@@ -7,6 +7,8 @@
 import("//tools/typescript/ts_library.gni")
 import("//ui/webui/resources/tools/generate_grd.gni")
 
+assert(!is_android && !is_ios)
+
 preprocessed_files = [ "managed_footnote_test.ts" ]
 
 if (use_nss_certs) {
diff --git a/chrome/test/data/webui/cr_elements/BUILD.gn b/chrome/test/data/webui/cr_elements/BUILD.gn
index eb183cb..bcf2175 100644
--- a/chrome/test/data/webui/cr_elements/BUILD.gn
+++ b/chrome/test/data/webui/cr_elements/BUILD.gn
@@ -6,6 +6,8 @@
 import("//tools/typescript/ts_library.gni")
 import("//ui/webui/resources/tools/generate_grd.gni")
 
+assert(!is_android && !is_ios)
+
 generate_grd("build_grdp") {
   grd_prefix = "webui_cr_elements"
   out_grd = "$target_gen_dir/resources.grdp"
diff --git a/ui/webui/BUILD.gn b/ui/webui/BUILD.gn
index eb73049..50cf536 100644
--- a/ui/webui/BUILD.gn
+++ b/ui/webui/BUILD.gn
@@ -26,6 +26,16 @@
     "//content/public/browser",
     "//services/service_manager/public/cpp",
   ]
+
+  public_deps = [ "//ui/webui/resources/js/browser_command:mojo_bindings" ]
+
+  if (!is_android && !is_ios) {
+    public_deps += [
+      "//ui/webui/resources/cr_components/color_change_listener:mojom",
+      "//ui/webui/resources/cr_components/customize_themes:mojom",
+      "//ui/webui/resources/cr_components/most_visited:mojom",
+    ]
+  }
 }
 
 source_set("test_support") {
diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn
index 9f8f17a..150ed85 100644
--- a/ui/webui/resources/BUILD.gn
+++ b/ui/webui/resources/BUILD.gn
@@ -101,11 +101,14 @@
 }
 
 group("preprocess") {
-  public_deps = [
-    "cr_components:preprocess",
-    "cr_elements:preprocess",
-    "js:preprocess",
-  ]
+  public_deps = [ "js:preprocess" ]
+
+  if (include_polymer) {
+    public_deps += [
+      "cr_components:preprocess",
+      "cr_elements:preprocess",
+    ]
+  }
 }
 
 group("closure_compile") {
@@ -114,7 +117,7 @@
     "js:closure_compile_modules",
   ]
 
-  if (!is_android) {
+  if (include_polymer) {
     deps += [
       "cr_components:closure_compile",
       "cr_elements:closure_compile",
@@ -129,7 +132,7 @@
     "js/cr/ui:modulize",
   ]
 
-  if (!is_android) {
+  if (include_polymer) {
     public_deps += [
       "cr_components:polymer3_elements",
       "cr_elements:polymer3_elements",
@@ -204,21 +207,6 @@
 
 # Files for which .d.ts files will be auto-generated with ts_definitions().
 generate_definitions_js_files = [
-  "cr_elements/action_link_css.m.js",
-  "cr_elements/cr_fingerprint/cr_fingerprint_icon.m.js",
-  "cr_elements/cr_actionable_row_style.m.js",
-  "cr_elements/cr_icons_css.m.js",
-  "cr_elements/cr_auto_img/cr_auto_img.js",
-  "cr_elements/cr_input/cr_input_style_css.m.js",
-  "cr_elements/cr_menu_selector/cr_menu_selector.js",
-  "cr_elements/cr_page_host_style_css.js",
-  "cr_elements/cr_profile_avatar_selector/cr_profile_avatar_selector_grid.js",
-  "cr_elements/cr_radio_button/cr_radio_button_style_css.m.js",
-  "cr_elements/hidden_style_css.m.js",
-  "cr_elements/icons.m.js",
-  "cr_elements/md_select_css.m.js",
-  "cr_elements/shared_style_css.m.js",
-  "cr_elements/shared_vars_css.m.js",
   "js/action_link.js",
   "js/assert.m.js",
   "js/color_utils.js",
@@ -238,13 +226,33 @@
   "js/util.m.js",
 ]
 
-if (is_chromeos_ash) {
+if (include_polymer) {
   generate_definitions_js_files += [
-    "cr_elements/chromeos/cros_color_overrides.m.js",
-    "cr_elements/chromeos/cr_picture/png.js",
-    "cr_elements/chromeos/cr_picture/webcam_utils.js",
-    "js/cr/ui/store_client.js",
+    "cr_elements/action_link_css.m.js",
+    "cr_elements/cr_fingerprint/cr_fingerprint_icon.m.js",
+    "cr_elements/cr_actionable_row_style.m.js",
+    "cr_elements/cr_icons_css.m.js",
+    "cr_elements/cr_auto_img/cr_auto_img.js",
+    "cr_elements/cr_input/cr_input_style_css.m.js",
+    "cr_elements/cr_menu_selector/cr_menu_selector.js",
+    "cr_elements/cr_page_host_style_css.js",
+    "cr_elements/cr_profile_avatar_selector/cr_profile_avatar_selector_grid.js",
+    "cr_elements/cr_radio_button/cr_radio_button_style_css.m.js",
+    "cr_elements/hidden_style_css.m.js",
+    "cr_elements/icons.m.js",
+    "cr_elements/md_select_css.m.js",
+    "cr_elements/shared_style_css.m.js",
+    "cr_elements/shared_vars_css.m.js",
   ]
+
+  if (is_chromeos_ash) {
+    generate_definitions_js_files += [
+      "cr_elements/chromeos/cros_color_overrides.m.js",
+      "cr_elements/chromeos/cr_picture/png.js",
+      "cr_elements/chromeos/cr_picture/webcam_utils.js",
+      "js/cr/ui/store_client.js",
+    ]
+  }
 }
 
 if (!is_android) {
@@ -258,31 +266,36 @@
   tsconfig_base = "tsconfig_base.json"
 
   in_files = [
-    "cr_components/iph_bubble/iph_bubble.ts",
-    "cr_components/managed_footnote/managed_footnote.ts",
-    "cr_components/managed_dialog/managed_dialog.ts",
-    "cr_elements/cr_grid/cr_grid.ts",
-    "cr_elements/cr_a11y_announcer/cr_a11y_announcer.ts",
-    "cr_elements/cr_container_shadow_mixin.ts",
-    "cr_elements/cr_nav_menu_item_style.ts",
-    "cr_elements/cr_slider/cr_slider.ts",
-    "cr_elements/cr_splitter/cr_splitter.ts",
-    "cr_elements/cr_tabs/cr_tabs.ts",
-    "cr_elements/cr_toolbar/cr_toolbar_selection_overlay.ts",
-    "cr_elements/find_shortcut_mixin.ts",
-    "cr_elements/mouse_hoverable_mixin.ts",
-    "cr_elements/mwb_element_shared_style.ts",
-    "cr_elements/mwb_shared_icons.ts",
-    "cr_elements/mwb_shared_style.ts",
-    "cr_elements/mwb_shared_vars.ts",
-    "cr_elements/search_highlight_style_css.ts",
     "js/assert_ts.ts",
     "js/custom_element.ts",
-    "js/i18n_mixin.ts",
-    "js/list_property_update_mixin.ts",
-    "js/web_ui_listener_mixin.ts",
   ]
 
+  if (include_polymer) {
+    in_files += [
+      "cr_components/iph_bubble/iph_bubble.ts",
+      "cr_components/managed_footnote/managed_footnote.ts",
+      "cr_components/managed_dialog/managed_dialog.ts",
+      "cr_elements/cr_grid/cr_grid.ts",
+      "cr_elements/cr_a11y_announcer/cr_a11y_announcer.ts",
+      "cr_elements/cr_container_shadow_mixin.ts",
+      "cr_elements/cr_nav_menu_item_style.ts",
+      "cr_elements/cr_slider/cr_slider.ts",
+      "cr_elements/cr_splitter/cr_splitter.ts",
+      "cr_elements/cr_tabs/cr_tabs.ts",
+      "cr_elements/cr_toolbar/cr_toolbar_selection_overlay.ts",
+      "cr_elements/find_shortcut_mixin.ts",
+      "cr_elements/mouse_hoverable_mixin.ts",
+      "cr_elements/mwb_element_shared_style.ts",
+      "cr_elements/mwb_shared_icons.ts",
+      "cr_elements/mwb_shared_style.ts",
+      "cr_elements/mwb_shared_vars.ts",
+      "cr_elements/search_highlight_style_css.ts",
+      "js/i18n_mixin.ts",
+      "js/list_property_update_mixin.ts",
+      "js/web_ui_listener_mixin.ts",
+    ]
+  }
+
   definitions = [
     "//tools/typescript/definitions/settings_private.d.ts",
     "//tools/typescript/definitions/chrome_send.d.ts",
diff --git a/ui/webui/resources/cr_components/BUILD.gn b/ui/webui/resources/cr_components/BUILD.gn
index b8423954..a225c46 100644
--- a/ui/webui/resources/cr_components/BUILD.gn
+++ b/ui/webui/resources/cr_components/BUILD.gn
@@ -8,6 +8,8 @@
 import("//ui/webui/resources/tools/generate_grd.gni")
 import("//ui/webui/webui_features.gni")
 
+assert(!is_android && !is_ios)
+
 preprocess_folder =
     "$root_gen_dir/ui/webui/resources/preprocessed/cr_components"
 preprocess_gen_manifest = "preprocessed_gen_manifest.json"
diff --git a/ui/webui/resources/cr_components/customize_themes/BUILD.gn b/ui/webui/resources/cr_components/customize_themes/BUILD.gn
index b963101..afdbf931 100644
--- a/ui/webui/resources/cr_components/customize_themes/BUILD.gn
+++ b/ui/webui/resources/cr_components/customize_themes/BUILD.gn
@@ -8,6 +8,8 @@
 import("//tools/typescript/ts_library.gni")
 import("//ui/webui/resources/tools/generate_grd.gni")
 
+assert(!is_android && !is_ios)
+
 group("web_components") {
   public_deps = [
     ":mojom_webui_js",
diff --git a/ui/webui/resources/cr_components/most_visited/BUILD.gn b/ui/webui/resources/cr_components/most_visited/BUILD.gn
index 503c5d4..d41ce59 100644
--- a/ui/webui/resources/cr_components/most_visited/BUILD.gn
+++ b/ui/webui/resources/cr_components/most_visited/BUILD.gn
@@ -7,6 +7,8 @@
 import("//tools/typescript/ts_library.gni")
 import("//ui/webui/resources/tools/generate_grd.gni")
 
+assert(!is_android && !is_ios)
+
 preprocess_folder =
     "$root_gen_dir/ui/webui/resources/preprocessed/cr_components/most_visited"
 
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn
index ce5cfa5b..5085290 100644
--- a/ui/webui/resources/cr_elements/BUILD.gn
+++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -10,6 +10,8 @@
 import("//ui/webui/resources/tools/generate_grd.gni")
 import("//ui/webui/resources/tools/js_modulizer.gni")
 
+assert(!is_android && !is_ios)
+
 preprocess_folder = "$root_gen_dir/ui/webui/resources/preprocessed/cr_elements"
 preprocess_gen_manifest = "preprocessed_gen_manifest.json"
 preprocess_polymer2_manifest = "preprocessed_polymer2_manifest.json"