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

static_library("leveldb_proto") {
  sources = [
    "leveldb_database.cc",
    "leveldb_database.h",
    "proto_database.cc",
    "proto_database.h",
    "proto_database_impl.h",
    "proto_database_provider.cc",
    "proto_database_provider.h",
    "proto_database_wrapper.h",
    "proto_leveldb_wrapper.cc",
    "proto_leveldb_wrapper.h",
    "proto_leveldb_wrapper_metrics.cc",
    "proto_leveldb_wrapper_metrics.h",
    "shared_proto_database.cc",
    "shared_proto_database.h",
    "shared_proto_database_client.cc",
    "shared_proto_database_client.h",
    "unique_proto_database.h",
  ]

  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 = [
    "shared_proto_database_client_unittest.cc",
    "shared_proto_database_unittest.cc",
    "unique_proto_database_unittest.cc",
  ]
  deps = [
    ":test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
