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

import("//ui/webui/resources/tools/build_webui.gni")

action("rewrite_mojo_imports") {
  visibility = [ ":*" ]
  script = "//chrome/browser/resources/rewrite_imports.py"

  inputs = [
    "$root_gen_dir/chrome/browser/contextual_tasks/contextual_tasks.mojom-webui.ts",
    "$root_gen_dir/chrome/browser/contextual_tasks/contextual_tasks_internals.mojom-webui.ts",
    "$root_gen_dir/chrome/browser/contextual_tasks/contextual_tasks_types.mojom-webui.ts",
    "$root_gen_dir/ui/webui/resources/cr_components/composebox/composebox.mojom-webui.ts",
  ]

  outputs = [
    "$target_gen_dir/mojo/contextual_tasks.mojom-webui.ts",
    "$target_gen_dir/mojo/contextual_tasks_internals.mojom-webui.ts",
    "$target_gen_dir/mojo/contextual_tasks_types.mojom-webui.ts",
    "$target_gen_dir/mojo/composebox.mojom-webui.ts",
  ]

  deps = [
    "//chrome/browser/contextual_tasks:mojo_bindings_ts__generator",
    "//ui/webui/resources/cr_components/composebox:mojo_bindings_ts__generator",
  ]

  args = [
    rebase_path(inputs[0], root_build_dir),
    rebase_path(outputs[0], root_build_dir),
    rebase_path(inputs[1], root_build_dir),
    rebase_path(outputs[1], root_build_dir),
    rebase_path(inputs[2], root_build_dir),
    rebase_path(outputs[2], root_build_dir),
    rebase_path(inputs[3], root_build_dir),
    rebase_path(outputs[3], root_build_dir),
  ]
}

ts_library("build_background_ts") {
  root_dir = "."
  out_dir = "$target_gen_dir/background"
  in_files = [ "background.ts" ]
  definitions = [
    "contextual_tasks_private.d.ts",
    "//tools/typescript/definitions/runtime.d.ts",
    "//tools/typescript/definitions/tabs.d.ts",
    "//tools/typescript/definitions/chrome_event.d.ts",
  ]
}

generate_grd("build_background_grdp") {
  grd_prefix = "contextual_tasks_extension"
  out_grd = "$target_gen_dir/background_resources.grdp"
  manifest_files = [ "$target_gen_dir/build_background_ts_manifest.json" ]
  resource_path_prefix = "contextual_tasks_extension"
  deps = [ ":build_background_ts" ]
}

build_webui("build") {
  grd_prefix = "contextual_tasks_extension"
  grd_resource_path_prefix = "contextual_tasks_extension"
  ts_composite = true

  # Refer to parent directory for composebox.ts and other UI files.
  in_folder = "."

  static_files = [
    "input_plate.html",
    "manifest.json",
  ]

  extra_grdp_deps = [ ":build_background_grdp" ]
  extra_grdp_files = [ "$target_gen_dir/background_resources.grdp" ]

  ts_files = [ "input_plate.ts" ]

  ts_deps = [
    "//chrome/browser/resources/contextual_tasks:build_ts",
    "//chrome/browser/resources/guest_view_shared:build_ts",
    "//third_party/lit/v3_0:build_ts",
    "//ui/webui/resources/cr_components/composebox:build_ts",
    "//ui/webui/resources/cr_components/help_bubble:build_ts",
    "//ui/webui/resources/cr_components/localized_link:build_ts",
    "//ui/webui/resources/cr_components/search:build_ts",
    "//ui/webui/resources/cr_elements:build_ts",
    "//ui/webui/resources/js:build_ts",
    "//ui/webui/resources/mojo:build_ts",
  ]

  mojo_files_deps = [ ":rewrite_mojo_imports" ]
  mojo_files = [
    "$target_gen_dir/mojo/contextual_tasks.mojom-webui.ts",
    "$target_gen_dir/mojo/contextual_tasks_internals.mojom-webui.ts",
    "$target_gen_dir/mojo/contextual_tasks_types.mojom-webui.ts",
    "$target_gen_dir/mojo/composebox.mojom-webui.ts",
  ]

  ts_path_mappings = [
    "chrome://contextual-tasks/*|" +
        rebase_path(
            "$root_gen_dir/chrome/browser/resources/contextual_tasks/tsc/*",
            target_gen_dir),
    "/shared/guest_view/*|" + rebase_path(
            "$root_gen_dir/chrome/browser/resources/guest_view_shared/tsc/*",
            target_gen_dir),
  ]

  webui_context_type = "trusted_only"

  # Force optimization (bundling) even in debug builds to avoid having to
  # package all parent UI files individually in the extension.
  optimize = true
  optimize_webui_host = "chrome-extension://glbjnfimcajjenihimblfaponejbkoph"
  optimize_webui_in_files = [ "input_plate.js" ]

  optimize_webui_external_paths =
      [ "chrome://contextual-tasks/|" +
        rebase_path(
            "$root_gen_dir/chrome/browser/resources/contextual_tasks/tsc",
            root_build_dir) ]
}
