chromium/ui/base/mojom/BUILD.gn

# Copyright 2016 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("mojom") {
  generate_java = true
  sources = [
    "themes.mojom",
    "ui_base_types.mojom",
    "window_open_disposition.mojom",
  ]

  if (is_mac) {
    sources += [ "attributed_string.mojom" ]
    public_deps = [
      "//mojo/public/mojom/base",
      "//ui/gfx/range/mojom",
    ]
  }

  shared_cpp_typemaps = [
    {
      types = [
        {
          mojom = "ui.mojom.WindowShowState"
          cpp = "::ui::WindowShowState"
        },
      ]
      traits_headers = [ "ui_base_types_mojom_traits.h" ]
      traits_public_deps = [ "//ui/base" ]
    },
  ]

  cpp_typemaps = [
    {
      types = [
        {
          mojom = "ui.mojom.MenuSourceType"
          cpp = "::ui::MenuSourceType"
        },
      ]
      traits_headers = [ "ui_base_types_mojom_traits.h" ]
      traits_public_deps = [ "//ui/base" ]
    },
    {
      types = [
        {
          mojom = "ui.mojom.WindowOpenDisposition"
          cpp = "::WindowOpenDisposition"
        },
      ]
      traits_headers = [ "window_open_disposition_mojom_traits.h" ]
      traits_public_deps = [ "//ui/base:types" ]
    },
  ]

  cpp_typemaps += shared_cpp_typemaps
  blink_cpp_typemaps = shared_cpp_typemaps

  export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
  export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
  export_header_blink = "third_party/blink/public/platform/web_common.h"
  webui_module_path = "chrome://resources/mojo/ui/base/mojom"

  # Generate legacy bindings for Blink.
  generate_legacy_js_bindings = true
}

# TODO(crbug.com/359910414): Move back DialogButton enum to ui_base_types.mojom.
mojom("ui_base_types") {
  sources = [ "dialog_button.mojom" ]
}