# 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/constants",
    "//chromeos/dbus/power",
    "//chromeos/dbus/power:power_manager_proto",
    "//components/device_event_log",
    "//components/onc",
    "//mojo/public/cpp/bindings",
    "//services/device/public/mojom",
    "//services/service_manager/public/cpp",
    "//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:chromeos_buildflags",
    "//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",
  ]
}
