# 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 = [
    "account_signin_item.h",
    "account_signin_item.mm",
    "autofill_data_item.h",
    "autofill_data_item.mm",
    "byo_textfield_item.h",
    "byo_textfield_item.mm",
    "card_multiline_item.h",
    "card_multiline_item.mm",
    "clear_browsing_data_constants.h",
    "clear_browsing_data_constants.mm",
    "clear_browsing_data_item.h",
    "clear_browsing_data_item.mm",
    "copied_to_chrome_item.h",
    "copied_to_chrome_item.mm",
    "encryption_item.h",
    "encryption_item.mm",
    "import_data_multiline_detail_item.h",
    "import_data_multiline_detail_item.mm",
    "passphrase_error_item.h",
    "passphrase_error_item.mm",
    "password_details_item.h",
    "password_details_item.mm",
    "settings_collapsible_item.h",
    "settings_collapsible_item.mm",
    "settings_detail_item.h",
    "settings_detail_item.mm",
    "settings_image_detail_text_item.h",
    "settings_image_detail_text_item.mm",
    "settings_search_item.h",
    "settings_search_item.mm",
    "settings_text_item.h",
    "settings_text_item.mm",
    "sync_switch_item.h",
    "sync_switch_item.mm",
    "table_view_clear_browsing_data_item.h",
    "table_view_clear_browsing_data_item.mm",
    "text_and_error_item.h",
    "text_and_error_item.mm",
    "version_item.h",
    "version_item.mm",
  ]

  deps = [
    "//components/autofill/core/browser",
    "//components/strings",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/browsing_data",
    "//ios/chrome/browser/ui",
    "//ios/chrome/browser/ui/collection_view/cells",
    "//ios/chrome/browser/ui/colors",
    "//ios/chrome/browser/ui/icons",
    "//ios/chrome/browser/ui/table_view:styler",
    "//ios/chrome/browser/ui/table_view/cells",
    "//ios/third_party/material_roboto_font_loader_ios",
    "//ui/base",
  ]

  public_deps = [
    "//ios/chrome/browser/ui/settings/cells/legacy",
  ]

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

source_set("unit_tests") {
  testonly = true
  sources = [
    "account_signin_item_unittest.mm",
    "autofill_data_item_unittest.mm",
    "byo_textfield_item_unittest.mm",
    "card_multiline_item_unittest.mm",
    "clear_browsing_data_item_unittest.mm",
    "copied_to_chrome_item_unittest.mm",
    "encryption_item_unittest.mm",
    "import_data_multiline_detail_item_unittest.mm",
    "passphrase_error_item_unittest.mm",
    "password_details_item_unittest.mm",
    "sync_switch_item_unittest.mm",
    "text_and_error_item_unittest.mm",
    "version_item_unittest.mm",
  ]

  deps = [
    ":cells",
    "//components/browsing_data/core",
    "//components/pref_registry:pref_registry",
    "//components/strings",
    "//components/sync_preferences:sync_preferences",
    "//components/sync_preferences:test_support",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser",
    "//ios/chrome/browser/browser_state:test_support",
    "//ios/chrome/browser/browsing_data",
    "//ios/chrome/browser/browsing_data:counters",
    "//ios/chrome/browser/ui/collection_view/cells",
    "//ios/chrome/browser/ui/collection_view/cells:test_support",
    "//ios/web/public/test:test",
    "//testing/gtest",
    "//ui/base",
  ]

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