# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

visibility = [ "//peridot/bin/ledger/*" ]

source_set("impl") {
  sources = [
    "aggregator.cc",
    "aggregator.h",
    "batch_download.cc",
    "batch_download.h",
    "batch_upload.cc",
    "batch_upload.h",
    "constants.h",
    "ledger_sync_impl.cc",
    "ledger_sync_impl.h",
    "page_download.cc",
    "page_download.h",
    "page_sync_impl.cc",
    "page_sync_impl.h",
    "page_upload.cc",
    "page_upload.h",
    "user_sync_impl.cc",
    "user_sync_impl.h",
  ]

  public_deps = [
    "//garnet/public/lib/backoff",
    "//peridot/bin/ledger/cloud_sync/public",
    "//peridot/bin/ledger/encryption/impl",
    "//peridot/bin/ledger/encryption/public",
    "//peridot/bin/ledger/environment",
    "//peridot/bin/ledger/fidl/include",
    "//peridot/bin/ledger/storage/public",
    "//peridot/lib/commit_pack",
    "//peridot/public/fidl/fuchsia.ledger.cloud",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//peridot/bin/ledger/encryption/primitives",
    "//zircon/public/lib/trace",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "aggregator_unittest.cc",
    "batch_download_unittest.cc",
    "batch_upload_unittest.cc",
    "page_download_unittest.cc",
    "page_sync_impl_unittest.cc",
    "page_upload_unittest.cc",
    "user_sync_impl_unittest.cc",
  ]

  deps = [
    ":impl",
    "//garnet/public/lib/backoff/testing",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/cloud_sync/impl/testing",
    "//peridot/bin/ledger/cloud_sync/testing",
    "//peridot/bin/ledger/encryption/fake",
    "//peridot/bin/ledger/storage/public",
    "//peridot/bin/ledger/storage/testing",
    "//peridot/bin/ledger/testing:lib",
    "//peridot/lib/scoped_tmpfs",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}
