# 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_switch_item.h",
    "settings_switch_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" ]
}
