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

_typemap_imports = [
  "//ash/public/interfaces/typemaps.gni",
  "//chrome/chrome_cleaner/interfaces/typemaps/typemaps.gni",
  "//chrome/common/extensions/typemaps.gni",
  "//chrome/common/importer/typemaps.gni",
  "//chrome/common/media_router/mojo/typemaps.gni",
  "//chrome/typemaps.gni",
  "//chromecast/common/mojom/typemaps.gni",
  "//chromeos/typemaps.gni",
  "//chromeos/services/device_sync/public/mojom/typemaps.gni",
  "//chromeos/services/secure_channel/public/mojom/typemaps.gni",
  "//components/arc/common/typemaps.gni",
  "//components/sync/mojo/typemaps.gni",
  "//components/typemaps.gni",
  "//content/common/bluetooth/typemaps.gni",
  "//content/common/typemaps.gni",
  "//content/public/common/typemaps.gni",
  "//device/bluetooth/public/mojom/typemaps.gni",
  "//device/bluetooth/public/mojom/test/typemaps.gni",
  "//device/gamepad/public/cpp/typemaps.gni",
  "//gpu/ipc/common/typemaps.gni",
  "//ipc/typemaps.gni",
  "//media/capture/mojom/typemaps.gni",
  "//media/mojo/interfaces/typemaps.gni",
  "//mojo/public/cpp/base/typemaps.gni",
  "//mojo/public/cpp/bindings/tests/chromium_typemaps.gni",
  "//net/interfaces/typemaps.gni",
  "//sandbox/mac/mojom/typemaps.gni",
  "//services/audio/public/cpp/typemaps.gni",
  "//services/device/public/mojom/typemaps.gni",
  "//services/identity/public/cpp/typemaps.gni",
  "//services/network/public/cpp/typemaps.gni",
  "//services/preferences/public/cpp/typemaps.gni",
  "//services/proxy_resolver/public/cpp/typemaps.gni",
  "//services/resource_coordinator/public/cpp/typemaps.gni",
  "//services/service_manager/public/cpp/typemaps.gni",
  "//services/ws/public/mojom/cursor/typemaps.gni",
  "//services/ws/public/mojom/ime/typemaps.gni",
  "//services/viz/privileged/cpp/typemaps.gni",
  "//services/viz/privileged/interfaces/compositing/typemaps.gni",
  "//services/viz/public/cpp/compositing/typemaps.gni",
  "//services/viz/public/cpp/hit_test/typemaps.gni",
  "//skia/public/interfaces/typemaps.gni",
  "//third_party/blink/common/typemaps.gni",
  "//third_party/blink/public/public_typemaps.gni",
  "//ui/accessibility/mojom/typemaps.gni",
  "//ui/base/mojo/typemaps.gni",
  "//ui/display/mojo/typemaps.gni",
  "//ui/events/devices/mojo/typemaps.gni",
  "//ui/events/mojo/typemaps.gni",
  "//ui/gfx/typemaps.gni",
  "//ui/latency/mojo/typemaps.gni",
  "//ui/ozone/public/interfaces/typemaps.gni",
  "//ui/message_center/public/mojo/typemaps.gni",
  "//url/mojom/typemaps.gni",
]

_typemaps = []
foreach(typemap_import, _typemap_imports) {
  # Avoid reassignment error by assigning to empty scope first.
  _imported = {
  }
  _imported = read_file(typemap_import, "scope")
  _typemaps += _imported.typemaps
}

typemaps = []
foreach(typemap, _typemaps) {
  typemaps += [
    {
      filename = typemap
      config = read_file(typemap, "scope")
    },
  ]
}

component_macro_suffix = ""
