# 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("//build/config/ui.gni")
if (is_android) {
  import("//build/config/android/config.gni")
}

component("shell_dialogs") {
  sources = [
    "android/shell_dialogs_jni_registrar.cc",
    "android/shell_dialogs_jni_registrar.h",
    "base_shell_dialog.cc",
    "base_shell_dialog.h",
    "base_shell_dialog_win.cc",
    "base_shell_dialog_win.h",
    "linux_shell_dialog.cc",
    "linux_shell_dialog.h",
    "select_file_dialog.cc",
    "select_file_dialog.h",
    "select_file_dialog_android.cc",
    "select_file_dialog_android.h",
    "select_file_dialog_factory.cc",
    "select_file_dialog_factory.h",
    "select_file_dialog_mac.h",
    "select_file_dialog_mac.mm",
    "select_file_dialog_win.cc",
    "select_file_dialog_win.h",
    "select_file_policy.cc",
    "select_file_policy.h",
    "selected_file_info.cc",
    "selected_file_info.h",
  ]

  defines = [ "SHELL_DIALOGS_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base:i18n",
    "//skia",
    "//ui/base",
    "//ui/strings",
  ]

  if (use_aura) {
    if (is_mac) {
      # Will be automatically filtered out on non-Mac.
      sources -= [ "select_file_dialog_mac.mm" ]
    }
    deps += [ "//ui/aura" ]
  }

  if (is_android) {
    deps += [ "//ui/base:ui_base_jni_headers" ]
    include_dirs = [ "$root_gen_dir/ui" ]
    libs = [ "jnigraphics" ]

    if (!is_android_webview_build) {
      #deps += [ '../android/ui_android.gyp:ui_java' ]  TODO(GYP)
    }
  }

  if (is_win) {
    #deps += [ '../../win8/win8.gyp:metro_viewer' ]  TODO(GYP)
  }
}

test("shell_dialogs_unittests") {
  sources = [
    "select_file_dialog_win_unittest.cc",
  ]

  deps = [
    ":shell_dialogs",
    "//base",
    "//base/test:test_support",
    "//base/test:run_all_unittests",
    "//testing/gtest",
  ]
}
