# Copyright 2014 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("//tools/grit/grit_rule.gni")

grit("resources") {
  source = "file_manager_resources.grd"
  outputs = [
    "grit/file_manager_resources.h",
    "grit/file_manager_resources_map.cc",
    "grit/file_manager_resources_map.h",
    "file_manager_resources.pak",
    "file_manager_resources.rc",
  ]
}

component("file_manager") {
  sources = [
    "file_manager_export.h",
    "file_manager_resource_util.cc",
    "file_manager_resource_util.h",
  ]
  public_deps = [
    ":resources",
    "//base",
  ]
  defines = [ "FILE_MANAGER_IMPLEMENTATION" ]
}

group("closure_compile") {
  deps = [
    "audio_player/elements:closure_compile",
    "audio_player/js:closure_compile",
    "file_manager/background/js:closure_compile",
    "file_manager/common/js:closure_compile",
    "file_manager/foreground/elements:closure_compile",
    "file_manager/foreground/js:closure_compile",
    "file_manager/foreground/js/metadata:closure_compile",
    "file_manager/foreground/js/ui:closure_compile",
    "file_manager/test:closure_compile",
    "gallery/js:closure_compile",
    "gallery/js/image_editor:closure_compile",
    "image_loader:closure_compile",
    "video_player/js:closure_compile",
    "video_player/js/cast:closure_compile",
  ]
}
