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

source_set("alert_coordinator") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "action_sheet_coordinator.h",
    "action_sheet_coordinator.mm",
    "alert_coordinator.h",
    "alert_coordinator.mm",
    "input_alert_coordinator.h",
    "input_alert_coordinator.mm",
    "repost_form_coordinator.h",
    "repost_form_coordinator.mm",
  ]
  deps = [
    "//base",
    "//components/strings",
    "//ios/chrome/browser",
    "//ios/web",
    "//ui/base",
    "//ui/strings",
  ]
}

source_set("unit_tests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [
    "action_sheet_coordinator_unittest.mm",
    "alert_coordinator_unittest.mm",
    "input_alert_coordinator_unittest.mm",
    "repost_form_coordinator_unittest.mm",
  ]
  deps = [
    ":alert_coordinator",
    "//base",
    "//base/test:test_support",
    "//components/strings",
    "//ios/chrome/browser/ui",
    "//ios/chrome/test:test_support",
    "//ios/web:test_support",
    "//testing/gtest",
    "//third_party/ocmock",
    "//ui/base",
    "//ui/strings",
  ]
}

source_set("alert_coordinator_internal") {
  sources = [
    "loading_alert_coordinator.h",
    "loading_alert_coordinator.mm",
  ]
  deps = [
    "//base",
    "//components/strings",
    "//ios/chrome/browser",
    "//ios/chrome/browser/ui",
    "//ios/chrome/browser/ui/material_components",
    "//ios/third_party/material_components_ios",
    "//ios/third_party/material_roboto_font_loader_ios",
    "//ui/base",
  ]
  libs = [ "UIKit.framework" ]
}

source_set("eg_tests") {
  configs += [ "//build/config/compiler:enable_arc" ]
  testonly = true
  sources = [
    "alert_coordinator_egtest.mm",
  ]
  deps = [
    ":alert_coordinator",
    "//base",
    "//components/strings",
    "//ios/chrome/test/earl_grey:test_support",
    "//ios/testing/earl_grey:earl_grey_support",
    "//ios/third_party/earl_grey",
  ]
  libs = [
    "UIKit.framework",
    "XCTest.framework",
  ]
}
