# 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("//testing/test.gni")

component("ui_chromeos") {
  sources = [
    "accelerometer/accelerometer_util.cc",
    "accelerometer/accelerometer_util.h",
    "ime/candidate_view.cc",
    "ime/candidate_view.h",
    "ime/candidate_window_view.cc",
    "ime/candidate_window_view.h",
    "ime/infolist_window.cc",
    "ime/infolist_window.h",
    "ime/input_method_menu_item.cc",
    "ime/input_method_menu_item.h",
    "ime/input_method_menu_manager.cc",
    "ime/input_method_menu_manager.h",
    "ime/mode_indicator_view.cc",
    "ime/mode_indicator_view.h",
    "material_design_icon_controller.cc",
    "material_design_icon_controller.h",
    "network/network_connect.cc",
    "network/network_connect.h",
    "network/network_icon.cc",
    "network/network_icon.h",
    "network/network_icon_animation.cc",
    "network/network_icon_animation.h",
    "network/network_icon_animation_observer.h",
    "network/network_info.cc",
    "network/network_info.h",
    "network/network_list.cc",
    "network/network_list.h",
    "network/network_list_delegate.h",
    "network/network_list_view_base.cc",
    "network/network_list_view_base.h",
    "network/network_state_notifier.cc",
    "network/network_state_notifier.h",
    "touch_exploration_controller.cc",
    "touch_exploration_controller.h",
    "user_activity_power_manager_notifier.cc",
    "user_activity_power_manager_notifier.h",
  ]
  defines = [ "UI_CHROMEOS_IMPLEMENTATION" ]
  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//chromeos:chromeos",
    "//chromeos:power_manager_proto",
    "//components/device_event_log",
    "//components/onc",
    "//skia",
    "//ui/aura",
    "//ui/base",
    "//ui/base/ime",
    "//ui/chromeos/resources",
    "//ui/chromeos/strings",
    "//ui/display",
    "//ui/events",
    "//ui/events:gesture_detection",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/message_center",
    "//ui/native_theme",
    "//ui/views",
    "//ui/wm",
  ]
}

test("ui_chromeos_unittests") {
  sources = [
    "ime/candidate_view_unittest.cc",
    "ime/candidate_window_view_unittest.cc",
    "ime/input_method_menu_item_unittest.cc",
    "ime/input_method_menu_manager_unittest.cc",
    "network/network_state_notifier_unittest.cc",
    "run_all_unittests.cc",
    "touch_exploration_controller_unittest.cc",
  ]
  deps = [
    ":ui_chromeos",
    "//base/test:test_support",
    "//chromeos",
    "//skia",
    "//testing/gtest",
    "//ui/aura:test_support",
    "//ui/compositor",
    "//ui/events:test_support",
    "//ui/gl:test_support",
    "//ui/message_center",
    "//ui/resources:ui_test_pak",
    "//ui/views",
    "//ui/views:test_support",
  ]
  data = [
    "$root_out_dir/locales/en-US.pak",
    "$root_out_dir/ui_test.pak",
  ]
}
