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

static_library("arc") {
  sources = [
    "audio/arc_audio_bridge.cc",
    "audio/arc_audio_bridge.h",
    "bluetooth/bluetooth_type_converters.cc",
    "bluetooth/bluetooth_type_converters.h",
    "clipboard/arc_clipboard_bridge.cc",
    "clipboard/arc_clipboard_bridge.h",
    "crash_collector/arc_crash_collector_bridge.cc",
    "crash_collector/arc_crash_collector_bridge.h",
    "ime/arc_ime_bridge.h",
    "ime/arc_ime_bridge_impl.cc",
    "ime/arc_ime_bridge_impl.h",
    "ime/arc_ime_service.cc",
    "ime/arc_ime_service.h",
    "intent_helper/activity_icon_loader.cc",
    "intent_helper/activity_icon_loader.h",
    "intent_helper/arc_intent_helper_bridge.cc",
    "intent_helper/arc_intent_helper_bridge.h",
    "intent_helper/arc_intent_helper_observer.h",
    "intent_helper/font_size_util.cc",
    "intent_helper/font_size_util.h",
    "intent_helper/intent_constants.cc",
    "intent_helper/intent_constants.h",
    "intent_helper/intent_filter.cc",
    "intent_helper/intent_filter.h",
    "intent_helper/link_handler_model.cc",
    "intent_helper/link_handler_model.h",
    "intent_helper/page_transition_util.cc",
    "intent_helper/page_transition_util.h",
    "lock_screen/arc_lock_screen_bridge.cc",
    "lock_screen/arc_lock_screen_bridge.h",
    "metrics/arc_metrics_service.cc",
    "metrics/arc_metrics_service.h",
    "midis/arc_midis_bridge.cc",
    "midis/arc_midis_bridge.h",
    "net/arc_net_host_impl.cc",
    "net/arc_net_host_impl.h",
    "obb_mounter/arc_obb_mounter_bridge.cc",
    "obb_mounter/arc_obb_mounter_bridge.h",
    "power/arc_power_bridge.cc",
    "power/arc_power_bridge.h",
    "rotation_lock/arc_rotation_lock_bridge.cc",
    "rotation_lock/arc_rotation_lock_bridge.h",
    "storage_manager/arc_storage_manager.cc",
    "storage_manager/arc_storage_manager.h",
    "timer/arc_timer.cc",
    "timer/arc_timer.h",
    "timer/arc_timer_bridge.cc",
    "timer/arc_timer_bridge.h",
    "timer/create_timer_request.cc",
    "timer/create_timer_request.h",
    "usb/usb_host_bridge.cc",
    "usb/usb_host_bridge.h",
    "usb/usb_host_ui_delegate.h",
    "volume_mounter/arc_volume_mounter_bridge.cc",
    "volume_mounter/arc_volume_mounter_bridge.h",
    "wake_lock/arc_wake_lock_bridge.cc",
    "wake_lock/arc_wake_lock_bridge.h",
  ]

  public_deps = [
    ":arc_base",
    ":prefs",
  ]

  deps = [
    "//ash:ash",
    "//ash/public/cpp",
    "//base",
    "//chromeos",
    "//chromeos:login_manager_proto",
    "//chromeos:power_manager_proto",
    "//components/account_id",
    "//components/exo",
    "//components/google/core/browser",
    "//components/onc",
    "//components/prefs",
    "//components/session_manager/core",
    "//components/timers",
    "//components/url_formatter",
    "//components/user_manager",
    "//content/public/common",
    "//device/base",
    "//device/bluetooth",
    "//device/usb",
    "//device/usb/mojo",
    "//device/usb/public/mojom",
    "//google_apis",
    "//mojo/edk",
    "//services/device/public/mojom",
    "//skia",
    "//third_party/re2:re2",
    "//ui/aura",
    "//ui/base:base",
    "//ui/base/ime",
    "//ui/display/manager",
    "//ui/events",
    "//ui/events:dom_keycode_converter",
    "//ui/keyboard:keyboard",
    "//url:url",
  ]
}

static_library("prefs") {
  sources = [
    "arc_export.h",
    "arc_prefs.cc",
    "arc_prefs.h",
  ]

  defines = [ "ARC_IMPLEMENTATION" ]

  deps = [
    ":arc_base_enums",
    "//components/prefs",
  ]
}

static_library("arc_base_enums") {
  sources = [
    "arc_instance_mode.cc",
    "arc_instance_mode.h",
    "arc_stop_reason.cc",
    "arc_stop_reason.h",
    "arc_supervision_transition.cc",
    "arc_supervision_transition.h",
  ]

  deps = [
    "//base",
  ]
}

static_library("arc_base") {
  # TODO(hidehiko): Revisit here and move back some files to "arc"
  # on completion to move ArcSession task to ArcSessionManager.
  sources = [
    "arc_bridge_host_impl.cc",
    "arc_bridge_host_impl.h",
    "arc_bridge_service.cc",
    "arc_bridge_service.h",
    "arc_browser_context_keyed_service_factory_base.h",
    "arc_data_remover.cc",
    "arc_data_remover.h",
    "arc_features.cc",
    "arc_features.h",
    "arc_service_manager.cc",
    "arc_service_manager.h",
    "arc_session.cc",
    "arc_session.h",
    "arc_session_impl.cc",
    "arc_session_impl.h",
    "arc_session_runner.cc",
    "arc_session_runner.h",
    "arc_util.cc",
    "arc_util.h",
  ]

  deps = [
    "//ash/public/cpp",
    "//base",
    "//chromeos",
    "//chromeos:login_manager_proto",
    "//components/account_id",
    "//components/keyed_service/content",
    "//components/prefs",
    "//components/user_manager",
    "//content/public/common",
    "//mojo/edk",
    "//ui/aura",
  ]

  public_deps = [
    ":arc_base_enums",
    ":connection_holder",
    ":prefs",
    "//components/arc/common",
  ]
}

source_set("connection_holder") {
  sources = [
    "connection_holder.h",
    "connection_notifier.cc",
    "connection_notifier.h",
    "connection_observer.h",
    "mojo_channel.h",
  ]

  deps = [
    "//base",
    "//mojo/public/cpp/bindings",
  ]
}

static_library("notification_test_support") {
  testonly = true
  sources = [
    "test/connection_holder_util.h",
    "test/fake_notifications_instance.cc",
    "test/fake_notifications_instance.h",
  ]

  public_deps = [
    ":connection_holder",
    "//components/arc/common:notifications",
  ]
}

static_library("arc_test_support") {
  testonly = true
  sources = [
    "test/fake_accessibility_helper_instance.cc",
    "test/fake_accessibility_helper_instance.h",
    "test/fake_app_instance.cc",
    "test/fake_app_instance.h",
    "test/fake_arc_bridge_host.cc",
    "test/fake_arc_bridge_host.h",
    "test/fake_arc_session.cc",
    "test/fake_arc_session.h",
    "test/fake_backup_settings_instance.cc",
    "test/fake_backup_settings_instance.h",
    "test/fake_bluetooth_instance.cc",
    "test/fake_bluetooth_instance.h",
    "test/fake_file_system_instance.cc",
    "test/fake_file_system_instance.h",
    "test/fake_intent_helper_instance.cc",
    "test/fake_intent_helper_instance.h",
    "test/fake_policy_instance.cc",
    "test/fake_policy_instance.h",
    "test/fake_power_instance.cc",
    "test/fake_power_instance.h",
    "test/fake_timer_instance.cc",
    "test/fake_timer_instance.h",
    "test/fake_voice_interaction_framework_instance.cc",
    "test/fake_voice_interaction_framework_instance.h",
    "test/fake_wake_lock_instance.cc",
    "test/fake_wake_lock_instance.h",
    "test/fake_wallpaper_instance.cc",
    "test/fake_wallpaper_instance.h",
    "test/test_browser_context.cc",
    "test/test_browser_context.h",
  ]

  public_deps = [
    ":arc",
    ":notification_test_support",
  ]

  deps = [
    "//base",
    "//components/keyed_service/content",
    "//components/prefs:test_support",
    "//components/user_prefs",
    "//content/test:test_support",
    "//mojo/edk",
    "//mojo/public/cpp/system",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "arc_data_remover_unittest.cc",
    "arc_session_impl_unittest.cc",
    "arc_session_runner_unittest.cc",
    "arc_util_unittest.cc",
    "bluetooth/bluetooth_struct_traits_unittest.cc",
    "bluetooth/bluetooth_type_converters_unittest.cc",
    "ime/arc_ime_service_unittest.cc",
    "intent_helper/activity_icon_loader_unittest.cc",
    "intent_helper/arc_intent_helper_bridge_unittest.cc",
    "intent_helper/font_size_util_unittest.cc",
    "intent_helper/intent_filter_unittest.cc",
    "intent_helper/link_handler_model_unittest.cc",
    "intent_helper/page_transition_util_unittest.cc",
    "metrics/arc_metrics_service_unittest.cc",
    "power/arc_power_bridge_unittest.cc",
    "timer/arc_timer_bridge_unittest.cc",
    "wake_lock/arc_wake_lock_bridge_unittest.cc",
  ]

  deps = [
    ":arc_test_support",
    "//ash/public/cpp",
    "//base",
    "//base/test:test_support",
    "//chromeos",
    "//chromeos:power_manager_proto",
    "//chromeos:test_support_without_gmock",
    "//components/account_id",
    "//components/keyed_service/content",
    "//components/prefs:test_support",
    "//components/user_manager",
    "//components/user_manager:test_support",
    "//content/public/common",
    "//content/test:test_support",
    "//device/bluetooth",
    "//mojo/public/cpp/system:system",
    "//services/device/public/cpp/test:test_support",
    "//services/device/public/mojom",
    "//services/service_manager/public/cpp/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/aura",
    "//ui/aura:test_support",
    "//ui/base:test_support",
    "//ui/base/ime",
    "//ui/events",
    "//ui/events:dom_keycode_converter",
    "//url:url",
  ]
}