# 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_reader.cc",
    "blob/blob_reader.h",
    "blob/blob_storage_context.cc",
    "blob/blob_storage_context.h",
    "blob/blob_storage_registry.cc",
    "blob/blob_storage_registry.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/upload_blob_element_reader.cc",
    "blob/upload_blob_element_reader.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",
  ]
}
