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

import("//third_party/closure_compiler/compile_js.gni")

js_type_check("closure_compile") {
  deps = [
    ":omnibox",
  ]
}

js_library("omnibox") {
  deps = [
    "//ui/webui/resources/js:util",
    ":omnibox_element",
    ":omnibox_inputs",
    ":omnibox_output",
  ]
  extra_deps = [ "//chrome/browser/ui/webui/omnibox:mojo_bindings_js" ]
  externs_list = [
    "$root_gen_dir/chrome/browser/ui/webui/omnibox/omnibox.mojom-lite.externs.js",
    "$externs_path/mojo.js",
    "$externs_path/pending.js",
  ]
}

js_library("omnibox_element") {
}

js_library("omnibox_inputs") {
}

js_library("omnibox_output") {
}
