OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/scheduler/renderer/task_queue_throttler.h" | 5 #include "platform/scheduler/renderer/task_queue_throttler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 ExpectUnthrottled(timer_queue_); | 264 ExpectUnthrottled(timer_queue_); |
265 | 265 |
266 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); | 266 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); |
267 ExpectThrottled(timer_queue_); | 267 ExpectThrottled(timer_queue_); |
268 } | 268 } |
269 | 269 |
270 TEST_F(TaskQueueThrottlerTest, | 270 TEST_F(TaskQueueThrottlerTest, |
271 ThrotlingAnEmptyQueueDoesNotPostPumpThrottledTasksLocked) { | 271 ThrotlingAnEmptyQueueDoesNotPostPumpThrottledTasksLocked) { |
272 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); | 272 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); |
273 | 273 |
274 EXPECT_TRUE(task_queue_throttler_->task_runner()->IsEmpty()); | 274 EXPECT_TRUE(task_queue_throttler_->task_queue()->IsEmpty()); |
275 } | 275 } |
276 | 276 |
277 TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_EnabledQueue) { | 277 TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_EnabledQueue) { |
278 task_queue_throttler_->OnQueueNextWakeUpChanged(timer_queue_.get(), | 278 task_queue_throttler_->OnQueueNextWakeUpChanged(timer_queue_.get(), |
279 base::TimeTicks()); | 279 base::TimeTicks()); |
280 // Check PostPumpThrottledTasksLocked was called. | 280 // Check PostPumpThrottledTasksLocked was called. |
281 EXPECT_FALSE(task_queue_throttler_->task_runner()->IsEmpty()); | 281 EXPECT_FALSE(task_queue_throttler_->task_queue()->IsEmpty()); |
282 } | 282 } |
283 | 283 |
284 TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_DisabledQueue) { | 284 TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_DisabledQueue) { |
285 std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = | 285 std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = |
286 timer_queue_->CreateQueueEnabledVoter(); | 286 timer_queue_->CreateQueueEnabledVoter(); |
287 voter->SetQueueEnabled(false); | 287 voter->SetQueueEnabled(false); |
288 | 288 |
289 task_queue_throttler_->OnQueueNextWakeUpChanged(timer_queue_.get(), | 289 task_queue_throttler_->OnQueueNextWakeUpChanged(timer_queue_.get(), |
290 base::TimeTicks()); | 290 base::TimeTicks()); |
291 // Check PostPumpThrottledTasksLocked was not called. | 291 // Check PostPumpThrottledTasksLocked was not called. |
292 EXPECT_TRUE(task_queue_throttler_->task_runner()->IsEmpty()); | 292 EXPECT_TRUE(task_queue_throttler_->task_queue()->IsEmpty()); |
293 } | 293 } |
294 | 294 |
295 TEST_F(TaskQueueThrottlerTest, | 295 TEST_F(TaskQueueThrottlerTest, |
296 ThrottlingADisabledQueueDoesNotPostPumpThrottledTasks) { | 296 ThrottlingADisabledQueueDoesNotPostPumpThrottledTasks) { |
297 timer_queue_->PostTask(FROM_HERE, base::Bind(&NopTask)); | 297 timer_queue_->PostTask(FROM_HERE, base::Bind(&NopTask)); |
298 | 298 |
299 std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = | 299 std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = |
300 timer_queue_->CreateQueueEnabledVoter(); | 300 timer_queue_->CreateQueueEnabledVoter(); |
301 voter->SetQueueEnabled(false); | 301 voter->SetQueueEnabled(false); |
302 | 302 |
303 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); | 303 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); |
304 EXPECT_TRUE(task_queue_throttler_->task_runner()->IsEmpty()); | 304 EXPECT_TRUE(task_queue_throttler_->task_queue()->IsEmpty()); |
305 | 305 |
306 // Enabling it should trigger a call to PostPumpThrottledTasksLocked. | 306 // Enabling it should trigger a call to PostPumpThrottledTasksLocked. |
307 voter->SetQueueEnabled(true); | 307 voter->SetQueueEnabled(true); |
308 EXPECT_FALSE(task_queue_throttler_->task_runner()->IsEmpty()); | 308 EXPECT_FALSE(task_queue_throttler_->task_queue()->IsEmpty()); |
309 } | 309 } |
310 | 310 |
311 TEST_F(TaskQueueThrottlerTest, | 311 TEST_F(TaskQueueThrottlerTest, |
312 ThrottlingADisabledQueueDoesNotPostPumpThrottledTasks_DelayedTask) { | 312 ThrottlingADisabledQueueDoesNotPostPumpThrottledTasks_DelayedTask) { |
313 timer_queue_->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), | 313 timer_queue_->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), |
314 base::TimeDelta::FromMilliseconds(1)); | 314 base::TimeDelta::FromMilliseconds(1)); |
315 | 315 |
316 std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = | 316 std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = |
317 timer_queue_->CreateQueueEnabledVoter(); | 317 timer_queue_->CreateQueueEnabledVoter(); |
318 voter->SetQueueEnabled(false); | 318 voter->SetQueueEnabled(false); |
319 | 319 |
320 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); | 320 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); |
321 EXPECT_TRUE(task_queue_throttler_->task_runner()->IsEmpty()); | 321 EXPECT_TRUE(task_queue_throttler_->task_queue()->IsEmpty()); |
322 | 322 |
323 // Enabling it should trigger a call to PostPumpThrottledTasksLocked. | 323 // Enabling it should trigger a call to PostPumpThrottledTasksLocked. |
324 voter->SetQueueEnabled(true); | 324 voter->SetQueueEnabled(true); |
325 EXPECT_FALSE(task_queue_throttler_->task_runner()->IsEmpty()); | 325 EXPECT_FALSE(task_queue_throttler_->task_queue()->IsEmpty()); |
326 } | 326 } |
327 | 327 |
328 TEST_F(TaskQueueThrottlerTest, WakeUpForNonDelayedTask) { | 328 TEST_F(TaskQueueThrottlerTest, WakeUpForNonDelayedTask) { |
329 std::vector<base::TimeTicks> run_times; | 329 std::vector<base::TimeTicks> run_times; |
330 | 330 |
331 // Nothing is posted on timer_queue_ so PumpThrottledTasks will not tick. | 331 // Nothing is posted on timer_queue_ so PumpThrottledTasks will not tick. |
332 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); | 332 task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); |
333 | 333 |
334 // Posting a task should trigger the pump. | 334 // Posting a task should trigger the pump. |
335 timer_queue_->PostTask(FROM_HERE, | 335 timer_queue_->PostTask(FROM_HERE, |
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 run_times, | 1050 run_times, |
1051 ElementsAre( | 1051 ElementsAre( |
1052 base::TimeTicks() + base::TimeDelta::FromMilliseconds(1000), | 1052 base::TimeTicks() + base::TimeDelta::FromMilliseconds(1000), |
1053 base::TimeTicks() + base::TimeDelta::FromMilliseconds(3000), | 1053 base::TimeTicks() + base::TimeDelta::FromMilliseconds(3000), |
1054 base::TimeTicks() + base::TimeDelta::FromMilliseconds(6000), | 1054 base::TimeTicks() + base::TimeDelta::FromMilliseconds(6000), |
1055 base::TimeTicks() + base::TimeDelta::FromMilliseconds(26000))); | 1055 base::TimeTicks() + base::TimeDelta::FromMilliseconds(26000))); |
1056 } | 1056 } |
1057 | 1057 |
1058 } // namespace scheduler | 1058 } // namespace scheduler |
1059 } // namespace blink | 1059 } // namespace blink |
OLD | NEW |