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

if (is_android) {
  import("//build/config/android/rules.gni")
}

static_library("core") {
  sources = [
    "archive_manager.cc",
    "archive_manager.h",
    "client_id.cc",
    "client_id.h",
    "client_namespace_constants.cc",
    "client_namespace_constants.h",
    "client_policy_controller.cc",
    "client_policy_controller.h",
    "model/add_page_task.cc",
    "model/add_page_task.h",
    "model/clear_digest_task.cc",
    "model/clear_digest_task.h",
    "model/clear_legacy_temporary_pages_task.cc",
    "model/clear_legacy_temporary_pages_task.h",
    "model/clear_storage_task.cc",
    "model/clear_storage_task.h",
    "model/create_archive_task.cc",
    "model/create_archive_task.h",
    "model/delete_page_task.cc",
    "model/delete_page_task.h",
    "model/get_pages_task.cc",
    "model/get_pages_task.h",
    "model/mark_page_accessed_task.cc",
    "model/mark_page_accessed_task.h",
    "model/offline_page_model_taskified.cc",
    "model/offline_page_model_taskified.h",
    "model/persistent_pages_consistency_check_task.cc",
    "model/persistent_pages_consistency_check_task.h",
    "model/temporary_pages_consistency_check_task.cc",
    "model/temporary_pages_consistency_check_task.h",
    "offline_event_logger.cc",
    "offline_event_logger.h",
    "offline_page_archiver.h",
    "offline_page_client_policy.h",
    "offline_page_item.cc",
    "offline_page_item.h",
    "offline_page_metadata_store.h",
    "offline_page_metadata_store_sql.cc",
    "offline_page_metadata_store_sql.h",
    "offline_page_model.cc",
    "offline_page_model.h",
    "offline_page_model_event_logger.cc",
    "offline_page_model_event_logger.h",
    "offline_page_model_impl.cc",
    "offline_page_model_impl.h",
    "offline_page_model_query.cc",
    "offline_page_model_query.h",
    "offline_page_storage_manager.cc",
    "offline_page_storage_manager.h",
    "offline_page_types.h",
    "offline_pages_ukm_reporter.cc",
    "offline_pages_ukm_reporter.h",
    "offline_pages_ukm_reporter_stub.cc",
    "offline_pages_ukm_reporter_stub.h",
    "offline_store_types.h",
    "offline_store_utils.cc",
    "offline_store_utils.h",
    "snapshot_controller.cc",
    "snapshot_controller.h",
    "task.cc",
    "task.h",
    "task_queue.cc",
    "task_queue.h",
  ]

  deps = [
    ":switches",
    "//base",
    "//components/keyed_service/core",
    "//net",
    "//services/metrics/public/cpp:metrics_cpp",
    "//services/metrics/public/cpp:ukm_builders",
    "//sql:sql",
    "//url",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "model/offline_page_item_generator.cc",
    "model/offline_page_item_generator.h",
    "model/offline_page_test_util.cc",
    "model/offline_page_test_util.h",
    "offline_page_metadata_store_test_util.cc",
    "offline_page_metadata_store_test_util.h",
    "offline_page_test_archiver.cc",
    "offline_page_test_archiver.h",
    "offline_page_test_store.cc",
    "offline_page_test_store.h",
    "stub_offline_page_model.cc",
    "stub_offline_page_model.h",
    "test_task.cc",
    "test_task.h",
    "test_task_runner.cc",
    "test_task_runner.h",
  ]

  deps = [
    ":core",
    ":switches",
    "//base",
    "//base/test:test_support",
    "//components/keyed_service/core",
    "//sql:sql",
    "//testing/gtest",
    "//url",
  ]
}

static_library("switches") {
  sources = [
    "offline_page_feature.cc",
    "offline_page_feature.h",
  ]

  deps = [
    "//base",
    "//components/version_info",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "archive_manager_unittest.cc",
    "client_policy_controller_unittest.cc",
    "model/add_page_task_unittest.cc",
    "model/clear_digest_task_unittest.cc",
    "model/clear_legacy_temporary_pages_task_unittest.cc",
    "model/clear_storage_task_unittest.cc",
    "model/create_archive_task_unittest.cc",
    "model/delete_page_task_unittest.cc",
    "model/get_pages_task_unittest.cc",
    "model/mark_page_accessed_task_unittest.cc",
    "model/offline_page_model_taskified_unittest.cc",
    "model/persistent_pages_consistency_check_task_unittest.cc",
    "model/temporary_pages_consistency_check_task_unittest.cc",
    "offline_event_logger_unittest.cc",
    "offline_page_feature_unittest.cc",
    "offline_page_metadata_store_unittest.cc",
    "offline_page_model_event_logger_unittest.cc",
    "offline_page_model_impl_unittest.cc",
    "offline_page_model_query_unittest.cc",
    "offline_page_storage_manager_unittest.cc",
    "offline_pages_ukm_reporter_unittest.cc",
    "snapshot_controller_unittest.cc",
    "task_queue_unittest.cc",
    "task_unittest.cc",
  ]

  deps = [
    ":core",
    ":switches",
    ":test_support",
    "prefetch:unit_tests",
    "recent_tabs:unit_tests",
    "renovations:unit_tests",
    "//base",
    "//base/test:test_support",
    "//components/ukm:test_support",
    "//services/metrics/public/cpp:ukm_builders",
    "//sql:sql",
    "//testing/gmock",
    "//testing/gtest",
    "//url",
  ]
}

if (is_android) {
  java_cpp_enum("offline_page_model_enums_java") {
    sources = [
      "background/request_notifier.h",
      "background/request_queue_results.h",
      "background/save_page_request.h",
      "offline_page_types.h",
      "offline_store_types.h",
      "prefetch/prefetch_types.h",
    ]
  }
}