# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/ui.gni")
import("//chrome/common/features.gni")
import("//chrome/test/include_js_tests.gni")
import("//components/compose/features.gni")
import("//components/guest_view/buildflags/buildflags.gni")
import("//crypto/features.gni")
import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")
import("//printing/buildflags/buildflags.gni")
import("//tools/grit/grit_rule.gni")
import("//tools/typescript/webui_ts_library.gni")
import("//ui/webui/resources/tools/generate_grd.gni")
import("//ui/webui/webui_features.gni")

assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")

source_set("browser_tests") {
  testonly = true

  sources = [
    "bluetooth_internals/bluetooth_internals_browsertest.cc",
    "chrome_urls/chrome_urls_browsertest.cc",
    "commerce_internals/commerce_internals_browsertest.cc",
    "contextual_tasks/contextual_tasks_browsertest.cc",
    "cr_elements/cr_elements_browsertest.cc",
    "flags/flags_browsertest.cc",
    "js/js_browsertest.cc",
    "location_internals/location_internals_browsertest.cc",
    "notebooks_internals/notebooks_internals_browsertest.cc",
    "sync_internals/sync_internals_browsertest.cc",
    "usb_internals/usb_internals_browsertest.cc",
  ]

  deps = [
    "//chrome/browser:browser_features",
    "//chrome/browser:chrome_content_browser_client",
    "//chrome/browser/autocomplete:aim_eligibility_service",
    "//chrome/browser/bookmarks",
    "//chrome/browser/ui:ui_features",
    "//chrome/browser/ui/tabs/tab_group_home:constants",
    "//chrome/test:test_support",
    "//components/commerce/core:commerce_constants",
    "//components/contextual_tasks/public",
    "//components/metrics_services_manager",
    "//components/notebooks/public",
    "//components/ukm",
    "//components/ukm:ukm_test_helper",
    "//components/webui/chrome_urls/",
    "//services/metrics/public/cpp:test_support",
    "//services/metrics/public/cpp:ukm_builders",
    "//ui/compositor",
  ]

  if (!is_android) {
    deps += [ "//chrome/browser/ui/webui/net_internals:test_support" ]
  }

  data = []

  if (!is_android) {
    sources += [
      "about_sys/about_sys_browsertest.cc",
      "access_code_cast/access_code_cast_browsertest.cc",
      "actor_overlay/actor_overlay_browsertest.cc",
      "bookmarks/bookmarks_browsertest.cc",
      "chrome_apis/chrome_histograms_browsertest.cc",
      "chrome_apis/chrome_timeticks_browsertest.cc",
      "content_settings/content_settings_browsertest.cc",
      "css/css_browsertest.cc",
      "data_sharing/data_sharing_browsertest.cc",
      "device_log/device_log_ui_browsertest.cc",
      "downloads/downloads_browsertest.cc",
      "drive_picker/drive_picker_browsertest.cc",
      "engagement/site_engagement_browsertest.cc",
      "feedback/feedback_browsertest.cc",
      "glic/glic_browsertest.cc",
      "histograms/histograms_internals_browsertest.cc",
      "history/history_supervised_user_browsertest.cc",
      "history/history_ui_browsertest.cc",
      "history_clusters_internals/history_clusters_internals_browsertest.cc",
      "inspect/inspect_ui_browsertest.cc",
      "iwa_dev/iwa_dev_browsertest.cc",
      "key_value_pair_viewer/key_value_pair_viewer_browsertest.cc",
      "lens/lens_overlay_webui_browsertest.cc",
      "lens/lens_side_panel_webui_browsertest.cc",
      "management/management_browsertest.cc",
      "media/media_engagement_browsertest.cc",
      "media_internals/media_internals_browsertest.cc",
      "metrics_internals/metrics_internals_browsertest.cc",
      "multistep_filter_internals/multistep_filter_internals_browsertest.cc",
      "net_internals/net_internals_browsertest.cc",
      "new_tab_footer/new_tab_footer_browsertest.cc",
      "new_tab_page/new_tab_page_a11y_browsertest.cc",
      "new_tab_page/new_tab_page_browsertest.cc",
      "new_tab_shared/new_tab_shared_browsertest.cc",
      "omnibox_popup/omnibox_popup_browsertest.cc",
      "optimization_guide_internals/optimization_guide_internals_browsertest.cc",
      "organizer_panel/organizer_panel_browsertest.cc",
      "password_manager/password_manager_browsertest.cc",
      "password_manager_internals/password_manager_internals_browsertest.cc",
      "sandbox/sandbox_browsertest.cc",
      "settings/settings_browsertest.cc",
      "side_panel/commerce/commerce_browsertest.cc",
      "side_panel/customize_chrome/customize_chrome_browsertest.cc",
      "side_panel/history_clusters/history_clusters_browsertest.cc",
      "side_panel/read_anything/read_anything_browsertest.cc",
      "side_panel/reading_list/reading_list_browsertest.cc",
      "subresource_filter/subresource_filter_internals_browsertest.cc",
      "tab_group_home/tab_group_home_browsertest.cc",
      "tab_search/split_view_browsertest.cc",
      "tab_search/tab_search_browsertest.cc",
      "web_app_internals/web_app_internals_browsertest.cc",
      "webnn_internals/webnn_internals_browsertest.cc",
      "webui_toolbar/webui_toolbar_js_browsertest.cc",
      "webview/webui_webview_browsertest.cc",
    ]

    deps += [
      "//chrome/browser/actor",
      "//chrome/browser/engagement",
      "//chrome/browser/glic",
      "//chrome/browser/glic/test_support",
      "//chrome/browser/preloading",
      "//chrome/browser/signin:signin_promo",
      "//chrome/browser/subscription_eligibility",
      "//chrome/browser/ui/webui/settings",
    ]

    if (is_chrome_branded) {
      sources += [ "media_router/cast_feedback_ui_browsertest.cc" ]
    }

    if (enable_compose) {
      deps += [ "//chrome/browser/compose" ]
    }
  }

  if (!is_android || is_desktop_android) {
    sources += [ "cr_components/cr_components_browsertest.cc" ]
    deps += [
      "//components/contextual_tasks/public:feature_list",
      "//components/history_clusters/core",
      "//components/history_embeddings/core",
      "//components/lens:features",
    ]
  }

  if (enable_dice_support || is_chromeos) {
    sources += [ "signin/batch_upload_view_browsertest.cc" ]
  }
  if (enable_dice_support) {
    sources += [
      "feature_showcase/feature_showcase_browsertest.cc",
      "intro/intro_browsertest.cc",
    ]
  }

  if (enable_extensions_core) {
    sources += [ "extensions/extensions_browsertest.cc" ]
    deps += [ "//chrome/browser/ui/webui/extensions:test_support" ]
  }

  if (enable_extensions) {
    sources += [ "extensions_zero_state/zero_state_promo_browsertest.cc" ]
  }

  if (enable_print_preview && !is_chromeos) {
    sources += [ "print_preview/print_preview_browsertest.cc" ]
  }

  if (chrome_root_store_cert_management_ui) {
    sources += [ "certificate_manager/certificate_manager_browsertest.cc" ]
  }

  if (is_chromeos) {
    deps += [
      "//ash/webui/connectivity_diagnostics",
      "//chrome/browser/ui/webui/ash/cloud_upload:browser_tests",
    ]
    sources += [
      "chromeos/account_manager/account_manager_browsertest.cc",
      "chromeos/ash_common/ash_common_browsertest.cc",
      "chromeos/ash_common/ash_common_resources_browsertest.cc",
      "chromeos/ash_common/cr_elements/ash_common_cr_elements_browsertest.cc",
      "chromeos/ash_common/post_message_api/post_message_api_browsertest.cc",
      "chromeos/ash_common/sea_pen/sea_pen_browsertest.cc",
      "chromeos/ash_common/webui_resource_browsertest.cc",
      "chromeos/cloud_upload/cloud_upload_dialog_browsertest.cc",
      "chromeos/cloud_upload/connect_onedrive_browsertest.cc",
      "chromeos/cloud_upload/file_handler_page_browsertest.cc",
      "chromeos/cloud_upload/move_confirmation_page_browsertest.cc",
      "chromeos/color_internals/color_internals_browsertest.cc",
      "chromeos/cr_components_chromeos_v3_browsertest.cc",
      "chromeos/crostini_installer_browsertest.cc",
      "chromeos/diagnostics/diagnostics_browsertest.cc",
      "chromeos/edu_coexistence/edu_coexistence_browsertest.cc",
      "chromeos/emoji_picker/emoji_picker_browsertest.cc",
      "chromeos/enterprise_reporting/enterprise_reporting_browsertest.cc",
      "chromeos/extended_updates/extended_updates_browsertest.cc",
      "chromeos/firmware_update/firmware_update_browsertest.cc",
      "chromeos/gaia_action_buttons/gaia_action_buttons_browsertest.cc",
      "chromeos/graduation/graduation_browsertest.cc",
      "chromeos/healthd_internals/healthd_internals_browsertest.cc",
      "chromeos/inline_login/inline_login_browsertest.cc",
      "chromeos/internet_config_dialog_browsertest.cc",
      "chromeos/internet_detail_dialog_browsertest.cc",
      "chromeos/manage_mirrorsync/manage_mirrorsync_browsertest.cc",
      "chromeos/nearby_share/nearby_browsertest.cc",
      "chromeos/nearby_share/shared/nearby_shared_v3_browsertest.cc",
      "chromeos/office_fallback/office_fallback_browsertest.cc",
      "chromeos/oobe/security_token_pin_browsertest.cc",
      "chromeos/os_feedback_ui/os_feedback_browsertest.cc",
      "chromeos/parent_access/parent_access_browsertest.cc",
      "chromeos/personalization_app/personalization_app_browsertest.cc",
      "chromeos/personalization_app/personalization_app_sea_pen_browsertest.cc",
      "chromeos/print_management/print_management_browsertest.cc",
      "chromeos/print_preview/print_preview_browsertest.cc",
      "chromeos/sanitize_ui/sanitize_ui_browsertest.cc",
      "chromeos/scanning/scanning_app_browsertest.cc",
      "chromeos/set_time_dialog/set_time_dialog_browsertest.cc",
      "chromeos/settings/os_settings_browsertest.cc",
      "chromeos/shimless_rma/shimless_rma_browsertest.cc",
      "chromeos/shortcut_customization/shortcut_customization_browsertest.cc",
      "chromeos/vc_background_ui/vc_background_ui_browsertest.cc",
    ]
    deps += [ "//chrome/browser/prefs:util" ]
    if (is_chrome_branded) {
      sources += [
        "chromeos/boca_receiver_app_ui/boca_receiver_untrusted_ui_browsertest.cc",
        "chromeos/boca_ui/boca_app_browsertest.cc",
        "chromeos/projector_app/untrusted_projector_browser_proxy_browsertest.cc",
      ]
      deps += [
        "//chrome/browser/ash/boca",
        "//chromeos/ash/components/boca/proto",
        "//chromeos/ash/components/boca/session_api",
      ]
    }
  } else if (!is_android) {
    sources += [
      "signin/profile_picker_browsertest.cc",
      "signin/signin_browsertest.cc",
    ]

    if (enable_dice_support) {
      sources +=
          [ "signin/signout_confirmation/signout_confirmation_browsertest.cc" ]
    }
  }

  if (is_win || is_chromeos) {
    sources += [ "gaia_auth_host/gaia_auth_host_browsertest.cc" ]
  }

  if (is_win) {
    sources += [ "inline_login/inline_login_browsertest.cc" ]
  }

  if (is_win || is_mac) {
    sources += [ "omnibox_everywhere/omnibox_everywhere_browsertest.cc" ]
  }

  if (is_win || is_mac || is_linux || is_chromeos) {
    sources += [
      "discards/discards_browsertest.cc",
      "skills/skills_browsertest.cc",
    ]
    deps += [ "//components/skills:features" ]
    if (is_chrome_branded) {
      sources += [ "ai_overlay_dialog/ai_overlay_dialog_browsertest.cc" ]
    }
  }

  if (is_win || is_mac || is_linux) {
    sources += [
      "app_home/app_home_browsertest.cc",
      "app_settings/app_settings_browsertest.cc",
      "on_device_translation_internals/on_device_translation_internals_browsertest.cc",
      "updater/updater_browsertest.cc",
      "whats_new/whats_new_browsertest.cc",
    ]

    deps += [ "//chrome/browser/ui/webui/app_settings" ]
  }

  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

  if (!is_android) {
    deps += [
      "//build/config/coverage:buildflags",
      "//chrome/app:command_ids",
      "//chrome/browser/commerce",
      "//chrome/browser/devtools",
      "//chrome/browser/devtools:test_support",
      "//chrome/browser/history",
      "//chrome/browser/media/router/discovery/access_code:access_code_cast_feature",
      "//chrome/browser/optimization_guide",
      "//chrome/browser/optimization_guide:test_support",
      "//chrome/browser/search/background",
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/lens",
      "//chrome/browser/ui/tabs:tabs_public",
      "//chrome/browser/ui/views/side_panel",
      "//chrome/browser/ui/webui",
      "//chrome/browser/ui/webui/whats_new",
      "//components/bookmarks/browser",
      "//components/bookmarks/managed",
      "//components/browsing_data/core",
      "//components/commerce/core:account_checker_test_support",
      "//components/commerce/core:feature_list",
      "//components/commerce/core:shopping_service_test_support",
      "//components/compose/core/browser:features",
      "//components/data_sharing:test_support",
      "//components/history/core/common",
      "//components/history_clusters/core",
      "//components/history_clusters/history_clusters_internals/webui:constants",
      "//components/history_embeddings/content",
      "//components/history_embeddings/core",
      "//components/language/core/browser",
      "//components/lens:enterprise_policy",
      "//components/lens:features",
      "//components/multistep_filter/core",
      "//components/multistep_filter/core:features",
      "//components/optimization_guide/core",
      "//components/optimization_guide/optimization_guide_internals/webui:url_constants",
      "//components/password_manager/content/browser",
      "//components/password_manager/content/common",
      "//components/performance_manager",
      "//components/privacy_sandbox:features",
      "//components/privacy_sandbox/privacy_sandbox_attestations",
      "//components/privacy_sandbox/privacy_sandbox_attestations:test_support",
      "//components/safe_browsing/core/common",
      "//components/search",
      "//components/site_engagement/content",
      "//components/spellcheck/browser",
      "//components/user_education/common",
      "//net:test_support",
    ]
  }

  if (is_chromeos) {
    deps += [
      "//ash/webui/boca_receiver_app_ui",
      "//ash/webui/boca_ui:constants",
      "//ash/webui/color_internals",
      "//ash/webui/projector_app",
      "//ash/webui/sanitize_ui",
      "//ash/webui/shimless_rma",
      "//ash/webui/vc_background_ui",
      "//chrome/browser/ash/crostini:test_support",
      "//chrome/browser/ash/extended_updates/test:test_support",
      "//chrome/browser/ash/ownership",
      "//chrome/browser/ash/system_web_apps/apps/personalization_app",
      "//chrome/browser/ash/system_web_apps/apps/personalization_app:test_support",
      "//chrome/browser/nearby_sharing/common",
      "//chrome/browser/ui/webui/ash/extended_updates",
      "//chrome/browser/ui/webui/ash/login",
      "//chrome/browser/ui/webui/ash/settings",
      "//components/manta",
      "//components/proxy_config",
    ]
  }
  if (enable_compose) {
    sources += [ "compose/compose_browsertest.cc" ]
    deps += [ "//components/compose/core/browser:features" ]
  }

  if (enable_webui_certificate_viewer) {
    sources +=
        [ "certificate_viewer_dialog/certificate_viewer_dialog_browsertest.cc" ]
    deps += [
      "//chrome/browser:certificate_viewer",
      "//chrome/browser/ui/webui/certificate_viewer",
      "//components/server_certificate_database:test_support",
    ]
  }

  if (!is_android && !is_chromeos) {
    sources += [ "default_browser/default_browser_browsertest.cc" ]
    deps += [
      "//chrome/browser/ui/toasts",
      "//chrome/browser/ui/webui/default_browser:default_browser_modal",
      "//chrome/browser/ui/webui/signin:signin_utils",
    ]
  }

  if (is_mac) {
    sources += [
      "unexportable_keys_internals/unexportable_keys_internals_browsertest.cc",
    ]
  }

  if (!enable_extensions_core && enable_guest_view) {
    sources += [ "guest_view_shared/slim_webview_browsertest.cc" ]
    deps += [ "//chrome/browser/permissions" ]

    data += [ "//chrome/test/data/" ]
  }
}

source_set("interactive_ui_tests") {
  testonly = true

  sources = [ "cr_elements/cr_elements_focus_interactive_uitest.cc" ]

  deps = [ "//chrome/browser/glic/test_support" ]

  if (!is_android) {
    sources += [
      "bookmarks/bookmarks_focus_interactive_uitest.cc",
      "contextual_tasks/contextual_tasks_pixel_interactive_ui_test.cc",
      "cr_components/cr_components_interactive_uitest.cc",
      "downloads/downloads_focus_interactive_uitest.cc",
      "history/history_focus_interactive_uitest.cc",
      "lens/lens_side_panel_pixel_interactive_ui_test.cc",
      "new_tab_page/new_tab_page_focus_interactive_uitest.cc",
      "password_manager/password_manager_focus_test.cc",
      "settings/settings_focus_interactive_uitest.cc",
      "side_panel/bookmarks/sp_bookmarks_interactive_uitest.cc",
      "support_tool/support_tool_focus_interactive_uitest.cc",
      "tab_search/split_new_tab_page_interactive_uitest.cc",
      "tab_search/tab_search_focus_test.cc",
      "webui_toolbar/webui_toolbar_js_interactive_uitest.cc",
    ]

    deps += [ "//chrome/test/data/webui:composebox_pixel_test_support" ]
  }

  if (enable_extensions_core) {
    sources += [ "extensions/extensions_focus_interactive_uitest.cc" ]
    deps += [ "//chrome/browser/ui/webui/extensions:test_support" ]
  }

  if (enable_print_preview && !is_chromeos) {
    sources += [ "print_preview/print_preview_focus_interactive_uitest.cc" ]
  }

  if (chrome_root_store_cert_management_ui) {
    sources += [ "certificate_manager/certificate_manager_interactive_test.cc" ]
  }

  if (is_chromeos) {
    sources += [
      "chromeos/ash_common/cr_elements/ash_common_cr_elements_focus_interactive_uitest.cc",
      "chromeos/cr_focus_row_behavior_interactive_uitest.cc",
      "chromeos/print_preview/print_preview_focus_interactive_uitest.cc",
      "chromeos/settings/os_settings_focus_interactive_uitest.cc",
    ]
  }

  data = [ "//chrome/test/data/" ]

  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

  deps += [ "//chrome/test:test_support" ]

  if (!is_android) {
    deps += [
      "//chrome/browser/autocomplete:aim_eligibility_service",
      "//chrome/browser/contextual_tasks:test_support",
      "//chrome/browser/contextual_tasks:ui",
      "//chrome/browser/ui:ui_features",
      "//components/contextual_tasks/public",
      "//components/history_clusters/core",
      "//components/password_manager/content/common",
      "//components/search",
      "//third_party/omnibox_proto",
    ]
  }

  if (enable_compose) {
    sources += [ "compose/compose_focus_interactive_uitest.cc" ]
    deps += [
      "//chrome/browser/compose",
      "//components/compose/core/browser:features",
    ]
  }
}

grit("resources") {
  testonly = true
  defines = chrome_grit_defines

  # These arguments are needed since the grd is generated at build time.
  enable_input_discovery_for_gn_analyze = false
  source = "$target_gen_dir/resources.grd"
  deps = [ ":build_grd" ]

  grd_prefix = "webui_test"
  outputs = [
    "test/data/grit/${grd_prefix}_resources.h",
    "test/data/grit/${grd_prefix}_resources_map.cc",
    "test/data/grit/${grd_prefix}_resources_map.h",
    "${grd_prefix}_resources.pak",
  ]

  grit_flags = [
    "-E",
    "add_filepath_to_resource_map=${load_webui_from_disk}",
  ]

  output_dir = "$root_gen_dir/chrome"
}

generate_grd("build_chai_grdp") {
  testonly = true
  grd_prefix = "webui_test"
  out_grd = "$target_gen_dir/chai_resources.grdp"
  input_files_base_dir =
      rebase_path("//third_party/node/node_modules/chai", "//")
  input_files = [ "index.js" ]
  resource_path_rewrites = [ "index.js|chai.js" ]
}

generate_grd("build_mocha_grdp") {
  testonly = true
  grd_prefix = "webui_test"
  out_grd = "$target_gen_dir/mocha_resources.grdp"
  input_files_base_dir =
      rebase_path("//third_party/node/node_modules/mocha", "//")
  input_files = [ "mocha.js" ]
}

webui_ts_library("build_ts") {
  root_dir = "."
  out_dir = "$target_gen_dir/tsc"
  composite = true
  tsconfig_base = "tsconfig_base.json"
  in_files = [
    "chai_assert.ts",
    "fake_chrome_event.ts",
    "fake_media_query_list.ts",
    "keyboard_mock_interactions.ts",
    "metrics_test_support.ts",
    "mocha_adapter_simple.ts",
    "mock_controller.ts",
    "mock_timer.ts",
    "mock_timer_test.ts",
    "test_browser_proxy.ts",
    "test_mock.ts",
    "test_mock_test.ts",
    "test_open_window_proxy.ts",
    "test_plural_string_proxy.ts",
    "test_util.ts",
    "trusted_html.ts",
  ]

  if (!is_android) {
    in_files += [
      "fake_settings_private.ts",
      "mocked_metrics_reporter.ts",
      "mouse_mock_interactions.ts",
      "polymer_test_util.ts",
      "test_api.ts",
      "test_store.ts",
      "test_user_education_mixed_trust_handler.ts",
    ]
  }

  deps = [ "//ui/webui/resources/js:build_ts" ]

  definitions = [
    "//tools/typescript/definitions/dom_automation_controller.d.ts",
    "//tools/typescript/definitions/chrome_histograms.d.ts",
    "//tools/typescript/definitions/metrics_private.d.ts",
  ]

  if (!is_android) {
    deps += [
      "//third_party/polymer/v3_0:library",
      "//ui/webui/resources/mojo:build_ts",
    ]

    definitions += [
      "//tools/typescript/definitions/chrome_event.d.ts",
      "//tools/typescript/definitions/chrome_send.d.ts",
      "//tools/typescript/definitions/settings_private.d.ts",
    ]
  }

  definitions += []

  path_mappings =
      [ "//webui-test/chai.js|" +
        rebase_path("//third_party/node/node_modules/@types/chai/index.d.ts",
                    target_gen_dir) ]
}

generate_grd("build_grd") {
  testonly = true
  grd_prefix = "webui_test"
  output_files_base_dir = "test/data/grit"
  out_grd = "$target_gen_dir/resources.grd"

  deps = [
    ":build_chai_grdp",
    ":build_mocha_grdp",
    ":build_ts",
    "bluetooth_internals:build_grdp",
    "chrome_urls:build_grdp",
    "commerce_internals:build_grdp",
    "contextual_tasks:build_grdp",
    "cr_elements:build_grdp",
    "flags:build_grdp",
    "js:build_grdp",
    "location_internals:build_grdp",
    "notebooks_internals:build_grdp",
    "sync_internals:build_grdp",
    "usb_internals:build_grdp",
  ]

  grdp_files = [
    "$target_gen_dir/bluetooth_internals/resources.grdp",
    "$target_gen_dir/chai_resources.grdp",
    "$target_gen_dir/chrome_urls/resources.grdp",
    "$target_gen_dir/commerce_internals/resources.grdp",
    "$target_gen_dir/contextual_tasks/resources.grdp",
    "$target_gen_dir/notebooks_internals/resources.grdp",
    "$target_gen_dir/cr_elements/resources.grdp",
    "$target_gen_dir/flags/resources.grdp",
    "$target_gen_dir/js/resources.grdp",
    "$target_gen_dir/location_internals/resources.grdp",
    "$target_gen_dir/mocha_resources.grdp",
    "$target_gen_dir/sync_internals/resources.grdp",
    "$target_gen_dir/usb_internals/resources.grdp",
  ]

  if (!is_android) {
    # Needed by the ExtensionWebUIListenersTest which needs to load a dummy
    # HTML file from a chrome://webui-test URL.
    input_files = [ "extension_webui_listeners_test.html" ]
    input_files_base_dir = rebase_path(".", "//")

    deps += [
      "about_sys:build_grdp",
      "access_code_cast:build_grdp",
      "actor_overlay:build_grdp",
      "bookmarks:build_grdp",
      "chrome_apis:build_grdp",
      "content_settings:build_grdp",
      "cr_components/cr_shortcut_input:build_grdp",
      "cr_components/help_bubble:build_grdp",
      "cr_components/history_clusters:build_grdp",
      "cr_components/history_embeddings:build_grdp",
      "cr_components/searchbox:build_grdp",
      "cr_components/theme_color_picker:build_grdp",
      "css:build_grdp",
      "data_sharing:build_grdp",
      "device_log:build_grdp",
      "discards:build_grdp",
      "downloads:build_grdp",
      "drive_picker:build_grdp",
      "engagement:build_grdp",
      "feedback:build_grdp",
      "glic:build_grdp",
      "histograms:build_grdp",
      "history:build_grdp",
      "history_clusters_internals:build_grdp",
      "inspect:build_grdp",
      "iwa_dev:build_grdp",
      "key_value_pair_viewer:build_grdp",
      "lens:build_grdp",
      "management:build_grdp",
      "media:build_grdp",
      "media_internals:build_grdp",
      "metrics_internals:build_grdp",
      "mojo:build_grdp",
      "multistep_filter_internals:build_grdp",
      "net_internals:build_grdp",
      "new_tab_footer:build_grdp",
      "new_tab_page:build_grdp",
      "new_tab_shared:build_grdp",
      "omnibox_everywhere:build_grdp",
      "omnibox_popup:build_grdp",
      "optimization_guide_internals:build_grdp",
      "organizer_panel:build_grdp",
      "password_manager:build_grdp",
      "password_manager_internals:build_grdp",
      "sandbox:build_grdp",
      "settings:build_grdp",
      "side_panel:build_grdp",
      "side_panel/customize_chrome:build_grdp",
      "side_panel/read_anything:build_grdp",
      "subresource_filter:build_grdp",
      "support_tool:build_grdp",
      "tab_group_home:build_grdp",
      "tab_search:build_grdp",
      "web_app_internals:build_grdp",
      "webnn_internals:build_grdp",
      "webui_toolbar:build_grdp",
      "webview:build_grdp",
    ]

    grdp_files += [
      "$target_gen_dir/about_sys/resources.grdp",
      "$target_gen_dir/access_code_cast/resources.grdp",
      "$target_gen_dir/actor_overlay/resources.grdp",
      "$target_gen_dir/chrome_apis/resources.grdp",

      "$target_gen_dir/webview/resources.grdp",
      "$target_gen_dir/bookmarks/resources.grdp",
      "$target_gen_dir/content_settings/resources.grdp",
      "$target_gen_dir/cr_components/cr_shortcut_input/resources.grdp",
      "$target_gen_dir/cr_components/help_bubble/resources.grdp",
      "$target_gen_dir/cr_components/history_clusters/resources.grdp",
      "$target_gen_dir/cr_components/history_embeddings/resources.grdp",
      "$target_gen_dir/cr_components/searchbox/resources.grdp",
      "$target_gen_dir/cr_components/theme_color_picker/resources.grdp",
      "$target_gen_dir/css/resources.grdp",
      "$target_gen_dir/data_sharing/resources.grdp",
      "$target_gen_dir/device_log/resources.grdp",
      "$target_gen_dir/discards/resources.grdp",
      "$target_gen_dir/downloads/resources.grdp",
      "$target_gen_dir/drive_picker/resources.grdp",
      "$target_gen_dir/engagement/resources.grdp",
      "$target_gen_dir/feedback/resources.grdp",
      "$target_gen_dir/glic/resources.grdp",
      "$target_gen_dir/histograms/resources.grdp",
      "$target_gen_dir/history/resources.grdp",
      "$target_gen_dir/history_clusters_internals/resources.grdp",
      "$target_gen_dir/inspect/resources.grdp",
      "$target_gen_dir/iwa_dev/resources.grdp",
      "$target_gen_dir/key_value_pair_viewer/resources.grdp",
      "$target_gen_dir/media_internals/resources.grdp",
      "$target_gen_dir/media/resources.grdp",
      "$target_gen_dir/metrics_internals/resources.grdp",
      "$target_gen_dir/mojo/resources.grdp",
      "$target_gen_dir/multistep_filter_internals/resources.grdp",
      "$target_gen_dir/lens/resources.grdp",
      "$target_gen_dir/management/resources.grdp",
      "$target_gen_dir/net_internals/resources.grdp",
      "$target_gen_dir/new_tab_footer/resources.grdp",
      "$target_gen_dir/new_tab_shared/resources.grdp",
      "$target_gen_dir/new_tab_page/resources.grdp",
      "$target_gen_dir/omnibox_everywhere/resources.grdp",
      "$target_gen_dir/omnibox_popup/resources.grdp",
      "$target_gen_dir/optimization_guide_internals/resources.grdp",
      "$target_gen_dir/organizer_panel/resources.grdp",
      "$target_gen_dir/password_manager/resources.grdp",
      "$target_gen_dir/password_manager_internals/resources.grdp",
      "$target_gen_dir/sandbox/resources.grdp",
      "$target_gen_dir/settings/resources.grdp",
      "$target_gen_dir/side_panel/customize_chrome/resources.grdp",
      "$target_gen_dir/side_panel/read_anything/resources.grdp",
      "$target_gen_dir/side_panel/resources.grdp",
      "$target_gen_dir/subresource_filter/resources.grdp",
      "$target_gen_dir/support_tool/resources.grdp",
      "$target_gen_dir/tab_group_home/resources.grdp",
      "$target_gen_dir/tab_search/resources.grdp",
      "$target_gen_dir/webnn_internals/resources.grdp",
      "$target_gen_dir/web_app_internals/resources.grdp",
      "$target_gen_dir/webui_toolbar/resources.grdp",
    ]

    if (!is_chromeos) {
      deps += [ "default_browser:build_grdp" ]
      grdp_files += [ "$target_gen_dir/default_browser/resources.grdp" ]
    }
  }

  if (!is_android || is_desktop_android) {
    deps += [
      "cr_components:build_grdp",
      "cr_components/composebox:build_grdp",
    ]
    grdp_files += [
      "$target_gen_dir/cr_components/composebox/resources.grdp",
      "$target_gen_dir/cr_components/resources.grdp",
    ]
  }

  if (enable_extensions_core) {
    deps += [ "extensions:build_grdp" ]
    grdp_files += [ "$target_gen_dir/extensions/resources.grdp" ]
  }

  if (enable_extensions) {
    deps += [ "extensions_zero_state:build_grdp" ]
    grdp_files += [ "$target_gen_dir/extensions_zero_state/resources.grdp" ]
  }

  if (enable_print_preview && !is_chromeos) {
    deps += [ "print_preview:build_grdp" ]
    grdp_files += [ "$target_gen_dir/print_preview/resources.grdp" ]
  }

  if (enable_webui_certificate_viewer) {
    deps += [ "certificate_viewer_dialog:build_grdp" ]
    grdp_files += [ "$target_gen_dir/certificate_viewer_dialog/resources.grdp" ]
  }

  if (chrome_root_store_cert_management_ui) {
    deps += [ "certificate_manager:build_grdp" ]
    grdp_files += [ "$target_gen_dir/certificate_manager/resources.grdp" ]
  }

  if (enable_pdf) {
    # Include PDF Viewer tests, since they are also served by
    # chrome://webui-test, even though they reside in chrome/test/data/pdf/.
    deps += [ "../pdf:build_grdp" ]
    grdp_files += [ "$target_gen_dir/../pdf/resources.grdp" ]
  }

  if (is_chrome_branded && !is_android) {
    deps += [ "media_router:build_grdp" ]
    grdp_files += [ "$target_gen_dir/media_router/resources.grdp" ]
  }

  if (is_win || is_mac || is_linux) {
    deps += [
      "app_home:build_grdp",
      "app_settings:build_grdp",
      "on_device_translation_internals:build_grdp",
      "updater:build_grdp",
      "whats_new:build_grdp",
    ]
    grdp_files += [
      "$target_gen_dir/updater/resources.grdp",
      "$target_gen_dir/app_settings/resources.grdp",
      "$target_gen_dir/app_home/resources.grdp",
      "$target_gen_dir/on_device_translation_internals/resources.grdp",
      "$target_gen_dir/whats_new/resources.grdp",
    ]
  }

  if (is_win || is_mac || is_linux || is_chromeos) {
    deps += [ "skills:build_grdp" ]
    grdp_files += [ "$target_gen_dir/skills/resources.grdp" ]
    if (is_chrome_branded) {
      deps += [ "ai_overlay_dialog:build_grdp" ]
      grdp_files += [ "$target_gen_dir/ai_overlay_dialog/resources.grdp" ]
    }
  }

  if (is_win || is_chromeos) {
    deps += [ "gaia_auth_host:build_grdp" ]
    grdp_files += [ "$target_gen_dir/gaia_auth_host/resources.grdp" ]
  }

  if (is_chromeos) {
    deps += [
      "chromeos:build_grdp",
      "chromeos:build_web_ui_test_mojo_lite_grdp",
      "chromeos/account_manager:build_grdp",
      "chromeos/ash_common:build_grdp",
      "chromeos/ash_common/cr_elements:build_grdp",
      "chromeos/ash_common/post_message_api:build_grdp",
      "chromeos/ash_common/sea_pen:build_grdp",
      "chromeos/bluetooth:build_grdp",
      "chromeos/boca_receiver_app_ui:build_grdp",
      "chromeos/boca_ui:build_grdp",
      "chromeos/cellular_setup:build_grdp",
      "chromeos/cloud_upload:build_grdp",
      "chromeos/color_internals:build_grdp",
      "chromeos/diagnostics:build_grdp",
      "chromeos/edu_coexistence:build_grdp",
      "chromeos/emoji_picker:build_grdp",
      "chromeos/enterprise_reporting:build_grdp",
      "chromeos/extended_updates:build_grdp",
      "chromeos/firmware_update:build_grdp",
      "chromeos/gaia_action_buttons:build_grdp",
      "chromeos/graduation:build_grdp",
      "chromeos/healthd_internals:build_grdp",
      "chromeos/inline_login:build_grdp",
      "chromeos/manage_mirrorsync:build_grdp",
      "chromeos/multidevice_setup:build_grdp",
      "chromeos/nearby_share:build_grdp",
      "chromeos/network:build_grdp",
      "chromeos/network_health:build_grdp",
      "chromeos/office_fallback:build_grdp",
      "chromeos/oobe:build_grdp",
      "chromeos/os_feedback_ui:build_grdp",
      "chromeos/parent_access:build_grdp",
      "chromeos/personalization_app:build_grdp",
      "chromeos/print_management:build_grdp",
      "chromeos/print_preview:build_grdp",
      "chromeos/projector_app:build_grdp",
      "chromeos/sanitize_ui:build_grdp",
      "chromeos/scanning:build_grdp",
      "chromeos/set_time_dialog:build_grdp",
      "chromeos/settings:build_grdp",
      "chromeos/shimless_rma:build_grdp",
      "chromeos/shortcut_customization:build_grdp",
      "chromeos/sys_internals:build_grdp",
      "chromeos/traffic_counters:build_grdp",
      "chromeos/vc_background_ui:build_grdp",
      "signin:build_grdp",
      "//ui/file_manager:build_tests_gen_grdp",
      "//ui/file_manager:build_tests_grdp",
    ]
    grdp_files += [
      "$target_gen_dir/chromeos/ash_common/resources.grdp",
      "$target_gen_dir/chromeos/ash_common/cr_elements/resources.grdp",
      "$target_gen_dir/chromeos/ash_common/post_message_api/resources.grdp",
      "$target_gen_dir/chromeos/ash_common/sea_pen/resources.grdp",
      "$target_gen_dir/chromeos/account_manager/resources.grdp",
      "$target_gen_dir/signin/resources.grdp",
      "$target_gen_dir/chromeos/bluetooth/resources.grdp",
      "$target_gen_dir/chromeos/boca_ui/resources.grdp",
      "$target_gen_dir/chromeos/boca_receiver_app_ui/resources.grdp",
      "$target_gen_dir/chromeos/projector_app/resources.grdp",
      "$target_gen_dir/chromeos/cellular_setup/resources.grdp",
      "$target_gen_dir/chromeos/cloud_upload/resources.grdp",
      "$target_gen_dir/chromeos/color_internals/resources.grdp",
      "$target_gen_dir/chromeos/diagnostics/resources.grdp",
      "$target_gen_dir/chromeos/edu_coexistence/resources.grdp",
      "$target_gen_dir/chromeos/emoji_picker/resources.grdp",
      "$target_gen_dir/chromeos/enterprise_reporting/resources.grdp",
      "$target_gen_dir/chromeos/extended_updates/resources.grdp",
      "$target_gen_dir/chromeos/firmware_update/resources.grdp",
      "$target_gen_dir/chromeos/graduation/resources.grdp",
      "$target_gen_dir/chromeos/healthd_internals/resources.grdp",
      "$target_gen_dir/chromeos/inline_login/resources.grdp",
      "$target_gen_dir/chromeos/gaia_action_buttons/resources.grdp",
      "$target_gen_dir/chromeos/manage_mirrorsync/resources.grdp",
      "$target_gen_dir/chromeos/multidevice_setup/resources.grdp",
      "$target_gen_dir/chromeos/nearby_share/resources.grdp",
      "$target_gen_dir/chromeos/network/resources.grdp",
      "$target_gen_dir/chromeos/network_health/resources.grdp",
      "$target_gen_dir/chromeos/office_fallback/resources.grdp",
      "$target_gen_dir/chromeos/oobe/resources.grdp",
      "$target_gen_dir/chromeos/parent_access/resources.grdp",
      "$target_gen_dir/chromeos/personalization_app/resources.grdp",
      "$target_gen_dir/chromeos/print_management/resources.grdp",
      "$target_gen_dir/chromeos/print_preview/resources.grdp",
      "$target_gen_dir/chromeos/resources.grdp",
      "$target_gen_dir/chromeos/vc_background_ui/resources.grdp",
      "$target_gen_dir/chromeos/sanitize_ui/resources.grdp",
      "$target_gen_dir/chromeos/scanning/resources.grdp",
      "$target_gen_dir/chromeos/set_time_dialog/resources.grdp",
      "$target_gen_dir/chromeos/settings/resources.grdp",
      "$target_gen_dir/chromeos/shimless_rma/resources.grdp",
      "$target_gen_dir/chromeos/os_feedback_ui/resources.grdp",
      "$target_gen_dir/chromeos/shortcut_customization/resources.grdp",
      "$target_gen_dir/chromeos/sys_internals/resources.grdp",
      "$target_gen_dir/chromeos/traffic_counters/resources.grdp",
      "$target_gen_dir/chromeos/web_ui_test_mojo_lite_resources.grdp",
      "$root_gen_dir/ui/file_manager/tests_resources.grdp",
      "$root_gen_dir/ui/file_manager/tests_gen_resources.grdp",
    ]
  } else if (!is_android) {
    deps += [ "signin:build_grdp" ]
    grdp_files += [ "$target_gen_dir/signin/resources.grdp" ]

    if (enable_dice_support) {
      deps += [
        "feature_showcase:build_grdp",
        "intro:build_grdp",
        "signin/signout_confirmation:build_grdp",
      ]
      grdp_files += [
        "$target_gen_dir/feature_showcase/resources.grdp",
        "$target_gen_dir/intro/resources.grdp",
        "$target_gen_dir/signin/signout_confirmation/resources.grdp",
      ]
    }
  }

  if (is_win) {
    deps += [ "inline_login:build_grdp" ]

    grdp_files += [ "$target_gen_dir/inline_login/resources.grdp" ]
  }

  if (enable_compose) {
    deps += [ "compose:build_grdp" ]
    grdp_files += [ "$target_gen_dir/compose/resources.grdp" ]
  }

  if (is_mac) {
    deps += [ "unexportable_keys_internals:build_grdp" ]
    grdp_files +=
        [ "$target_gen_dir/unexportable_keys_internals/resources.grdp" ]
  }

  if (!enable_extensions_core && enable_guest_view) {
    deps += [ "guest_view_shared:build_grdp" ]
    grdp_files += [ "$target_gen_dir/guest_view_shared/resources.grdp" ]
  }

  manifest_files =
      filter_include(get_target_outputs(":build_ts"), [ "*_manifest.json" ])
}

if (!is_android) {
  source_set("composebox_pixel_test_support") {
    testonly = true
    sources = [
      "webui_composebox_pixel_test.cc",
      "webui_composebox_pixel_test.h",
    ]
    deps = [
      "//chrome/test:test_support",
      "//ui/native_theme:test_support",
    ]
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  }
}
