# Copyright 2015 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

source_set("features") {
  sources = [
    "features.cc",
    "features.h",
  ]
  deps = [ "//base" ]
}

static_library("sync_preferences") {
  sources = [
    "dual_layer_user_pref_store.cc",
    "dual_layer_user_pref_store.h",
    "pref_model_associator.cc",
    "pref_model_associator.h",
    "pref_model_associator_client.cc",
    "pref_model_associator_client.h",
    "pref_service_syncable.cc",
    "pref_service_syncable.h",
    "pref_service_syncable_factory.cc",
    "pref_service_syncable_factory.h",
    "pref_service_syncable_observer.h",
    "preferences_merge_helper.cc",
    "preferences_merge_helper.h",
    "syncable_prefs_database.cc",
    "syncable_prefs_database.h",
    "synced_pref_observer.h",
  ]

  deps = [
    ":features",
    "//base",
    "//components/metrics/demographics",
    "//components/policy/core/browser",
    "//components/pref_registry",
    "//components/prefs",
    "//components/signin/public/base",
    "//components/sync",
  ]

  if (is_chromeos) {
    deps += [ "//ash/constants" ]
  }
}

source_set("common_syncable_prefs_database") {
  sources = [
    "common_syncable_prefs_database.cc",
    "common_syncable_prefs_database.h",
  ]
  deps = [
    ":sync_preferences",
    "//base",
    "//components/autofill/core/common",
    "//components/bookmarks/common",
    "//components/browsing_data/core",
    "//components/commerce/core:pref_names",
    "//components/content_settings/core/common",
    "//components/contextual_search:prefs",
    "//components/desktop_to_mobile_promos",
    "//components/dom_distiller/core",
    "//components/language/core/browser",
    "//components/metrics",
    "//components/metrics/demographics",
    "//components/ntp_tiles",
    "//components/ntp_tiles:pref_names",
    "//components/omnibox/browser",
    "//components/password_manager/core/common",
    "//components/payments/core",
    "//components/safe_browsing/core/common:safe_browsing_prefs",
    "//components/saved_tab_groups/public",
    "//components/sharing_message",
    "//components/subscription_eligibility",
    "//components/sync_preferences/cross_device_pref_tracker/prefs",
    "//components/translate/core/browser",
    "//components/variations/service",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "pref_service_mock_factory.cc",
    "pref_service_mock_factory.h",
    "test_syncable_prefs_database.cc",
    "test_syncable_prefs_database.h",
    "testing_pref_service_syncable.cc",
    "testing_pref_service_syncable.h",
  ]

  deps = [
    ":sync_preferences",
    "//base",
    "//components/pref_registry",
    "//components/prefs:test_support",
    "//testing/gtest",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "dual_layer_user_pref_store_unittest.cc",
    "pref_model_associator_unittest.cc",
    "pref_service_syncable_unittest.cc",
    "preferences_merge_helper_unittest.cc",
  ]

  deps = [
    ":features",
    ":sync_preferences",
    ":test_support",
    "//base/test:test_support",
    "//components/pref_registry",
    "//components/prefs",
    "//components/prefs:test_support",
    "//components/sync",
    "//components/sync:test_support",
    "//testing/gtest",
  ]

  if (is_chromeos) {
    deps += [ "//ash/constants" ]
  }

  # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
  # enable the diagnostic by removing this line.
  configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}
