# Copyright 2014 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("//third_party/protobuf/proto_library.gni")

proto_library("proto") {
  sources = [
    "internal/proto/shared_db_metadata.proto",
  ]
}

static_library("leveldb_proto") {
  sources = [
    "internal/leveldb_database.cc",
    "internal/leveldb_database.h",
    "internal/leveldb_proto_feature_list.cc",
    "internal/leveldb_proto_feature_list.h",
    "internal/migration_delegate.cc",
    "internal/migration_delegate.h",
    "internal/proto_database_impl.cc",
    "internal/proto_database_impl.h",
    "internal/proto_database_selector.cc",
    "internal/proto_database_selector.h",
    "internal/proto_leveldb_wrapper.cc",
    "internal/proto_leveldb_wrapper.h",
    "internal/proto_leveldb_wrapper_metrics.cc",
    "internal/proto_leveldb_wrapper_metrics.h",
    "internal/shared_proto_database.cc",
    "internal/shared_proto_database.h",
    "internal/shared_proto_database_client.cc",
    "internal/shared_proto_database_client.h",
    "internal/shared_proto_database_provider.cc",
    "internal/shared_proto_database_provider.h",
    "internal/unique_proto_database.cc",
    "internal/unique_proto_database.h",
    "public/proto_database.cc",
    "public/proto_database.h",
    "public/proto_database_provider.cc",
    "public/proto_database_provider.h",
    "public/shared_proto_database_client_list.cc",
    "public/shared_proto_database_client_list.h",
  ]
  deps = [
    ":proto",
  ]

  public_deps = [
    "//base",
    "//components/keyed_service/core",
    "//third_party/leveldatabase",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "testing/fake_db.h",
  ]

  public_deps = [
    ":leveldb_proto",
    "//base",
    "//base/test:test_support",
    "//components/leveldb_proto/testing/proto",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "internal/proto_database_impl_unittest.cc",
    "internal/shared_proto_database_client_list_unittest.cc",
    "internal/shared_proto_database_client_unittest.cc",
    "internal/shared_proto_database_unittest.cc",
    "internal/unique_proto_database_unittest.cc",
  ]
  deps = [
    ":test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
