# 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("//mojo/public/tools/bindings/mojom.gni")

mojom("icon_handle_mojom") {
  sources = [ "icon_handle.mojom" ]

  public_deps = [ "//skia/public/mojom" ]

  cpp_typemaps = [
    {
      types = [
        {
          mojom = "toolbar_ui_api.mojom.IconHandle"
          cpp = "::toolbar_ui_api::IconHandle"
        },
      ]
      traits_headers = [ "icon_handle_mojom_traits.h" ]
      traits_sources = [ "icon_handle_mojom_traits.cc" ]
      traits_deps = [ ":types" ]
    },
  ]

  # Generate TypeScript bindings for WebUI.
  webui_module_path = "/"
}

mojom("extensions_bar_data_model_mojom") {
  sources = [ "extensions_bar_data_model.mojom" ]

  public_deps = [
    ":icon_handle_mojom",
    "//mojo/public/mojom/base",
  ]

  # Generate TypeScript bindings for WebUI.
  webui_module_path = "/"
}

# Generate Mojo bindings for toolbar_ui_api_data_model.mojom.
mojom("mojom_data_model") {
  sources = [ "toolbar_ui_api_data_model.mojom" ]

  # Dependencies on other mojom targets.
  public_deps = [
    ":extensions_bar_data_model_mojom",
    ":icon_handle_mojom",
    "//components/browser_apis/browser_controls:mojom_data_model",
    "//components/content_settings/core/common:content_settings_types",
    "//mojo/public/mojom/base",
    "//ui/gfx/geometry/mojom",
    "//ui/gfx/range/mojom",
  ]

  # Generate TypeScript bindings for WebUI.
  webui_module_path = "/"
}

# Generate Mojo bindings from mojom API files.
mojom("mojom") {
  sources = [
    "extensions_bar.mojom",
    "toolbar_ui_api.mojom",
  ]

  # Dependencies on other mojom targets.
  public_deps = [
    ":mojom_data_model",
    "//mojo/public/mojom/base",
    "//ui/base/dragdrop/mojom",
    "//ui/base/mojom:ui_base_types",
    "//ui/gfx/geometry/mojom",
    "//ui/webui/resources/js/tracked_element:mojo_bindings",
    "//url/mojom:url_mojom_gurl",
  ]

  # Generate TypeScript bindings for WebUI.
  webui_module_path = "/"
}

source_set("types") {
  sources = [
    "icon_handle.cc",
    "icon_handle.h",
  ]
  public_deps = [ "//base" ]
}

source_set("unit_tests") {
  sources = [ "icon_handle_unittest.cc" ]
  testonly = true

  deps = [
    ":types",
    "//base",
    "//testing/gtest",
  ]
}
