# 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")

assert(is_chromeos)

component("chromeos") {
  output_name = "ui_chromeos"
  sources = [
    "devicetype_utils.cc",
    "devicetype_utils.h",
    "ime/candidate_view.cc",
    "ime/candidate_view.h",
    "ime/candidate_window_constants.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",
    "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",
    "//mojo/public/cpp/bindings",
    "//services/device/public/mojom",
    "//services/service_manager/public/cpp",
    "//services/ws/public/cpp",
    "//services/ws/public/mojom",
    "//skia",
    "//ui/aura",
    "//ui/base",
    "//ui/base/ime",
    "//ui/chromeos/resources",
    "//ui/chromeos/strings",
    "//ui/display",
    "//ui/events",
    "//ui/events:gesture_detection",
    "//ui/events/devices:devices",
    "//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",
    "run_all_unittests.cc",
  ]
  deps = [
    ":chromeos",
    "//base/test:test_support",
    "//chromeos",
    "//mojo/core/embedder",
    "//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",
  ]
}
