1# Copyright 2017 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//testing/libfuzzer/fuzzer_test.gni") 6import("//third_party/blink/renderer/platform/platform.gni") 7import("//third_party/protobuf/proto_library.gni") 8 9blink_platform_sources("scheduler") { 10 configs += [ "//build/config/compiler:noshadowing" ] 11 12 sources = [ 13 "common/cancelable_closure_holder.cc", 14 "common/cancelable_closure_holder.h", 15 "common/cooperative_scheduling_manager.cc", 16 "common/dummy_schedulers.cc", 17 "common/event_loop.cc", 18 "common/features.cc", 19 "common/features.h", 20 "common/frame_or_worker_scheduler.cc", 21 "common/idle_helper.cc", 22 "common/idle_helper.h", 23 "common/metrics_helper.cc", 24 "common/metrics_helper.h", 25 "common/pollable_thread_safe_flag.cc", 26 "common/pollable_thread_safe_flag.h", 27 "common/post_cancellable_task.cc", 28 "common/process_state.cc", 29 "common/process_state.h", 30 "common/scheduler_helper.cc", 31 "common/scheduler_helper.h", 32 "common/scheduling_lifecycle_state.cc", 33 "common/simple_thread_scheduler.cc", 34 "common/simple_thread_scheduler.h", 35 "common/single_thread_idle_task_runner.cc", 36 "common/single_thread_idle_task_runner.h", 37 "common/thread.cc", 38 "common/thread_cpu_throttler.cc", 39 "common/thread_load_tracker.cc", 40 "common/thread_load_tracker.h", 41 "common/thread_scheduler.cc", 42 "common/thread_scheduler_impl.h", 43 "common/thread_type.cc", 44 "common/throttling/budget_pool.cc", 45 "common/throttling/budget_pool.h", 46 "common/throttling/budget_pool_controller.h", 47 "common/throttling/cpu_time_budget_pool.cc", 48 "common/throttling/cpu_time_budget_pool.h", 49 "common/throttling/task_queue_throttler.cc", 50 "common/throttling/task_queue_throttler.h", 51 "common/throttling/throttled_time_domain.cc", 52 "common/throttling/throttled_time_domain.h", 53 "common/throttling/wake_up_budget_pool.cc", 54 "common/throttling/wake_up_budget_pool.h", 55 "common/tracing_helper.cc", 56 "common/tracing_helper.h", 57 "common/ukm_task_sampler.cc", 58 "common/ukm_task_sampler.h", 59 "common/unprioritized_resource_loading_task_runner_handle.cc", 60 "common/unprioritized_resource_loading_task_runner_handle.h", 61 "common/web_resource_loading_task_runner_handle.cc", 62 "common/web_thread_scheduler.cc", 63 "common/worker_pool.cc", 64 "main_thread/agent_group_scheduler_impl.cc", 65 "main_thread/agent_group_scheduler_impl.h", 66 "main_thread/agent_scheduling_strategy.cc", 67 "main_thread/agent_scheduling_strategy.h", 68 "main_thread/attribution_group.h", 69 "main_thread/auto_advancing_virtual_time_domain.cc", 70 "main_thread/auto_advancing_virtual_time_domain.h", 71 "main_thread/compositor_priority_experiments.cc", 72 "main_thread/compositor_priority_experiments.h", 73 "main_thread/deadline_task_runner.cc", 74 "main_thread/deadline_task_runner.h", 75 "main_thread/find_in_page_budget_pool_controller.cc", 76 "main_thread/find_in_page_budget_pool_controller.h", 77 "main_thread/frame_origin_type.cc", 78 "main_thread/frame_origin_type.h", 79 "main_thread/frame_scheduler_impl.cc", 80 "main_thread/frame_scheduler_impl.h", 81 "main_thread/frame_status.cc", 82 "main_thread/frame_task_queue_controller.cc", 83 "main_thread/frame_task_queue_controller.h", 84 "main_thread/idle_time_estimator.cc", 85 "main_thread/idle_time_estimator.h", 86 "main_thread/main_thread.cc", 87 "main_thread/main_thread.h", 88 "main_thread/main_thread_metrics_helper.cc", 89 "main_thread/main_thread_metrics_helper.h", 90 "main_thread/main_thread_scheduler_helper.cc", 91 "main_thread/main_thread_scheduler_helper.h", 92 "main_thread/main_thread_scheduler_impl.cc", 93 "main_thread/main_thread_scheduler_impl.h", 94 "main_thread/main_thread_task_queue.cc", 95 "main_thread/main_thread_task_queue.h", 96 "main_thread/memory_purge_manager.cc", 97 "main_thread/memory_purge_manager.h", 98 "main_thread/non_waking_time_domain.cc", 99 "main_thread/non_waking_time_domain.h", 100 "main_thread/page_scheduler_impl.cc", 101 "main_thread/page_scheduler_impl.h", 102 "main_thread/page_visibility_state.cc", 103 "main_thread/page_visibility_state.h", 104 "main_thread/pending_user_input.cc", 105 "main_thread/pending_user_input.h", 106 "main_thread/render_widget_signals.cc", 107 "main_thread/render_widget_signals.h", 108 "main_thread/resource_loading_task_runner_handle_impl.cc", 109 "main_thread/resource_loading_task_runner_handle_impl.h", 110 "main_thread/task_type_names.cc", 111 "main_thread/task_type_names.h", 112 "main_thread/use_case.h", 113 "main_thread/user_model.cc", 114 "main_thread/user_model.h", 115 "main_thread/web_render_widget_scheduling_state.cc", 116 "main_thread/web_scheduling_priority.cc", 117 "main_thread/web_scheduling_task_queue_impl.cc", 118 "main_thread/web_scheduling_task_queue_impl.h", 119 "main_thread/web_scoped_virtual_time_pauser.cc", 120 "main_thread/widget_scheduler.cc", 121 "main_thread/widget_scheduler.h", 122 "public/agent_group_scheduler.h", 123 "public/aggregated_metric_reporter.h", 124 "public/cooperative_scheduling_manager.h", 125 "public/dummy_schedulers.h", 126 "public/event_loop.h", 127 "public/frame_or_worker_scheduler.h", 128 "public/frame_scheduler.h", 129 "public/frame_status.h", 130 "public/page_lifecycle_state.h", 131 "public/page_scheduler.h", 132 "public/post_cancellable_task.h", 133 "public/post_cross_thread_task.h", 134 "public/rail_mode_observer.h", 135 "public/scheduling_lifecycle_state.h", 136 "public/scheduling_policy.h", 137 "public/thread.h", 138 "public/thread_cpu_throttler.h", 139 "public/thread_scheduler.h", 140 "public/thread_type.h", 141 "public/web_scheduling_priority.h", 142 "public/web_scheduling_task_queue.h", 143 "public/worker_pool.h", 144 "public/worker_scheduler.h", 145 "worker/compositor_metrics_helper.cc", 146 "worker/compositor_metrics_helper.h", 147 "worker/compositor_thread.cc", 148 "worker/compositor_thread.h", 149 "worker/compositor_thread_scheduler.cc", 150 "worker/compositor_thread_scheduler.h", 151 "worker/non_main_thread_scheduler_helper.cc", 152 "worker/non_main_thread_scheduler_helper.h", 153 "worker/non_main_thread_scheduler_impl.cc", 154 "worker/non_main_thread_scheduler_impl.h", 155 "worker/non_main_thread_task_queue.cc", 156 "worker/non_main_thread_task_queue.h", 157 "worker/worker_metrics_helper.cc", 158 "worker/worker_metrics_helper.h", 159 "worker/worker_scheduler.cc", 160 "worker/worker_scheduler_proxy.cc", 161 "worker/worker_scheduler_proxy.h", 162 "worker/worker_thread.cc", 163 "worker/worker_thread.h", 164 "worker/worker_thread_scheduler.cc", 165 "worker/worker_thread_scheduler.h", 166 ] 167 168 deps = [ 169 "//base", 170 "//cc", 171 "//components/scheduling_metrics", 172 "//device/base/synchronization", 173 "//services/metrics/public/cpp:ukm_builders", 174 "//services/metrics/public/mojom", 175 "//third_party/blink/renderer/platform:make_platform_generated", 176 "//third_party/blink/renderer/platform/heap:heap", 177 "//third_party/blink/renderer/platform/instrumentation", 178 "//third_party/blink/renderer/platform/wtf", 179 "//v8", 180 ] 181 182 allow_circular_includes_from = [ 183 "//third_party/blink/renderer/platform/heap:heap", 184 "//third_party/blink/renderer/platform/instrumentation", 185 ] 186} 187 188source_set("test_support") { 189 testonly = true 190 191 sources = [ 192 "test/fake_frame_scheduler.h", 193 "test/fake_page_scheduler.h", 194 "test/fake_task_runner.cc", 195 "test/fake_task_runner.h", 196 "test/recording_task_time_observer.cc", 197 "test/recording_task_time_observer.h", 198 "test/renderer_scheduler_test_support.cc", 199 "test/web_fake_thread_scheduler.cc", 200 "test/web_fake_widget_scheduler.cc", 201 "test/web_fake_widget_scheduler.h", 202 ] 203 204 deps = [ 205 "//base", 206 "//base/test:test_support", 207 "//mojo/public/cpp/bindings", 208 "//skia", 209 "//testing/gmock", 210 "//third_party/blink/public:test_headers", 211 "//third_party/blink/public/mojom:mojom_platform_blink_headers", 212 "//third_party/blink/renderer/platform:platform", 213 ] 214 215 configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ] 216} 217 218source_set("unit_tests") { 219 testonly = true 220 221 sources = [ 222 "common/cooperative_scheduling_manager_unittest.cc", 223 "common/idle_helper_unittest.cc", 224 "common/metrics_helper_unittest.cc", 225 "common/post_cancellable_task_unittest.cc", 226 "common/scheduler_helper_unittest.cc", 227 "common/thread_load_tracker_unittest.cc", 228 "common/throttling/budget_pool_unittest.cc", 229 "common/throttling/task_queue_throttler_unittest.cc", 230 "common/tracing_helper_unittest.cc", 231 "common/ukm_task_sampler_unittest.cc", 232 "common/worker_pool_unittest.cc", 233 "main_thread/agent_scheduling_strategy_unittest.cc", 234 "main_thread/auto_advancing_virtual_time_domain_unittest.cc", 235 "main_thread/deadline_task_runner_unittest.cc", 236 "main_thread/frame_scheduler_impl_unittest.cc", 237 "main_thread/frame_task_queue_controller_unittest.cc", 238 "main_thread/idle_time_estimator_unittest.cc", 239 "main_thread/main_thread_metrics_helper_unittest.cc", 240 "main_thread/main_thread_scheduler_impl_unittest.cc", 241 "main_thread/main_thread_unittest.cc", 242 "main_thread/memory_purge_manager_unittest.cc", 243 "main_thread/page_scheduler_impl_unittest.cc", 244 "main_thread/pending_user_input_unittest.cc", 245 "main_thread/render_widget_signals_unittest.cc", 246 "main_thread/user_model_unittest.cc", 247 "worker/worker_scheduler_proxy_unittest.cc", 248 "worker/worker_scheduler_unittest.cc", 249 "worker/worker_thread_scheduler_unittest.cc", 250 "worker/worker_thread_unittest.cc", 251 ] 252 253 deps = [ 254 "//base", 255 "//base/test:test_support", 256 "//components/ukm:test_support", 257 "//testing/gmock", 258 "//testing/gtest", 259 "//third_party/blink/public:test_support", 260 "//third_party/googletest:gmock", 261 ] 262 263 configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ] 264} 265 266source_set("scheduler_fuzzer_tests") { 267 testonly = true 268 269 sources = [] 270 deps = [ 271 "//base", 272 "//base/test:test_support", 273 "//testing/gmock", 274 "//testing/gtest", 275 "//third_party/blink/renderer/platform/scheduler:test_support", 276 ] 277 278 if (is_linux || is_chromeos) { 279 sources += [ 280 "test/fuzzer/sequence_manager_fuzzer_processor.cc", 281 "test/fuzzer/sequence_manager_fuzzer_processor.h", 282 "test/fuzzer/sequence_manager_fuzzer_processor_unittest.cc", 283 "test/fuzzer/simple_thread_impl.cc", 284 "test/fuzzer/simple_thread_impl.h", 285 "test/fuzzer/task_queue_with_voters.h", 286 "test/fuzzer/thread_manager.cc", 287 "test/fuzzer/thread_manager.h", 288 "test/fuzzer/thread_pool_manager.cc", 289 "test/fuzzer/thread_pool_manager.h", 290 ] 291 292 deps += [ 293 ":sequence_manager_test_description_proto", 294 "//third_party/blink/renderer/platform:platform", 295 "//third_party/libprotobuf-mutator", 296 ] 297 } 298 299 configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ] 300} 301 302fuzzer_test("sequence_manager_fuzzer") { 303 sources = [ 304 "test/fuzzer/sequence_manager_fuzzer.cc", 305 "test/fuzzer/sequence_manager_fuzzer_processor.cc", 306 "test/fuzzer/sequence_manager_fuzzer_processor.h", 307 "test/fuzzer/simple_thread_impl.cc", 308 "test/fuzzer/simple_thread_impl.h", 309 "test/fuzzer/task_queue_with_voters.h", 310 "test/fuzzer/thread_manager.cc", 311 "test/fuzzer/thread_manager.h", 312 "test/fuzzer/thread_pool_manager.cc", 313 "test/fuzzer/thread_pool_manager.h", 314 ] 315 316 deps = [ 317 ":sequence_manager_test_description_proto", 318 "//base/test:test_support", 319 "//third_party/blink/renderer/platform:blink_fuzzer_test_support", 320 "//third_party/blink/renderer/platform:platform", 321 "//third_party/blink/renderer/platform:test_support", 322 "//third_party/libprotobuf-mutator", 323 ] 324} 325 326proto_library("sequence_manager_test_description_proto") { 327 sources = [ "test/fuzzer/proto/sequence_manager_test_description.proto" ] 328} 329