# 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("//mojo/public/tools/bindings/mojom.gni")

component("common") {
  output_name = "storage_common"
  sources = [
    "database/database_connections.cc",
    "database/database_connections.h",
    "database/database_identifier.cc",
    "database/database_identifier.h",
    "file_system/file_system_info.cc",
    "file_system/file_system_info.h",
    "file_system/file_system_mount_option.h",
    "file_system/file_system_types.h",
    "file_system/file_system_util.cc",
    "file_system/file_system_util.h",
    "quota/padding_key.cc",
    "quota/padding_key.h",
  ]

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [
    "//build/config/compiler:no_size_t_to_int_warning",
    "//build/config/compiler:wexit_time_destructors",
  ]

  defines = [ "IS_STORAGE_COMMON_IMPL" ]

  public_deps = [
    "//components/services/filesystem/public/mojom",
    "//services/network/public/mojom",
    "//third_party/blink/public:blink_headers",
  ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//net",
    "//url",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "database/database_connections_unittest.cc",
    "database/database_identifier_unittest.cc",
    "file_system/file_system_util_unittest.cc",
    "run_all_unittests.cc",
  ]

  deps = [
    ":common",
    "//base/test:test_support",
    "//mojo/core/embedder",
    "//testing/gtest",
    "//url",
  ]
}
