# Copyright 2017 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 = [ "//src/ledger/cloud_provider_firestore/bin/*" ]

executable("app") {
  output_name = "cloud_provider_firestore"

  sources = [
    "app.cc",
  ]

  deps = [
    ":lib",
    "//peridot/lib/rng:system",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]
}

source_set("lib") {
  sources = [
    "cloud_provider_impl.cc",
    "cloud_provider_impl.h",
    "credentials_provider.h",
    "credentials_provider_impl.cc",
    "credentials_provider_impl.h",
    "device_set_impl.cc",
    "device_set_impl.h",
    "factory_impl.cc",
    "factory_impl.h",
    "grpc_status.cc",
    "grpc_status.h",
    "page_cloud_impl.cc",
    "page_cloud_impl.h",
  ]

  public_deps = [
    "//peridot/lib/rng",
    "//sdk/fidl/fuchsia.ledger.cloud",
    "//sdk/fidl/fuchsia.modular.auth",
    "//sdk/lib/fidl/cpp",
    "//src/ledger/cloud_provider_firestore/bin/fidl",
    "//src/ledger/cloud_provider_firestore/bin/firestore",
    "//src/ledger/cloud_provider_firestore/bin/include",
    "//src/ledger/lib/firebase_auth",
    "//src/lib/fxl",
    "//third_party/grpc:grpc++",
  ]

  deps = [
    "//garnet/public/lib/callback",
    "//garnet/public/lib/fsl",
    "//peridot/lib/commit_pack",
    "//peridot/lib/convert",
    "//src/ledger/bin/app:serialization_version",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "cloud_provider_impl_unittest.cc",
    "credentials_provider_impl_unittest.cc",
    "device_set_impl_unittest.cc",
    "factory_impl_unittest.cc",
    "page_cloud_impl_unittest.cc",
  ]

  deps = [
    ":lib",
    "//garnet/public/lib/callback",
    "//garnet/public/lib/gtest",
    "//peridot/lib/convert",
    "//peridot/lib/rng:testing",
    "//sdk/lib/fidl/cpp",
    "//src/ledger/cloud_provider_firestore/bin/app/testing",
    "//src/ledger/cloud_provider_firestore/bin/firestore/testing",
    "//src/ledger/lib/firebase_auth/testing",
    "//src/lib/fxl:printers",
    "//third_party/protobuf:protobuf_full",
  ]
}
