# Copyright (c) 2015 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("//third_party/protobuf/proto_library.gni")

static_library("drive") {
  sources = [
    "drive_api_util.cc",
    "drive_api_util.h",
    "drive_app_registry.cc",
    "drive_app_registry.h",
    "drive_app_registry_observer.h",
    "drive_notification_manager.cc",
    "drive_notification_manager.h",
    "drive_notification_observer.h",
    "drive_pref_names.cc",
    "drive_pref_names.h",
    "drive_uploader.cc",
    "drive_uploader.h",
    "event_logger.cc",
    "event_logger.h",
    "file_change.cc",
    "file_change.h",
    "file_errors.cc",
    "file_errors.h",
    "file_system_core_util.cc",
    "file_system_core_util.h",
    "file_system_metadata.cc",
    "file_system_metadata.h",
    "file_write_watcher.cc",
    "file_write_watcher.h",
    "job_list.cc",
    "job_list.h",
    "job_queue.cc",
    "job_queue.h",
    "job_scheduler.cc",
    "job_scheduler.h",
    "local_file_reader.cc",
    "local_file_reader.h",
    "resource_entry_conversion.cc",
    "resource_entry_conversion.h",
    "resource_metadata_storage.cc",
    "resource_metadata_storage.h",
    "service/drive_api_service.cc",
    "service/drive_api_service.h",
    "service/drive_service_interface.cc",
    "service/drive_service_interface.h",
  ]
  deps = [
    "//base",
    "//base:i18n",
    "//components/invalidation/public",
    "//components/keyed_service/core",
    "//components/prefs",

    # TODO(lukasza): Remove this dependency (see DEPS file for more info).
    "//content/public/browser",
    "//google_apis:google_apis",
    "//net:net",
    "//services/device/public/interfaces",
    "//third_party/cacheinvalidation",
    "//third_party/leveldatabase",
    "//third_party/re2",
  ]
  public_deps = [
    ":proto",
  ]
}

proto_library("proto") {
  sources = [
    "drive.proto",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "service/dummy_drive_service.cc",
    "service/dummy_drive_service.h",
    "service/fake_drive_service.cc",
    "service/fake_drive_service.h",
    "service/test_util.cc",
    "service/test_util.h",
  ]
  deps = [
    ":drive",
    ":proto",
    "//base",
    "//components/prefs:test_support",
    "//content/test:test_support",
    "//google_apis:test_support",
    "//net:net",
  ]
}

if (is_chromeos) {
  source_set("drive_chromeos") {
    sources = [
      "chromeos/change_list_loader.cc",
      "chromeos/change_list_loader.h",
      "chromeos/change_list_loader_observer.h",
      "chromeos/change_list_processor.cc",
      "chromeos/change_list_processor.h",
      "chromeos/directory_loader.cc",
      "chromeos/directory_loader.h",
      "chromeos/file_cache.cc",
      "chromeos/file_cache.h",
      "chromeos/file_system.cc",
      "chromeos/file_system.h",
      "chromeos/file_system/copy_operation.cc",
      "chromeos/file_system/copy_operation.h",
      "chromeos/file_system/create_directory_operation.cc",
      "chromeos/file_system/create_directory_operation.h",
      "chromeos/file_system/create_file_operation.cc",
      "chromeos/file_system/create_file_operation.h",
      "chromeos/file_system/download_operation.cc",
      "chromeos/file_system/download_operation.h",
      "chromeos/file_system/get_file_for_saving_operation.cc",
      "chromeos/file_system/get_file_for_saving_operation.h",
      "chromeos/file_system/move_operation.cc",
      "chromeos/file_system/move_operation.h",
      "chromeos/file_system/open_file_operation.cc",
      "chromeos/file_system/open_file_operation.h",
      "chromeos/file_system/operation_delegate.cc",
      "chromeos/file_system/operation_delegate.h",
      "chromeos/file_system/remove_operation.cc",
      "chromeos/file_system/remove_operation.h",
      "chromeos/file_system/search_operation.cc",
      "chromeos/file_system/search_operation.h",
      "chromeos/file_system/set_property_operation.cc",
      "chromeos/file_system/set_property_operation.h",
      "chromeos/file_system/touch_operation.cc",
      "chromeos/file_system/touch_operation.h",
      "chromeos/file_system/truncate_operation.cc",
      "chromeos/file_system/truncate_operation.h",
      "chromeos/file_system_interface.cc",
      "chromeos/file_system_interface.h",
      "chromeos/file_system_observer.h",
      "chromeos/remove_stale_cache_files.cc",
      "chromeos/remove_stale_cache_files.h",
      "chromeos/resource_metadata.cc",
      "chromeos/resource_metadata.h",
      "chromeos/search_metadata.cc",
      "chromeos/search_metadata.h",
      "chromeos/sync/entry_revert_performer.cc",
      "chromeos/sync/entry_revert_performer.h",
      "chromeos/sync/entry_update_performer.cc",
      "chromeos/sync/entry_update_performer.h",
      "chromeos/sync/remove_performer.cc",
      "chromeos/sync/remove_performer.h",
      "chromeos/sync_client.cc",
      "chromeos/sync_client.h",
    ]
    deps = [
      ":drive",
      "//base",
      "//base:i18n",
      "//components/prefs",
      "//google_apis:google_apis",
      "//net:net",
    ]
    public_deps = [
      ":proto",
    ]
  }
  static_library("test_support_chromeos") {
    testonly = true
    sources = [
      "chromeos/drive_test_util.cc",
      "chromeos/drive_test_util.h",
      "chromeos/dummy_file_system.cc",
      "chromeos/dummy_file_system.h",
      "chromeos/fake_file_system.cc",
      "chromeos/fake_file_system.h",
      "chromeos/fake_free_disk_space_getter.cc",
      "chromeos/fake_free_disk_space_getter.h",
    ]
    deps = [
      ":drive",
      ":drive_chromeos",
      ":proto",
      "//base",
      "//components/prefs:test_support",
      "//content/test:test_support",
      "//google_apis:test_support",
    ]
  }
}
