# Copyright 2017 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("//build/config/jumbo.gni")
import("//third_party/blink/renderer/platform/platform.gni")
import("//third_party/protobuf/proto_library.gni")
import("//testing/libfuzzer/fuzzer_test.gni")

blink_platform_sources("scheduler") {
  sources = [
    "child/features.cc",
    "child/features.h",
    "child/pollable_thread_safe_flag.cc",
    "child/pollable_thread_safe_flag.h",
    "child/process_state.cc",
    "child/process_state.h",
    "child/single_thread_idle_task_runner.cc",
    "child/webthread_base.cc",
    "child/webthread_impl_for_worker_scheduler.cc",
    "child/webthread_impl_for_worker_scheduler.h",
    "common/background_scheduler.cc",
    "common/cancelable_closure_holder.cc",
    "common/cancelable_closure_holder.h",
    "common/frame_or_worker_scheduler.cc",
    "common/idle_canceled_delayed_task_sweeper.cc",
    "common/idle_canceled_delayed_task_sweeper.h",
    "common/idle_helper.cc",
    "common/idle_helper.h",
    "common/metrics_helper.cc",
    "common/metrics_helper.h",
    "common/scheduler_helper.cc",
    "common/scheduler_helper.h",
    "common/scheduling_lifecycle_state.cc",
    "common/thread_scheduler.cc",
    "common/thread_scheduler_impl.cc",
    "common/thread_scheduler_impl.h",
    "common/throttling/budget_pool.cc",
    "common/throttling/budget_pool.h",
    "common/throttling/cpu_time_budget_pool.cc",
    "common/throttling/cpu_time_budget_pool.h",
    "common/throttling/task_queue_throttler.cc",
    "common/throttling/task_queue_throttler.h",
    "common/throttling/throttled_time_domain.cc",
    "common/throttling/throttled_time_domain.h",
    "common/throttling/wake_up_budget_pool.cc",
    "common/throttling/wake_up_budget_pool.h",
    "common/unprioritized_resource_loading_task_runner_handle.cc",
    "common/unprioritized_resource_loading_task_runner_handle.h",
    "common/web_resource_loading_task_runner_handle.cc",
    "common/web_thread_scheduler.cc",
    "main_thread/auto_advancing_virtual_time_domain.cc",
    "main_thread/auto_advancing_virtual_time_domain.h",
    "main_thread/deadline_task_runner.cc",
    "main_thread/deadline_task_runner.h",
    "main_thread/frame_origin_type.cc",
    "main_thread/frame_origin_type.h",
    "main_thread/frame_scheduler_impl.cc",
    "main_thread/frame_scheduler_impl.h",
    "main_thread/frame_task_queue_controller.cc",
    "main_thread/frame_task_queue_controller.h",
    "main_thread/idle_time_estimator.cc",
    "main_thread/idle_time_estimator.h",
    "main_thread/main_thread_metrics_helper.cc",
    "main_thread/main_thread_metrics_helper.h",
    "main_thread/main_thread_scheduler_helper.cc",
    "main_thread/main_thread_scheduler_helper.h",
    "main_thread/main_thread_scheduler_impl.cc",
    "main_thread/main_thread_scheduler_impl.h",
    "main_thread/main_thread_task_queue.cc",
    "main_thread/main_thread_task_queue.h",
    "main_thread/page_scheduler_impl.cc",
    "main_thread/page_scheduler_impl.h",
    "main_thread/page_visibility_state.cc",
    "main_thread/page_visibility_state.h",
    "main_thread/prioritize_compositing_after_input_experiment.cc",
    "main_thread/prioritize_compositing_after_input_experiment.h",
    "main_thread/queueing_time_estimator.cc",
    "main_thread/queueing_time_estimator.h",
    "main_thread/render_widget_signals.cc",
    "main_thread/render_widget_signals.h",
    "main_thread/resource_loading_task_runner_handle_impl.cc",
    "main_thread/resource_loading_task_runner_handle_impl.h",
    "main_thread/task_cost_estimator.cc",
    "main_thread/task_cost_estimator.h",
    "main_thread/task_type_names.cc",
    "main_thread/task_type_names.h",
    "main_thread/use_case.h",
    "main_thread/user_model.cc",
    "main_thread/user_model.h",
    "main_thread/web_render_widget_scheduling_state.cc",
    "public/background_scheduler.h",
    "public/frame_or_worker_scheduler.h",
    "public/frame_scheduler.h",
    "public/page_lifecycle_state.h",
    "public/page_scheduler.h",
    "public/scheduling_lifecycle_state.h",
    "public/thread_scheduler.h",
    "public/worker_scheduler.h",
    "renderer/frame_status.cc",
    "renderer/frame_status.h",
    "renderer/web_scoped_virtual_time_pauser.cc",
    "renderer/webthread_impl_for_renderer_scheduler.cc",
    "renderer/webthread_impl_for_renderer_scheduler.h",
    "util/aggregated_metric_reporter.h",
    "util/thread_cpu_throttler.cc",
    "util/thread_cpu_throttler.h",
    "util/thread_load_tracker.cc",
    "util/thread_load_tracker.h",
    "util/thread_type.h",
    "util/tracing_helper.cc",
    "util/tracing_helper.h",
    "worker/compositor_metrics_helper.cc",
    "worker/compositor_metrics_helper.h",
    "worker/compositor_thread_scheduler.cc",
    "worker/compositor_thread_scheduler.h",
    "worker/non_main_thread_scheduler_helper.cc",
    "worker/non_main_thread_scheduler_helper.h",
    "worker/non_main_thread_scheduler_impl.cc",
    "worker/non_main_thread_scheduler_impl.h",
    "worker/non_main_thread_task_queue.cc",
    "worker/non_main_thread_task_queue.h",
    "worker/worker_metrics_helper.cc",
    "worker/worker_metrics_helper.h",
    "worker/worker_scheduler.cc",
    "worker/worker_scheduler_proxy.cc",
    "worker/worker_scheduler_proxy.h",
    "worker/worker_thread_scheduler.cc",
    "worker/worker_thread_scheduler.h",
  ]

  deps = [
    "//base",
    "//cc",
    "//components/scheduling_metrics",
    "//device/base/synchronization",
    "//services/metrics/public/cpp:ukm_builders",
    "//services/metrics/public/mojom",
    "//third_party/blink/renderer/platform:make_platform_generated",
    "//third_party/blink/renderer/platform/wtf",
  ]
}

jumbo_source_set("test_support") {
  testonly = true

  sources = [
    "test/fake_frame_scheduler.h",
    "test/fake_page_scheduler.h",
    "test/fake_renderer_scheduler.cc",
    "test/fake_task_runner.cc",
    "test/fake_task_runner.h",
    "test/renderer_scheduler_test_support.cc",
    "test/test_queueing_time_estimator_client.cc",
    "test/test_queueing_time_estimator_client.h",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//mojo/public/cpp/bindings",
    "//third_party/blink/public/mojom:mojom_platform_blink_headers",
  ]

  configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ]
}

jumbo_source_set("unit_tests") {
  testonly = true

  sources = [
    "child/webthread_impl_for_worker_scheduler_unittest.cc",
    "common/background_scheduler_unittest.cc",
    "common/idle_canceled_delayed_task_sweeper_unittest.cc",
    "common/idle_helper_unittest.cc",
    "common/metrics_helper_unittest.cc",
    "common/scheduler_helper_unittest.cc",
    "common/throttling/budget_pool_unittest.cc",
    "common/throttling/task_queue_throttler_unittest.cc",
    "main_thread/auto_advancing_virtual_time_domain_unittest.cc",
    "main_thread/deadline_task_runner_unittest.cc",
    "main_thread/frame_scheduler_impl_unittest.cc",
    "main_thread/frame_task_queue_controller_unittest.cc",
    "main_thread/idle_time_estimator_unittest.cc",
    "main_thread/main_thread_metrics_helper_unittest.cc",
    "main_thread/main_thread_scheduler_impl_unittest.cc",
    "main_thread/page_scheduler_impl_unittest.cc",
    "main_thread/queueing_time_estimator_unittest.cc",
    "main_thread/render_widget_signals_unittest.cc",
    "main_thread/task_cost_estimator_unittest.cc",
    "main_thread/user_model_unittest.cc",
    "renderer/webthread_impl_for_renderer_scheduler_unittest.cc",
    "util/thread_load_tracker_unittest.cc",
    "util/tracing_helper_unittest.cc",
    "worker/compositor_thread_scheduler_unittest.cc",
    "worker/worker_scheduler_proxy_unittest.cc",
    "worker/worker_scheduler_unittest.cc",
    "worker/worker_thread_scheduler_unittest.cc",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/blink/public:test_support",
  ]

  configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ]
}

source_set("perf_tests") {
  testonly = true

  sources = [
    "test/queueing_time_estimator_perf_test.cc",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//testing/perf",
    "//third_party/blink/public:test_support",
  ]

  configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ]
}

source_set("scheduler_fuzzer_tests") {
  testonly = true

  sources = []
  deps = [
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/blink/renderer/platform/scheduler:test_support",
  ]

  if (is_linux) {
    sources += [
      "base/sequence_manager_fuzzer_processor.cc",
      "base/sequence_manager_fuzzer_processor.h",
      "base/sequence_manager_fuzzer_processor_unittest.cc",
    ]

    deps += [
      ":sequence_manager_test_description_proto",
      "//third_party/libprotobuf-mutator",
    ]
  }

  configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ]
}

fuzzer_test("sequence_manager_fuzzer") {
  sources = [
    "base/sequence_manager_fuzzer.cc",
    "base/sequence_manager_fuzzer_processor.cc",
    "base/sequence_manager_fuzzer_processor.h",
  ]

  deps = [
    ":sequence_manager_test_description_proto",
    "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
    "//third_party/blink/renderer/platform:test_support",
    "//third_party/libprotobuf-mutator",
  ]
}

proto_library("sequence_manager_test_description_proto") {
  sources = [
    "base/proto/sequence_manager_test_description.proto",
  ]
}
