# Copyright 2017 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.

source_set("translate") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "language_selection_coordinator.h",
    "language_selection_coordinator.mm",
    "language_selection_mediator.h",
    "language_selection_mediator.mm",
    "translate_infobar_coordinator.h",
    "translate_infobar_coordinator.mm",
    "translate_infobar_mediator.h",
    "translate_infobar_mediator.mm",
  ]
  deps = [
    ":translate_ui",
    "//base",
    "//components/strings:components_strings_grit",
    "//components/translate/core/browser",
    "//ios/chrome/browser",
    "//ios/chrome/browser/translate",
    "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
    "//ios/chrome/browser/ui/list_model",
    "//ios/chrome/browser/ui/popup_menu/public:popup_menu_ui",
    "//ios/chrome/browser/ui/popup_menu/public:ui_constants",
    "//ios/chrome/browser/ui/presenters",
    "//ios/chrome/browser/ui/translate/cells",
    "//ios/chrome/browser/ui/util",
    "//ios/chrome/browser/web_state_list",
    "//ios/web/public",
    "//ui/base",
  ]
}

source_set("translate_ui") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "language_selection_consumer.h",
    "language_selection_provider.h",
    "language_selection_view_controller.h",
    "language_selection_view_controller.mm",
    "translate_infobar_language_tab_strip_view.h",
    "translate_infobar_language_tab_strip_view.mm",
    "translate_infobar_language_tab_strip_view_delegate.h",
    "translate_infobar_language_tab_view.h",
    "translate_infobar_language_tab_view.mm",
    "translate_infobar_language_tab_view_delegate.h",
    "translate_infobar_view.h",
    "translate_infobar_view.mm",
    "translate_infobar_view_delegate.h",
    "translate_notification_delegate.h",
    "translate_notification_handler.h",
    "translate_notification_presenter.h",
    "translate_notification_presenter.mm",
  ]
  deps = [
    "//base",
    "//components/strings:components_strings",
    "//ios/chrome/browser",
    "//ios/chrome/browser/ui/colors",
    "//ios/chrome/browser/ui/infobars:infobars_ui",
    "//ios/chrome/browser/ui/toolbar/buttons",
    "//ios/chrome/browser/ui/translate/resources:translate_dismiss",
    "//ios/chrome/browser/ui/translate/resources:translate_icon",
    "//ios/chrome/browser/ui/translate/resources:translate_options",
    "//ios/chrome/browser/ui/util",
    "//ios/chrome/common:common_extension",
    "//ios/chrome/common/ui_util",
    "//ios/third_party/material_components_ios",
    "//ui/base",
  ]
}

source_set("unit_tests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [
    "translate_infobar_mediator_unittest.mm",
  ]
  deps = [
    ":translate",
    "//components/translate/core/browser:test_support",
    "//ios/chrome/browser/browser_state:test_support",
    "//ios/chrome/browser/translate",
    "//ios/chrome/browser/ui/popup_menu/public:popup_menu_ui",
    "//ios/chrome/browser/ui/translate:translate_ui",
    "//ios/chrome/browser/ui/translate/cells",
    "//ios/chrome/browser/web_state_list",
    "//ios/chrome/browser/web_state_list:test_support",
    "//ios/web/public/test",
    "//ios/web/public/test/fakes",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/ocmock:ocmock",
  ]
}
