# 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("cells") {
  sources = [
    "cvc_item.h",
    "cvc_item.mm",
    "legacy_autofill_edit_item.h",
    "legacy_autofill_edit_item.mm",
    "status_item.h",
    "status_item.mm",
  ]

  deps = [
    "//components/resources",
    "//components/strings",
    "//ios/chrome/app/strings",
    "//ios/chrome/app/theme",
    "//ios/chrome/browser",
    "//ios/chrome/browser/ui",
    "//ios/chrome/browser/ui/autofill:autofill_ui",
    "//ios/chrome/browser/ui/collection_view/cells",
    "//ios/chrome/browser/ui/colors",
    "//ios/chrome/common/ui_util",
    "//ios/public/provider/chrome/browser",
    "//ios/public/provider/chrome/browser/ui",
    "//ios/third_party/material_components_ios",
    "//ios/third_party/material_roboto_font_loader_ios",
    "//ui/base",
  ]

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

source_set("unit_tests") {
  testonly = true
  sources = [
    "cvc_item_unittest.mm",
    "legacy_autofill_edit_item_unittest.mm",
    "status_item_unittest.mm",
  ]

  deps = [
    ":cells",
    "//base",
    "//components/resources",
    "//ios/chrome/browser/ui/collection_view/cells",
    "//ios/third_party/material_components_ios",
    "//testing/gtest",
  ]

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