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

component("app_list") {
  sources = [
    "app_list_constants.cc",
    "app_list_constants.h",
    "app_list_export.h",
    "app_list_folder_item.cc",
    "app_list_folder_item.h",
    "app_list_item.cc",
    "app_list_item.h",
    "app_list_item_observer.h",
    "app_list_item_list.cc",
    "app_list_item_list.h",
    "app_list_item_list_observer.h",
    "app_list_menu.cc",
    "app_list_menu.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.cc",
    "app_list_view_delegate.h",
    "pagination_controller.cc",
    "pagination_controller.h",
    "pagination_model.cc",
    "pagination_model.h",
    "pagination_model_observer.h",
    "search_box_model.cc",
    "search_box_model.h",
    "search_box_model_observer.h",
    "search_provider.cc",
    "search_provider.h",
    "search_result.cc",
    "search_result.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",
    "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",
    "//skia",
    "//sync",
    "//third_party/icu",
    "//ui/accessibility",
    "//ui/base",
    "//ui/compositor",
    "//ui/events:events_base",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/resources",
    "//ui/strings",
  ]

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

  if (toolkit_views) {
    sources += [
      "views/apps_container_view.cc",
      "views/apps_container_view.h",
      "views/app_list_background.cc",
      "views/app_list_background.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_menu_views.cc",
      "views/app_list_menu_views.h",
      "views/app_list_view.cc",
      "views/app_list_view.h",
      "views/app_list_view_observer.h",
      "views/apps_grid_view.cc",
      "views/apps_grid_view.h",
      "views/apps_grid_view_delegate.h",
      "views/apps_grid_view_folder_delegate.h",
      "views/cached_label.cc",
      "views/cached_label.h",
      "views/contents_switcher_view.cc",
      "views/contents_switcher_view.h",
      "views/contents_view.cc",
      "views/contents_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/page_switcher.cc",
      "views/page_switcher.h",
      "views/progress_bar_view.cc",
      "views/progress_bar_view.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_list_view.cc",
      "views/search_result_list_view.h",
      "views/search_result_list_view_delegate.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/tile_item_view.cc",
      "views/tile_item_view.h",
      "views/top_icon_animation_view.cc",
      "views/top_icon_animation_view.h",
    ]
    deps += [
      "//ui/events",
      "//ui/views",
    ]
  }

  if (is_mac) {
    sources += [
      "cocoa/app_list_pager_view.h",
      "cocoa/app_list_pager_view.mm",
      "cocoa/app_list_view_controller.h",
      "cocoa/app_list_view_controller.mm",
      "cocoa/app_list_window_controller.h",
      "cocoa/app_list_window_controller.mm",
      "cocoa/apps_collection_view_drag_manager.h",
      "cocoa/apps_collection_view_drag_manager.mm",
      "cocoa/apps_grid_controller.h",
      "cocoa/apps_grid_controller.mm",
      "cocoa/apps_grid_view_item.h",
      "cocoa/apps_grid_view_item.mm",
      "cocoa/apps_pagination_model_observer.h",
      "cocoa/apps_search_box_controller.h",
      "cocoa/apps_search_box_controller.mm",
      "cocoa/apps_search_results_controller.h",
      "cocoa/apps_search_results_controller.mm",
      "cocoa/apps_search_results_model_bridge.h",
      "cocoa/apps_search_results_model_bridge.mm",
      "cocoa/item_drag_controller.h",
      "cocoa/item_drag_controller.mm",
      "cocoa/scroll_view_with_no_scrollbars.h",
      "cocoa/scroll_view_with_no_scrollbars.mm",
    ]
    deps += [
      #"../../third_party/google_toolbox_for_mac/google_toolbox_for_mac.gyp:google_toolbox_for_mac",  TODO(GYP)
    ]
    libs = [ "QuartzCore.framework" ]
  }
}

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",
  ]

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

test("app_list_unittests") {
  sources = [
    "app_list_item_list_unittest.cc",
    "app_list_model_unittest.cc",
    "pagination_model_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",
  ]

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

  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/search_box_view_unittest.cc",
      "views/search_result_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/views",
      "//ui/views:test_support",
    ]
  }

  if (is_mac) {
    sources += [
      "cocoa/app_list_view_controller_unittest.mm",
      "cocoa/app_list_window_controller_unittest.mm",
      "cocoa/apps_grid_controller_unittest.mm",
      "cocoa/apps_search_box_controller_unittest.mm",
      "cocoa/apps_search_results_controller_unittest.mm",
      "cocoa/test/apps_grid_controller_test_helper.h",
      "cocoa/test/apps_grid_controller_test_helper.mm",
    ]
  }
}