# 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/directory_entry.cc",
    "fileapi/directory_entry.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 = [
    "//services/network/public/interfaces",
    "//third_party/WebKit/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/edk/system",
    "//testing/gtest",
    "//url",
  ]
}
