# 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.

variant = "blink"

for_blink = true

_typemap_imports = [
  "//mojo/public/cpp/bindings/tests/blink_typemaps.gni",
  "//third_party/WebKit/Source/platform/mojo/blink_typemaps.gni",
  "//third_party/WebKit/public/blink_typemaps.gni",
  "//third_party/WebKit/public/public_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")
      } ]
}

blacklist = []
