# Copyright 2018 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("//chromeos/assistant/assistant.gni")

assert(is_chromeos)

component("constants") {
  output_name = "assistant_ui_constants"

  defines = [ "IS_ASSISTANT_UI_CONSTANTS_IMPL" ]

  sources = [
    "assistant_ui_constants.cc",
    "assistant_ui_constants.h",
  ]

  deps = [
    "//base",
    "//skia",
    "//ui/aura",
    "//ui/base",
    "//ui/gfx",
  ]
}

component("ui") {
  output_name = "assistant_ui"

  defines = [ "IS_ASSISTANT_UI_IMPL" ]

  sources = [
    "assistant_container_view.cc",
    "assistant_container_view.h",
    "assistant_container_view_animator.cc",
    "assistant_container_view_animator.h",
    "assistant_container_view_animator_legacy_impl.cc",
    "assistant_container_view_animator_legacy_impl.h",
    "assistant_container_view_focus_traversable.cc",
    "assistant_container_view_focus_traversable.h",
    "assistant_main_view.cc",
    "assistant_main_view.h",
    "assistant_mini_view.cc",
    "assistant_mini_view.h",
    "assistant_notification_overlay.cc",
    "assistant_notification_overlay.h",
    "assistant_notification_view.cc",
    "assistant_notification_view.h",
    "assistant_overlay.h",
    "assistant_view_delegate.h",
    "assistant_web_view.cc",
    "assistant_web_view.h",
    "base/assistant_button.cc",
    "base/assistant_button.h",
    "base/assistant_scroll_view.cc",
    "base/assistant_scroll_view.h",
    "caption_bar.cc",
    "caption_bar.h",
    "dialog_plate/dialog_plate.cc",
    "dialog_plate/dialog_plate.h",
    "dialog_plate/mic_view.cc",
    "dialog_plate/mic_view.h",
    "logo_view/logo_view.cc",
    "logo_view/logo_view.h",
    "main_stage/assistant_card_element_view.cc",
    "main_stage/assistant_card_element_view.h",
    "main_stage/assistant_footer_view.cc",
    "main_stage/assistant_footer_view.h",
    "main_stage/assistant_header_view.cc",
    "main_stage/assistant_header_view.h",
    "main_stage/assistant_main_stage.cc",
    "main_stage/assistant_main_stage.h",
    "main_stage/assistant_opt_in_view.cc",
    "main_stage/assistant_opt_in_view.h",
    "main_stage/assistant_progress_indicator.cc",
    "main_stage/assistant_progress_indicator.h",
    "main_stage/assistant_query_view.cc",
    "main_stage/assistant_query_view.h",
    "main_stage/assistant_text_element_view.cc",
    "main_stage/assistant_text_element_view.h",
    "main_stage/suggestion_chip_view.cc",
    "main_stage/suggestion_chip_view.h",
    "main_stage/suggestion_container_view.cc",
    "main_stage/suggestion_container_view.h",
    "main_stage/ui_element_container_view.cc",
    "main_stage/ui_element_container_view.h",
  ]

  deps = [
    "//ash/assistant/model",
    "//ash/assistant/ui:constants",
    "//ash/assistant/util",
    "//ash/public/cpp",
    "//ash/public/cpp/vector_icons",
    "//ash/resources/vector_icons",
    "//ash/strings",
    "//base",
    "//chromeos/assistant:buildflags",
    "//chromeos/services/assistant/public:feature_flags",
    "//chromeos/services/assistant/public/mojom",
    "//services/content/public/cpp",
    "//ui/aura",
    "//ui/compositor",
    "//ui/gfx",
    "//ui/views",
    "//ui/views/window/vector_icons",
    "//ui/wm",
  ]

  if (enable_cros_libassistant) {
    sources += [
      "logo_view/logo_view_impl.cc",
      "logo_view/logo_view_impl.h",
      "logo_view/shape/mic_part_shape.cc",
      "logo_view/shape/mic_part_shape.h",
      "logo_view/shape/shape.cc",
      "logo_view/shape/shape.h",
    ]

    deps += [ "//chromeos/assistant/internal/logo_view" ]
  }
}
