# 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("coordinators") {
  sources = [
    "browser_coordinator+internal.h",
    "browser_coordinator.h",
    "browser_coordinator.mm",
  ]

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

  deps = [
    "//base",
    "//ios/chrome/browser",
    "//ios/chrome/browser/browser_state",
    "//ios/chrome/browser/ui/browser_list",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "browser_coordinator_test.h",
    "browser_coordinator_test.mm",
  ]

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

  deps = [
    ":coordinators",
    "//base",
    "//base/test:test_support",
    "//ios/chrome/browser/browser_state:test_support",
    "//ios/chrome/browser/ui/browser_list",
    "//testing/gtest",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "browser_coordinator_unittest.mm",
  ]

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

  deps = [
    ":coordinators",
    ":test_support",
  ]
}
