# 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.

import("//testing/test.gni")

source_set("preferences") {
  visibility = [
    ":*",
    "//services/preferences/public/cpp:service_main",
  ]
  configs += [ "//build/config/compiler:wexit_time_destructors" ]
  deps = [
    "//components/prefs",
    "//services/preferences/public/cpp",
    "//services/preferences/public/cpp/lib",
    "//services/preferences/public/mojom",
    "//services/preferences/tracked",
    "//services/service_manager/public/cpp",
  ]
  sources = [
    "persistent_pref_store_impl.cc",
    "persistent_pref_store_impl.h",
    "pref_store_impl.cc",
    "pref_store_impl.h",
    "pref_store_manager_impl.cc",
    "pref_store_manager_impl.h",
    "scoped_pref_connection_builder.cc",
    "scoped_pref_connection_builder.h",
    "shared_pref_registry.cc",
    "shared_pref_registry.h",
  ]
}

source_set("tests") {
  testonly = true
  deps = [
    ":preferences",
    "//base",
    "//base/test:test_support",
    "//components/prefs:test_support",
    "//mojo/public/cpp/bindings:bindings",
    "//services/preferences/public/cpp",
    "//services/preferences/public/cpp:service_main",
    "//services/preferences/public/cpp/tests",
    "//services/preferences/public/mojom",
    "//services/preferences/tracked:unit_tests",
    "//services/service_manager/public/cpp",
    "//testing/gmock",
    "//testing/gtest",
  ]
  sources = [
    "persistent_pref_store_impl_unittest.cc",
    "pref_store_consistency_unittest.cc",
    "pref_store_impl_unittest.cc",
    "unittest_common.cc",
  ]
  if (!is_ios) {
    sources += [ "pref_service_factory_unittest.cc" ]
    deps += [
      "//services/preferences/public/cpp:manifest",
      "//services/service_manager/public/cpp/test:test_support",
      "//services/service_manager/public/mojom",
    ]
  }
}
