# 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")
import("../optimize_webui.gni")

if (!is_android) {
  js_type_check("closure_compile") {
    deps = [
      ":actions",
      ":app",
      ":browser_proxy",
      ":constants",
      ":fake_page_handler",
      ":item",
      ":main_view",
      ":metadata_view",
      ":permission_item",
      ":pwa_permission_view",
      ":reducers",
      ":router",
      ":store",
      ":store_client",
      ":types",
      ":util",
    ]
  }

  js_library("actions") {
    deps = [
      "//chrome/browser/ui/webui/app_management:mojo_bindings_js_externs",
      "//ui/webui/resources/js:cr",
    ]
  }

  js_library("api_listener") {
    deps = [
      ":actions",
      ":store",
      ":util",
      "//ui/webui/resources/js:cr",
    ]
  }

  js_library("app") {
    deps = [
      ":actions",
      ":browser_proxy",
      ":constants",
      ":main_view",
      ":metadata_view",
      ":pwa_permission_view",
      ":router",
      ":store",
      ":store_client",
      ":types",
      ":util",
      "//chrome/browser/ui/webui/app_management:mojo_bindings_js_externs",
    ]
  }

  js_library("browser_proxy") {
    deps = [
      ":fake_page_handler",
      "//chrome/browser/ui/webui/app_management:mojo_bindings_js_externs",
      "//ui/webui/resources/js:cr",
    ]
  }

  js_library("chrome_app_permission_view") {
    deps = [
      ":fake_page_handler",
      ":metadata_view",
      ":permission_view_header",
      ":store_client",
    ]
  }

  js_library("constants") {
  }

  js_library("fake_page_handler") {
    deps = [
      ":types",
      "//chrome/browser/ui/webui/app_management:mojo_bindings_js_externs",
      "//ui/webui/resources/js:cr",
    ]
  }

  js_library("item") {
    deps = [
      ":actions",
      ":store_client",
      "//ui/webui/resources/js:load_time_data",
    ]
  }

  js_library("main_view") {
    deps = [
      ":browser_proxy",
      ":constants",
      ":item",
      ":store_client",
      "//ui/webui/resources/js:load_time_data",
    ]
  }

  js_library("metadata_view") {
    deps = [
      ":fake_page_handler",
    ]
  }

  js_library("permission_view_header") {
    deps = [
      ":browser_proxy",
      ":store_client",
    ]
  }

  js_library("permission_item") {
    deps = [
      ":constants",
      ":types",
    ]
  }

  js_library("pwa_permission_view") {
    deps = [
      ":constants",
      ":fake_page_handler",
      ":metadata_view",
      ":permission_item",
      ":permission_view_header",
      ":store_client",
    ]
  }

  js_library("reducers") {
    deps = [
      ":types",
      "//ui/webui/resources/js:cr",
    ]
  }

  js_library("router") {
    deps = [
      ":actions",
      ":constants",
      ":store_client",
    ]
  }

  js_library("store") {
    deps = [
      ":reducers",
      ":util",
      "//ui/webui/resources/js:cr",
      "//ui/webui/resources/js/cr/ui:store",
    ]
  }

  js_library("store_client") {
    deps = [
      ":store",
      ":types",
      "//ui/webui/resources/js:cr",
      "//ui/webui/resources/js/cr/ui:store",
      "//ui/webui/resources/js/cr/ui:store_client",
    ]
  }

  js_library("types") {
    deps = [
      "//chrome/browser/ui/webui/app_management:mojo_bindings_js_externs",
    ]
  }

  js_library("util") {
    deps = [
      ":types",
      "//ui/webui/resources/js:cr",
    ]
  }
}
