# 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 = [
    "blob_storage/blob_handle.cc",
    "blob_storage/blob_handle.h",
    "blob_storage/blob_storage_constants.cc",
    "blob_storage/blob_storage_constants.h",
    "database/database_connections.cc",
    "database/database_connections.h",
    "database/database_identifier.cc",
    "database/database_identifier.h",
    "fileapi/file_system_info.cc",
    "fileapi/file_system_info.h",
    "fileapi/file_system_mount_option.h",
    "fileapi/file_system_types.h",
    "fileapi/file_system_util.cc",
    "fileapi/file_system_util.h",
    "quota/quota_limit_type.h",
    "storage_common_export.h",
    "storage_histograms.cc",
    "storage_histograms.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 = [ "STORAGE_COMMON_IMPLEMENTATION" ]

  public_deps = [
    "//components/services/filesystem/public/interfaces",
    "//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",
    "fileapi/file_system_util_unittest.cc",
    "run_all_unittests.cc",
  ]

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