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

# GYP version: storage/storage_browser.gyp:storage
component("browser") {
  output_name = "storage_browser"
  sources = [
    "blob/blob_data_builder.cc",
    "blob/blob_data_builder.h",
    "blob/blob_data_handle.cc",
    "blob/blob_data_handle.h",
    "blob/blob_data_item.cc",
    "blob/blob_data_item.h",
    "blob/blob_data_snapshot.cc",
    "blob/blob_data_snapshot.h",
    "blob/blob_storage_context.cc",
    "blob/blob_storage_context.h",
    "blob/blob_url_request_job.cc",
    "blob/blob_url_request_job.h",
    "blob/blob_url_request_job_factory.cc",
    "blob/blob_url_request_job_factory.h",
    "blob/internal_blob_data.cc",
    "blob/internal_blob_data.h",
    "blob/scoped_file.cc",
    "blob/scoped_file.h",
    "blob/shareable_blob_data_item.cc",
    "blob/shareable_blob_data_item.h",
    "blob/shareable_file_reference.cc",
    "blob/shareable_file_reference.h",
    "blob/view_blob_internals_job.cc",
    "blob/view_blob_internals_job.h",
    "database/database_quota_client.cc",
    "database/database_quota_client.h",
    "database/database_tracker.cc",
    "database/database_tracker.h",
    "database/database_util.cc",
    "database/database_util.h",
    "database/databases_table.cc",
    "database/databases_table.h",
    "database/vfs_backend.cc",
    "database/vfs_backend.h",
    "fileapi/async_file_util.h",
    "fileapi/async_file_util_adapter.cc",
    "fileapi/async_file_util_adapter.h",
    "fileapi/copy_or_move_file_validator.h",
    "fileapi/copy_or_move_operation_delegate.cc",
    "fileapi/copy_or_move_operation_delegate.h",
    "fileapi/dragged_file_util.cc",
    "fileapi/dragged_file_util.h",
    "fileapi/external_mount_points.cc",
    "fileapi/external_mount_points.h",
    "fileapi/file_observers.h",
    "fileapi/file_permission_policy.h",
    "fileapi/file_stream_reader.cc",
    "fileapi/file_stream_reader.h",
    "fileapi/file_stream_writer.h",
    "fileapi/file_system_backend.h",
    "fileapi/file_system_context.cc",
    "fileapi/file_system_context.h",
    "fileapi/file_system_dir_url_request_job.cc",
    "fileapi/file_system_dir_url_request_job.h",
    "fileapi/file_system_file_stream_reader.cc",
    "fileapi/file_system_file_stream_reader.h",
    "fileapi/file_system_file_util.cc",
    "fileapi/file_system_file_util.h",
    "fileapi/file_system_operation.h",
    "fileapi/file_system_operation_context.cc",
    "fileapi/file_system_operation_context.h",
    "fileapi/file_system_operation_impl.cc",
    "fileapi/file_system_operation_impl.h",
    "fileapi/file_system_operation_runner.cc",
    "fileapi/file_system_operation_runner.h",
    "fileapi/file_system_options.cc",
    "fileapi/file_system_options.h",
    "fileapi/file_system_quota_client.cc",
    "fileapi/file_system_quota_client.h",
    "fileapi/file_system_quota_util.h",
    "fileapi/file_system_url.cc",
    "fileapi/file_system_url.h",
    "fileapi/file_system_url_request_job.cc",
    "fileapi/file_system_url_request_job.h",
    "fileapi/file_system_url_request_job_factory.cc",
    "fileapi/file_system_url_request_job_factory.h",
    "fileapi/file_system_usage_cache.cc",
    "fileapi/file_system_usage_cache.h",
    "fileapi/file_writer_delegate.cc",
    "fileapi/file_writer_delegate.h",
    "fileapi/isolated_context.cc",
    "fileapi/isolated_context.h",
    "fileapi/isolated_file_system_backend.cc",
    "fileapi/isolated_file_system_backend.h",
    "fileapi/local_file_stream_reader.cc",
    "fileapi/local_file_stream_reader.h",
    "fileapi/local_file_stream_writer.cc",
    "fileapi/local_file_stream_writer.h",
    "fileapi/local_file_util.cc",
    "fileapi/local_file_util.h",
    "fileapi/mount_points.cc",
    "fileapi/mount_points.h",
    "fileapi/native_file_util.cc",
    "fileapi/native_file_util.h",
    "fileapi/obfuscated_file_util.cc",
    "fileapi/obfuscated_file_util.h",
    "fileapi/open_file_system_mode.h",
    "fileapi/plugin_private_file_system_backend.cc",
    "fileapi/plugin_private_file_system_backend.h",
    "fileapi/quota/open_file_handle.cc",
    "fileapi/quota/open_file_handle.h",
    "fileapi/quota/open_file_handle_context.cc",
    "fileapi/quota/open_file_handle_context.h",
    "fileapi/quota/quota_backend_impl.cc",
    "fileapi/quota/quota_backend_impl.h",
    "fileapi/quota/quota_reservation.cc",
    "fileapi/quota/quota_reservation.h",
    "fileapi/quota/quota_reservation_buffer.cc",
    "fileapi/quota/quota_reservation_buffer.h",
    "fileapi/quota/quota_reservation_manager.cc",
    "fileapi/quota/quota_reservation_manager.h",
    "fileapi/recursive_operation_delegate.cc",
    "fileapi/recursive_operation_delegate.h",
    "fileapi/remove_operation_delegate.cc",
    "fileapi/remove_operation_delegate.h",
    "fileapi/sandbox_directory_database.cc",
    "fileapi/sandbox_directory_database.h",
    "fileapi/sandbox_file_stream_writer.cc",
    "fileapi/sandbox_file_stream_writer.h",
    "fileapi/sandbox_file_system_backend.cc",
    "fileapi/sandbox_file_system_backend.h",
    "fileapi/sandbox_file_system_backend_delegate.cc",
    "fileapi/sandbox_file_system_backend_delegate.h",
    "fileapi/sandbox_isolated_origin_database.cc",
    "fileapi/sandbox_isolated_origin_database.h",
    "fileapi/sandbox_origin_database.cc",
    "fileapi/sandbox_origin_database.h",
    "fileapi/sandbox_origin_database_interface.cc",
    "fileapi/sandbox_origin_database_interface.h",
    "fileapi/sandbox_prioritized_origin_database.cc",
    "fileapi/sandbox_prioritized_origin_database.h",
    "fileapi/sandbox_quota_observer.cc",
    "fileapi/sandbox_quota_observer.h",
    "fileapi/task_runner_bound_observer_list.h",
    "fileapi/timed_task_helper.cc",
    "fileapi/timed_task_helper.h",
    "fileapi/transient_file_util.cc",
    "fileapi/transient_file_util.h",
    "quota/client_usage_tracker.cc",
    "quota/client_usage_tracker.h",
    "quota/quota_callbacks.h",
    "quota/quota_client.h",
    "quota/quota_database.cc",
    "quota/quota_database.h",
    "quota/quota_manager.cc",
    "quota/quota_manager.h",
    "quota/quota_manager_proxy.cc",
    "quota/quota_manager_proxy.h",
    "quota/quota_task.cc",
    "quota/quota_task.h",
    "quota/quota_temporary_storage_evictor.cc",
    "quota/quota_temporary_storage_evictor.h",
    "quota/special_storage_policy.cc",
    "quota/special_storage_policy.h",
    "quota/storage_monitor.cc",
    "quota/storage_monitor.h",
    "quota/storage_observer.cc",
    "quota/storage_observer.h",
    "quota/usage_tracker.cc",
    "quota/usage_tracker.h",
    "storage_browser_export.h",
  ]

  defines = [ "STORAGE_BROWSER_IMPLEMENTATION" ]
  configs += [
    "//build/config:precompiled_headers",

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

  deps = [
    "//base",
    "//base:i18n",
    "//base/third_party/dynamic_annotations",
    "//net",
    "//sql",
    "//storage/common",
    "//third_party/leveldatabase",
    "//third_party/sqlite",
    "//url",
  ]

  # TODO(GYP) support chrome_multiple_dll
  #['chrome_multiple_dll!=1', {
  #  'dependencies': [
  #    '<(DEPTH)/third_party/WebKit/public/blink.gyp:blink',
  #  ],
  #}],
}

executable("dump_file_system") {
  sources = [
    "fileapi/dump_file_system.cc",
  ]

  deps = [
    ":browser",
    "//base",
    "//build/config/sanitizers:deps",
    "//storage/common",
  ]
}
