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

# GYP version: components/scheduler.gypi:scheduler
component("scheduler") {
  sources = [
    "base/cancelable_closure_holder.cc",
    "base/cancelable_closure_holder.h",
    "base/enqueue_order.cc",
    "base/enqueue_order.h",
    "base/lazy_now.cc",
    "base/lazy_now.h",
    "base/pollable_thread_safe_flag.cc",
    "base/pollable_thread_safe_flag.h",
    "base/real_time_domain.cc",
    "base/real_time_domain.h",
    "base/task_queue.h",
    "base/task_queue_impl.cc",
    "base/task_queue_impl.h",
    "base/task_queue_manager.cc",
    "base/task_queue_manager.h",
    "base/task_queue_manager_delegate.h",
    "base/task_queue_selector.cc",
    "base/task_queue_selector.h",
    "base/time_domain.cc",
    "base/time_domain.h",
    "base/virtual_time_domain.cc",
    "base/virtual_time_domain.h",
    "base/work_queue.cc",
    "base/work_queue.h",
    "base/work_queue_sets.cc",
    "base/work_queue_sets.h",
    "child/child_scheduler.h",
    "child/compositor_worker_scheduler.cc",
    "child/compositor_worker_scheduler.h",
    "child/idle_helper.cc",
    "child/idle_helper.h",
    "child/scheduler_helper.cc",
    "child/scheduler_helper.h",
    "child/scheduler_tqm_delegate.h",
    "child/scheduler_tqm_delegate_impl.cc",
    "child/scheduler_tqm_delegate_impl.h",
    "child/single_thread_idle_task_runner.cc",
    "child/single_thread_idle_task_runner.h",
    "child/web_scheduler_impl.cc",
    "child/web_scheduler_impl.h",
    "child/web_task_runner_impl.cc",
    "child/web_task_runner_impl.h",
    "child/webthread_base.cc",
    "child/webthread_base.h",
    "child/webthread_impl_for_worker_scheduler.cc",
    "child/webthread_impl_for_worker_scheduler.h",
    "child/worker_scheduler.cc",
    "child/worker_scheduler.h",
    "child/worker_scheduler_impl.cc",
    "child/worker_scheduler_impl.h",
    "renderer/auto_advancing_virtual_time_domain.cc",
    "renderer/auto_advancing_virtual_time_domain.h",
    "renderer/deadline_task_runner.cc",
    "renderer/deadline_task_runner.h",
    "renderer/idle_time_estimator.cc",
    "renderer/idle_time_estimator.h",
    "renderer/render_widget_scheduling_state.cc",
    "renderer/render_widget_scheduling_state.h",
    "renderer/render_widget_signals.cc",
    "renderer/render_widget_signals.h",
    "renderer/renderer_scheduler.cc",
    "renderer/renderer_scheduler.h",
    "renderer/renderer_scheduler_impl.cc",
    "renderer/renderer_scheduler_impl.h",
    "renderer/renderer_web_scheduler_impl.cc",
    "renderer/renderer_web_scheduler_impl.h",
    "renderer/task_cost_estimator.cc",
    "renderer/task_cost_estimator.h",
    "renderer/throttled_time_domain.cc",
    "renderer/throttled_time_domain.h",
    "renderer/throttling_helper.cc",
    "renderer/throttling_helper.h",
    "renderer/user_model.cc",
    "renderer/user_model.h",
    "renderer/web_frame_scheduler_impl.cc",
    "renderer/web_frame_scheduler_impl.h",
    "renderer/web_view_scheduler_impl.cc",
    "renderer/web_view_scheduler_impl.h",
    "renderer/webthread_impl_for_renderer_scheduler.cc",
    "renderer/webthread_impl_for_renderer_scheduler.h",
    "scheduler_export.h",
  ]

  defines = [ "SCHEDULER_IMPLEMENTATION" ]

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  deps = [
    ":common",
    "//base",
    "//cc:cc",
    "//third_party/WebKit/public:blink",
    "//ui/gfx:gfx",
  ]

  public_deps = [
    "//third_party/WebKit/public:blink",
  ]
}

# GYP version: components/scheduler.gypi:scheduler_common
source_set("common") {
  sources = [
    "common/scheduler_switches.cc",
    "common/scheduler_switches.h",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "base/task_queue_manager_delegate_for_test.cc",
    "base/task_queue_manager_delegate_for_test.h",
    "base/task_queue_manager_unittest.cc",
    "base/task_queue_selector_unittest.cc",
    "base/test_always_fail_time_source.cc",
    "base/test_always_fail_time_source.h",
    "base/test_time_source.cc",
    "base/test_time_source.h",
    "base/time_domain_unittest.cc",
    "base/work_queue_sets_unittest.cc",
    "child/idle_helper_unittest.cc",
    "child/scheduler_helper_unittest.cc",
    "child/scheduler_tqm_delegate_for_test.cc",
    "child/scheduler_tqm_delegate_for_test.h",
    "child/scheduler_tqm_delegate_impl_unittest.cc",
    "child/webthread_impl_for_worker_scheduler_unittest.cc",
    "child/worker_scheduler_impl_unittest.cc",
    "renderer/auto_advancing_virtual_time_domain_unittest.cc",
    "renderer/deadline_task_runner_unittest.cc",
    "renderer/idle_time_estimator_unittest.cc",
    "renderer/render_widget_signals_unittest.cpp",
    "renderer/renderer_scheduler_impl_unittest.cc",
    "renderer/task_cost_estimator_unittest.cc",
    "renderer/throttling_helper_unittest.cc",
    "renderer/user_model_unittest.cc",
    "renderer/web_view_scheduler_impl_unittest.cc",
    "renderer/webthread_impl_for_renderer_scheduler_unittest.cc",
  ]

  deps = [
    ":scheduler",
    "//base/test:test_support",
    "//cc:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}

# GYP version: components/scheduler.gypi:scheduler_test_support
source_set("test_support") {
  testonly = true

  sources = [
    "test/lazy_scheduler_message_loop_delegate_for_tests.cc",
    "test/lazy_scheduler_message_loop_delegate_for_tests.h",
    "test/renderer_scheduler_test_support.cc",
    "test/renderer_scheduler_test_support.h",
  ]

  deps = [
    "//third_party/WebKit/public:blink",
  ]

  public_deps = [
    ":scheduler",
    "//base",
  ]
}
