# Copyright 2016 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("//mojo/public/tools/bindings/mojom.gni")

# C++ headers and sources that can be used outside ash.
component("cpp") {
  sources = [
    "accelerators.cc",
    "accelerators.h",
    "app_list/answer_card_contents_registry.cc",
    "app_list/answer_card_contents_registry.h",
    "app_list/app_list_config.cc",
    "app_list/app_list_config.h",
    "app_list/app_list_constants.cc",
    "app_list/app_list_constants.h",
    "app_list/app_list_features.cc",
    "app_list/app_list_features.h",
    "app_list/app_list_switches.cc",
    "app_list/app_list_switches.h",
    "app_list/app_list_types.cc",
    "app_list/app_list_types.h",
    "app_list/internal_app_id_constants.h",
    "app_list/term_break_iterator.cc",
    "app_list/term_break_iterator.h",
    "app_list/tokenized_string.cc",
    "app_list/tokenized_string.h",
    "app_list/tokenized_string_char_iterator.cc",
    "app_list/tokenized_string_char_iterator.h",
    "app_list/tokenized_string_match.cc",
    "app_list/tokenized_string_match.h",
    "app_menu_constants.h",
    "app_types.h",
    "ash_constants.h",
    "ash_features.cc",
    "ash_features.h",
    "ash_layout_constants.cc",
    "ash_layout_constants.h",
    "ash_pref_names.cc",
    "ash_pref_names.h",
    "ash_public_export.h",
    "ash_switches.cc",
    "ash_switches.h",
    "ash_typography.cc",
    "ash_typography.h",
    "ash_view_ids.h",
    "config.h",
    "default_scale_factor_retriever.cc",
    "default_scale_factor_retriever.h",
    "immersive/immersive_context.cc",
    "immersive/immersive_context.h",
    "immersive/immersive_focus_watcher.h",
    "immersive/immersive_fullscreen_controller.cc",
    "immersive/immersive_fullscreen_controller.h",
    "immersive/immersive_fullscreen_controller_delegate.h",
    "immersive/immersive_gesture_handler.h",
    "immersive/immersive_handler_factory.cc",
    "immersive/immersive_handler_factory.h",
    "immersive/immersive_revealed_lock.cc",
    "immersive/immersive_revealed_lock.h",
    "login_constants.h",
    "menu_utils.cc",
    "menu_utils.h",
    "mus_property_mirror_ash.cc",
    "mus_property_mirror_ash.h",
    "network_icon_image_source.cc",
    "network_icon_image_source.h",
    "power_utils.cc",
    "power_utils.h",
    "remote_shelf_item_delegate.cc",
    "remote_shelf_item_delegate.h",
    "scale_utility.cc",
    "scale_utility.h",
    "session_types.h",
    "shelf_item.cc",
    "shelf_item.h",
    "shelf_item_delegate.cc",
    "shelf_item_delegate.h",
    "shelf_model.cc",
    "shelf_model.h",
    "shelf_model_observer.h",
    "shelf_prefs.cc",
    "shelf_prefs.h",
    "shelf_types.cc",
    "shelf_types.h",
    "shell_window_ids.cc",
    "shell_window_ids.h",
    "stylus_utils.cc",
    "stylus_utils.h",
    "wallpaper_types.h",
    "window_pin_type.cc",
    "window_pin_type.h",
    "window_properties.cc",
    "window_properties.h",
    "window_state_type.cc",
    "window_state_type.h",
    "window_style.cc",
    "window_style.h",
  ]

  defines = [ "ASH_PUBLIC_IMPLEMENTATION" ]

  deps = [
    "//chromeos:power_manager_proto",
    "//components/prefs",
    "//services/ui/public/interfaces",
    "//skia/public/interfaces",
    "//ui/aura",
    "//ui/chromeos/strings",
    "//ui/display",
    "//ui/events/devices",
    "//ui/views",
    "//ui/views/mus",
    "//ui/wm",
  ]

  public_deps = [
    "//ash/public/interfaces:interfaces_internal",
    "//base",
    "//ui/gfx",
  ]

  allow_circular_includes_from =
      [ "//ash/public/interfaces:interfaces_internal" ]

  output_name = "ash_public_cpp"
}

# Using a test service because the traits need to pass handles around. Revisit
# this after Deserialize(Serialize()) API works with handles.
mojom("test_interfaces") {
  visibility = [ ":unit_tests" ]

  sources = [
    "shelf_struct_traits_test_service.mojom",
  ]

  public_deps = [
    "//ash/public/interfaces:interfaces_internal",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "default_scale_factor_retriever_unittest.cc",
    "menu_utils_unittest.cc",
    "power_utils_unittest.cc",
    "shelf_model_unittest.cc",
    "shelf_struct_mojom_traits_unittest.cc",
  ]

  deps = [
    ":cpp",
    ":test_interfaces",
    "//base",
    "//testing/gtest",
    "//ui/gfx:test_support",
  ]
}
