| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "platform/scheduler/Scheduler.h" | 6 #include "platform/scheduler/Scheduler.h" |
| 7 | 7 |
| 8 #include "platform/TestingPlatformSupport.h" | 8 #include "platform/TestingPlatformSupport.h" |
| 9 #include "platform/TraceLocation.h" | 9 #include "platform/TraceLocation.h" |
| 10 #include "public/platform/Platform.h" | 10 #include "public/platform/Platform.h" |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 } | 425 } |
| 426 | 426 |
| 427 TEST_F(SchedulerTest, TestInputEventTriggersShouldYield) | 427 TEST_F(SchedulerTest, TestInputEventTriggersShouldYield) |
| 428 { | 428 { |
| 429 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); | 429 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 430 m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask)); | 430 m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 431 | 431 |
| 432 EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork()); | 432 EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 433 } | 433 } |
| 434 | 434 |
| 435 TEST_F(SchedulerTest, TestDidReceiveInputEventDoesNotTriggerShouldYield) |
| 436 { |
| 437 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 438 m_scheduler->didReceiveInputEvent(); |
| 439 |
| 440 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 441 } |
| 442 |
| 435 TEST_F(SchedulerTest, TestCompositorEventDoesNotTriggerShouldYield_InNormalMode) | 443 TEST_F(SchedulerTest, TestCompositorEventDoesNotTriggerShouldYield_InNormalMode) |
| 436 { | 444 { |
| 437 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); | 445 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 438 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); | 446 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 439 | 447 |
| 440 EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); | 448 EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 441 } | 449 } |
| 442 | 450 |
| 451 TEST_F(SchedulerTest, TestCompositorEventDoesTriggerShouldYield_InLowLatencyMode
) |
| 452 { |
| 453 m_scheduler->didReceiveInputEvent(); |
| 454 |
| 455 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 456 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 457 |
| 458 EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 459 } |
| 460 |
| 443 TEST_F(SchedulerTest, TestInputEventTriggersLowLatencyMode) | 461 TEST_F(SchedulerTest, TestInputEventTriggersLowLatencyMode) |
| 444 { | 462 { |
| 445 m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask)); | 463 m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 446 runPendingTasks(); | 464 runPendingTasks(); |
| 447 | 465 |
| 448 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); | 466 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 449 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); | 467 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 450 | 468 |
| 451 EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork()); | 469 EXPECT_TRUE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 452 } | 470 } |
| 453 | 471 |
| 454 TEST_F(SchedulerTest, TestCompositorEvent_LowLatencyModeDoesntLastLongWithoutInp
utEvents) | 472 TEST_F(SchedulerTest, TestCompositorEvent_LowLatencyModeDoesntLastLongWithoutInp
utEvents) |
| 455 { | 473 { |
| 456 SchedulerTestingPlatformSupport::setDebugTime(1000.0); | 474 SchedulerTestingPlatformSupport::setDebugTime(1000.0); |
| 457 | 475 |
| 458 // Fire off an input task to put us in low latency mode. | 476 // Fire off an input task to put us in low latency mode. |
| 459 m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask)); | 477 m_scheduler->postInputTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 460 SchedulerTestingPlatformSupport::setDebugTime(1000.5); | 478 SchedulerTestingPlatformSupport::setDebugTime(1000.5); |
| 461 runPendingTasks(); | 479 runPendingTasks(); |
| 462 | 480 |
| 463 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); | 481 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 464 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); | 482 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 465 | 483 |
| 466 EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); | 484 EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 467 } | 485 } |
| 468 | 486 |
| 487 TEST_F(SchedulerTest, testDidReceiveInputEvent_DoesntTriggerLowLatencyModeForLon
g) |
| 488 { |
| 489 SchedulerTestingPlatformSupport::setDebugTime(1000.0); |
| 490 |
| 491 // Note the latency mode gets reset by executeHighPriorityTasks, so we need
a dummy task here |
| 492 // to make sure runPendingTasks triggers executeHighPriorityTasks. |
| 493 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 494 m_scheduler->didReceiveInputEvent(); |
| 495 SchedulerTestingPlatformSupport::setDebugTime(1000.5); |
| 496 runPendingTasks(); |
| 497 |
| 498 ASSERT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 499 m_scheduler->postCompositorTask(FROM_HERE, WTF::bind(&dummyTask)); |
| 500 |
| 501 EXPECT_FALSE(m_scheduler->shouldYieldForHighPriorityWork()); |
| 502 } |
| 503 |
| 469 } // namespace | 504 } // namespace |
| OLD | NEW |