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

component("app_list") {
  sources = [
    "app_list_constants.cc",
    "app_list_constants.h",
    "app_list_export.h",
    "app_list_features.cc",
    "app_list_features.h",
    "app_list_folder_item.cc",
    "app_list_folder_item.h",
    "app_list_item.cc",
    "app_list_item.h",
    "app_list_item_list.cc",
    "app_list_item_list.h",
    "app_list_item_list_observer.h",
    "app_list_item_observer.h",
    "app_list_model.cc",
    "app_list_model.h",
    "app_list_model_observer.h",
    "app_list_switches.cc",
    "app_list_switches.h",
    "app_list_view_delegate.h",
    "folder_image.cc",
    "folder_image.h",
    "pagination_controller.cc",
    "pagination_controller.h",
    "pagination_model.cc",
    "pagination_model.h",
    "pagination_model_observer.h",
    "search/dictionary_data_store.cc",
    "search/dictionary_data_store.h",
    "search/history.cc",
    "search/history.h",
    "search/history_data.cc",
    "search/history_data.h",
    "search/history_data_observer.h",
    "search/history_data_store.cc",
    "search/history_data_store.h",
    "search/history_types.h",
    "search/mixer.cc",
    "search/mixer.h",
    "search/term_break_iterator.cc",
    "search/term_break_iterator.h",
    "search/tokenized_string.cc",
    "search/tokenized_string.h",
    "search/tokenized_string_char_iterator.cc",
    "search/tokenized_string_char_iterator.h",
    "search/tokenized_string_match.cc",
    "search/tokenized_string_match.h",
    "search_box_model.cc",
    "search_box_model.h",
    "search_box_model_observer.h",
    "search_controller.cc",
    "search_controller.h",
    "search_provider.cc",
    "search_provider.h",
    "search_result.cc",
    "search_result.h",
    "search_result_observer.h",
    "speech_ui_model.cc",
    "speech_ui_model.h",
    "speech_ui_model_observer.h",
  ]

  defines = [ "APP_LIST_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base:i18n",
    "//base/third_party/dynamic_annotations",
    "//cc/paint",
    "//components/keyed_service/core",
    "//components/sync",
    "//components/wallpaper",
    "//skia",
    "//third_party/icu",
    "//ui/accessibility",
    "//ui/app_list/resources",
    "//ui/app_list/vector_icons",
    "//ui/base",
    "//ui/base/ime",
    "//ui/compositor",
    "//ui/display",
    "//ui/events",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/keyboard/",
    "//ui/resources",
    "//ui/strings",
  ]

  if (use_aura) {
    deps += [
      "//ui/aura",
      "//ui/wm",
    ]
  }

  if (toolkit_views) {
    sources += [
      "views/all_apps_tile_item_view.cc",
      "views/all_apps_tile_item_view.h",
      "views/app_list_drag_and_drop_host.h",
      "views/app_list_folder_view.cc",
      "views/app_list_folder_view.h",
      "views/app_list_item_view.cc",
      "views/app_list_item_view.h",
      "views/app_list_main_view.cc",
      "views/app_list_main_view.h",
      "views/app_list_page.cc",
      "views/app_list_page.h",
      "views/app_list_view.cc",
      "views/app_list_view.h",
      "views/apps_container_view.cc",
      "views/apps_container_view.h",
      "views/apps_grid_view.cc",
      "views/apps_grid_view.h",
      "views/apps_grid_view_folder_delegate.h",
      "views/contents_view.cc",
      "views/contents_view.h",
      "views/expand_arrow_view.cc",
      "views/expand_arrow_view.h",
      "views/folder_background_view.cc",
      "views/folder_background_view.h",
      "views/folder_header_view.cc",
      "views/folder_header_view.h",
      "views/folder_header_view_delegate.h",
      "views/image_shadow_animator.cc",
      "views/image_shadow_animator.h",
      "views/indicator_chip_view.cc",
      "views/indicator_chip_view.h",
      "views/page_switcher.h",
      "views/page_switcher_horizontal.cc",
      "views/page_switcher_horizontal.h",
      "views/page_switcher_vertical.cc",
      "views/page_switcher_vertical.h",
      "views/pulsing_block_view.cc",
      "views/pulsing_block_view.h",
      "views/search_box_view.cc",
      "views/search_box_view.h",
      "views/search_box_view_delegate.h",
      "views/search_result_actions_view.cc",
      "views/search_result_actions_view.h",
      "views/search_result_actions_view_delegate.h",
      "views/search_result_answer_card_view.cc",
      "views/search_result_answer_card_view.h",
      "views/search_result_container_view.cc",
      "views/search_result_container_view.h",
      "views/search_result_list_view.cc",
      "views/search_result_list_view.h",
      "views/search_result_page_view.cc",
      "views/search_result_page_view.h",
      "views/search_result_tile_item_list_view.cc",
      "views/search_result_tile_item_list_view.h",
      "views/search_result_tile_item_view.cc",
      "views/search_result_tile_item_view.h",
      "views/search_result_view.cc",
      "views/search_result_view.h",
      "views/speech_view.cc",
      "views/speech_view.h",
      "views/start_page_view.cc",
      "views/start_page_view.h",
      "views/suggestions_container_view.cc",
      "views/suggestions_container_view.h",
      "views/tile_item_view.cc",
      "views/tile_item_view.h",
      "views/top_icon_animation_view.cc",
      "views/top_icon_animation_view.h",
    ]
    deps += [
      "//mojo/public/cpp/bindings",
      "//services/ui/public/cpp",
      "//services/ui/public/interfaces",
      "//ui/events",
      "//ui/views",
    ]

    public_deps = [
      "//ui/views",
    ]
  }
}

static_library("test_support") {
  sources = [
    "test/app_list_test_model.cc",
    "test/app_list_test_model.h",
    "test/app_list_test_view_delegate.cc",
    "test/app_list_test_view_delegate.h",
    "test/test_search_result.cc",
    "test/test_search_result.h",
    "views/test/app_list_view_test_api.cc",
    "views/test/app_list_view_test_api.h",
  ]

  deps = [
    ":app_list",
    "//base",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}

if (toolkit_views) {
  executable("app_list_demo") {
    testonly = true

    sources = [
      "demo/app_list_demo_views.cc",
    ]

    deps = [
      ":app_list",
      ":test_support",
      "//base",
      "//build/config:exe_and_shlib_deps",
      "//build/win:default_exe_manifest",
      "//content",
      "//content/public/browser",
      "//skia",
      "//ui/base",
      "//ui/events",
      "//ui/resources",
      "//ui/resources:ui_test_pak",
      "//ui/views",
      "//ui/views/controls/webview",
      "//ui/views_content_client",
      "//url",
    ]
  }
}

test("app_list_unittests") {
  sources = [
    "app_list_item_list_unittest.cc",
    "app_list_model_unittest.cc",
    "folder_image_unittest.cc",
    "pagination_model_unittest.cc",
    "search/history_data_store_unittest.cc",
    "search/mixer_unittest.cc",
    "search/term_break_iterator_unittest.cc",
    "search/tokenized_string_char_iterator_unittest.cc",
    "search/tokenized_string_match_unittest.cc",
    "search/tokenized_string_unittest.cc",
    "test/run_all_unittests.cc",
  ]

  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  deps = [
    ":app_list",
    ":test_support",
    "//base",
    "//base/test:test_support",
    "//mojo/edk/system",
    "//skia",
    "//testing/gtest",
    "//ui/base",
    "//ui/compositor",
    "//ui/events:test_support",
    "//ui/gfx:test_support",
    "//ui/gl:test_support",
    "//ui/resources",
  ]

  data_deps = [
    "//third_party/mesa:osmesa",
    "//ui/resources:ui_test_pak_data",
  ]

  if (toolkit_views) {
    sources += [
      "views/app_list_main_view_unittest.cc",
      "views/app_list_view_unittest.cc",
      "views/apps_grid_view_unittest.cc",
      "views/folder_header_view_unittest.cc",
      "views/image_shadow_animator_unittest.cc",
      "views/search_box_view_unittest.cc",
      "views/search_result_answer_card_view_unittest.cc",
      "views/search_result_list_view_unittest.cc",
      "views/search_result_page_view_unittest.cc",
      "views/search_result_tile_item_list_view_unittest.cc",
      "views/speech_view_unittest.cc",
      "views/test/apps_grid_view_test_api.cc",
      "views/test/apps_grid_view_test_api.h",
    ]
    deps += [
      "//ui/accessibility",
      "//ui/app_list/vector_icons",
      "//ui/views",
      "//ui/views:test_support",
    ]
  }
}