Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: cc/scheduler/scheduler_unittest.cc

Issue 1425973003: cc: Don't attempt main thread synchronization if it is slow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase; change names; use enum class Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/scheduler/scheduler_state_machine_unittest.cc ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/scheduler/scheduler.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 27 matching lines...) Expand all
38 38
39 #define EXPECT_SCOPED(statements) \ 39 #define EXPECT_SCOPED(statements) \
40 { \ 40 { \
41 SCOPED_TRACE(""); \ 41 SCOPED_TRACE(""); \
42 statements; \ 42 statements; \
43 } 43 }
44 44
45 namespace cc { 45 namespace cc {
46 namespace { 46 namespace {
47 47
48 base::TimeDelta kSlowDuration = base::TimeDelta::FromSeconds(1);
49 base::TimeDelta kFastDuration = base::TimeDelta::FromMilliseconds(1);
50
48 class FakeSchedulerClient : public SchedulerClient { 51 class FakeSchedulerClient : public SchedulerClient {
49 public: 52 public:
50 FakeSchedulerClient() 53 FakeSchedulerClient()
51 : automatic_swap_ack_(true), 54 : automatic_swap_ack_(true),
52 scheduler_(nullptr) { 55 scheduler_(nullptr) {
53 Reset(); 56 Reset();
54 } 57 }
55 58
56 void Reset() { 59 void Reset() {
57 actions_.clear(); 60 actions_.clear();
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 fake_compositor_timing_history_ = fake_compositor_timing_history.get(); 272 fake_compositor_timing_history_ = fake_compositor_timing_history.get();
270 273
271 scheduler_ = TestScheduler::Create( 274 scheduler_ = TestScheduler::Create(
272 now_src_.get(), client_.get(), scheduler_settings_, 0, 275 now_src_.get(), client_.get(), scheduler_settings_, 0,
273 task_runner_.get(), fake_external_begin_frame_source_.get(), 276 task_runner_.get(), fake_external_begin_frame_source_.get(),
274 std::move(fake_compositor_timing_history)); 277 std::move(fake_compositor_timing_history));
275 DCHECK(scheduler_); 278 DCHECK(scheduler_);
276 client_->set_scheduler(scheduler_.get()); 279 client_->set_scheduler(scheduler_.get());
277 280
278 // Use large estimates by default to avoid latency recovery in most tests. 281 // Use large estimates by default to avoid latency recovery in most tests.
279 base::TimeDelta slow_duration = base::TimeDelta::FromSeconds(1); 282 fake_compositor_timing_history_->SetAllEstimatesTo(kSlowDuration);
280 fake_compositor_timing_history_->SetAllEstimatesTo(slow_duration);
281 283
282 return scheduler_.get(); 284 return scheduler_.get();
283 } 285 }
284 286
285 void CreateSchedulerAndInitSurface() { 287 void CreateSchedulerAndInitSurface() {
286 CreateScheduler(); 288 CreateScheduler();
287 EXPECT_SCOPED(InitializeOutputSurfaceAndFirstCommit()); 289 EXPECT_SCOPED(InitializeOutputSurfaceAndFirstCommit());
288 } 290 }
289 291
290 void SetUpScheduler(bool initSurface) { 292 void SetUpScheduler(bool initSurface) {
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 } 419 }
418 420
419 void CheckMainFrameSkippedAfterLateCommit(bool expect_send_begin_main_frame); 421 void CheckMainFrameSkippedAfterLateCommit(bool expect_send_begin_main_frame);
420 void ImplFrameSkippedAfterLateSwapAck(bool swap_ack_before_deadline); 422 void ImplFrameSkippedAfterLateSwapAck(bool swap_ack_before_deadline);
421 void ImplFrameIsNotSkippedAfterLateSwapAck(); 423 void ImplFrameIsNotSkippedAfterLateSwapAck();
422 void BeginFramesNotFromClient(bool use_external_begin_frame_source, 424 void BeginFramesNotFromClient(bool use_external_begin_frame_source,
423 bool throttle_frame_production); 425 bool throttle_frame_production);
424 void BeginFramesNotFromClient_SwapThrottled( 426 void BeginFramesNotFromClient_SwapThrottled(
425 bool use_external_begin_frame_source, 427 bool use_external_begin_frame_source,
426 bool throttle_frame_production); 428 bool throttle_frame_production);
429 bool BeginMainFrameOnCriticalPath(TreePriority tree_priority,
430 ScrollHandlerState scroll_handler_state,
431 base::TimeDelta durations);
427 432
428 scoped_ptr<base::SimpleTestTickClock> now_src_; 433 scoped_ptr<base::SimpleTestTickClock> now_src_;
429 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; 434 scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
430 scoped_ptr<FakeExternalBeginFrameSource> fake_external_begin_frame_source_; 435 scoped_ptr<FakeExternalBeginFrameSource> fake_external_begin_frame_source_;
431 SchedulerSettings scheduler_settings_; 436 SchedulerSettings scheduler_settings_;
432 scoped_ptr<FakeSchedulerClient> client_; 437 scoped_ptr<FakeSchedulerClient> client_;
433 scoped_ptr<TestScheduler> scheduler_; 438 scoped_ptr<TestScheduler> scheduler_;
434 FakeCompositorTimingHistory* fake_compositor_timing_history_; 439 FakeCompositorTimingHistory* fake_compositor_timing_history_;
435 }; 440 };
436 441
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 client_->Reset(); 483 client_->Reset();
479 EXPECT_SCOPED(AdvanceFrame()); 484 EXPECT_SCOPED(AdvanceFrame());
480 EXPECT_TRUE(client_->begin_frame_is_sent_to_children()); 485 EXPECT_TRUE(client_->begin_frame_is_sent_to_children());
481 } 486 }
482 487
483 TEST_F(SchedulerTest, SendBeginFramesToChildrenDeadlineNotAdjusted) { 488 TEST_F(SchedulerTest, SendBeginFramesToChildrenDeadlineNotAdjusted) {
484 // Set up client with specified estimates. 489 // Set up client with specified estimates.
485 scheduler_settings_.use_external_begin_frame_source = true; 490 scheduler_settings_.use_external_begin_frame_source = true;
486 SetUpScheduler(true); 491 SetUpScheduler(true);
487 492
488 fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate( 493 fake_compositor_timing_history_
489 base::TimeDelta::FromMilliseconds(2)); 494 ->SetBeginMainFrameStartToCommitDurationEstimate(
495 base::TimeDelta::FromMilliseconds(2));
490 fake_compositor_timing_history_->SetCommitToReadyToActivateDurationEstimate( 496 fake_compositor_timing_history_->SetCommitToReadyToActivateDurationEstimate(
491 base::TimeDelta::FromMilliseconds(4)); 497 base::TimeDelta::FromMilliseconds(4));
492 fake_compositor_timing_history_->SetDrawDurationEstimate( 498 fake_compositor_timing_history_->SetDrawDurationEstimate(
493 base::TimeDelta::FromMilliseconds(1)); 499 base::TimeDelta::FromMilliseconds(1));
494 500
495 EXPECT_FALSE(client_->needs_begin_frames()); 501 EXPECT_FALSE(client_->needs_begin_frames());
496 scheduler_->SetChildrenNeedBeginFrames(true); 502 scheduler_->SetChildrenNeedBeginFrames(true);
497 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_); 503 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
498 EXPECT_TRUE(client_->needs_begin_frames()); 504 EXPECT_TRUE(client_->needs_begin_frames());
499 505
(...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after
1374 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline()); 1380 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline());
1375 1381
1376 client_->Reset(); 1382 client_->Reset();
1377 scheduler_->SetNeedsBeginMainFrame(); 1383 scheduler_->SetNeedsBeginMainFrame();
1378 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline()); 1384 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline());
1379 EXPECT_SCOPED(AdvanceFrame()); 1385 EXPECT_SCOPED(AdvanceFrame());
1380 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline()); 1386 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline());
1381 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); 1387 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
1382 EXPECT_EQ(expect_send_begin_main_frame, 1388 EXPECT_EQ(expect_send_begin_main_frame,
1383 scheduler_->MainThreadMissedLastDeadline()); 1389 scheduler_->MainThreadMissedLastDeadline());
1390 EXPECT_TRUE(client_->HasAction("WillBeginImplFrame"));
1384 EXPECT_EQ(expect_send_begin_main_frame, 1391 EXPECT_EQ(expect_send_begin_main_frame,
1385 client_->HasAction("ScheduledActionSendBeginMainFrame")); 1392 client_->HasAction("ScheduledActionSendBeginMainFrame"));
1386 } 1393 }
1387 1394
1388 TEST_F(SchedulerTest, MainFrameSkippedAfterLateCommit) { 1395 TEST_F(SchedulerTest, MainFrameSkippedAfterLateCommit) {
1389 scheduler_settings_.use_external_begin_frame_source = true; 1396 scheduler_settings_.use_external_begin_frame_source = true;
1390 SetUpScheduler(true); 1397 SetUpScheduler(true);
1391 1398 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1392 auto fast_duration = base::TimeDelta::FromMilliseconds(1);
1393 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration);
1394 1399
1395 bool expect_send_begin_main_frame = false; 1400 bool expect_send_begin_main_frame = false;
1396 EXPECT_SCOPED( 1401 EXPECT_SCOPED(
1397 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame)); 1402 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1398 } 1403 }
1399 1404
1405 // Response times of BeginMainFrame's without the critical path flag set
1406 // should not affect whether we recover latency or not.
1407 TEST_F(
1408 SchedulerTest,
1409 MainFrameSkippedAfterLateCommit_LongBeginMainFrameQueueDurationNotCritical) {
1410 scheduler_settings_.use_external_begin_frame_source = true;
1411 SetUpScheduler(true);
1412 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1413 fake_compositor_timing_history_
1414 ->SetBeginMainFrameQueueDurationNotCriticalEstimate(kSlowDuration);
1415
1416 bool expect_send_begin_main_frame = false;
1417 EXPECT_SCOPED(
1418 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1419 }
1420
1421 // Response times of BeginMainFrame's with the critical path flag set
1422 // should affect whether we recover latency or not.
1423 TEST_F(
1424 SchedulerTest,
1425 MainFrameNotSkippedAfterLateCommit_LongBeginMainFrameQueueDurationCritical) {
1426 scheduler_settings_.use_external_begin_frame_source = true;
1427 SetUpScheduler(true);
1428 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1429 fake_compositor_timing_history_
1430 ->SetBeginMainFrameQueueDurationCriticalEstimate(kSlowDuration);
1431 fake_compositor_timing_history_
1432 ->SetBeginMainFrameQueueDurationNotCriticalEstimate(kSlowDuration);
1433
1434 bool expect_send_begin_main_frame = true;
1435 EXPECT_SCOPED(
1436 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1437 }
1438
1400 TEST_F(SchedulerTest, 1439 TEST_F(SchedulerTest,
1401 MainFrameNotSkippedAfterLateCommitInPreferImplLatencyMode) { 1440 MainFrameNotSkippedAfterLateCommitInPreferImplLatencyMode) {
1402 scheduler_settings_.use_external_begin_frame_source = true; 1441 scheduler_settings_.use_external_begin_frame_source = true;
1403 SetUpScheduler(true); 1442 SetUpScheduler(true);
1404 scheduler_->SetImplLatencyTakesPriority(true); 1443 scheduler_->SetTreePrioritiesAndScrollState(
1405 1444 SMOOTHNESS_TAKES_PRIORITY,
1406 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1445 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER);
1407 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1446 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1408 1447
1409 bool expect_send_begin_main_frame = true; 1448 bool expect_send_begin_main_frame = true;
1410 EXPECT_SCOPED( 1449 EXPECT_SCOPED(
1411 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame)); 1450 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1412 } 1451 }
1413 1452
1414 TEST_F(SchedulerTest, 1453 TEST_F(SchedulerTest,
1415 MainFrameNotSkippedAfterLateCommit_CommitEstimateTooLong) { 1454 MainFrameNotSkippedAfterLateCommit_CommitEstimateTooLong) {
1416 scheduler_settings_.use_external_begin_frame_source = true; 1455 scheduler_settings_.use_external_begin_frame_source = true;
1417 SetUpScheduler(true); 1456 SetUpScheduler(true);
1418 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1457 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1419 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1458 fake_compositor_timing_history_
1420 auto slow_duration = base::TimeDelta::FromSeconds(1); 1459 ->SetBeginMainFrameStartToCommitDurationEstimate(kSlowDuration);
1421 fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
1422 slow_duration);
1423 1460
1424 bool expect_send_begin_main_frame = true; 1461 bool expect_send_begin_main_frame = true;
1425 EXPECT_SCOPED( 1462 EXPECT_SCOPED(
1426 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame)); 1463 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1427 } 1464 }
1428 1465
1429 TEST_F(SchedulerTest, 1466 TEST_F(SchedulerTest,
1430 MainFrameNotSkippedAfterLateCommit_ReadyToActivateEstimateTooLong) { 1467 MainFrameNotSkippedAfterLateCommit_ReadyToActivateEstimateTooLong) {
1431 scheduler_settings_.use_external_begin_frame_source = true; 1468 scheduler_settings_.use_external_begin_frame_source = true;
1432 SetUpScheduler(true); 1469 SetUpScheduler(true);
1433 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1470 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1434 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration);
1435 auto slow_duration = base::TimeDelta::FromSeconds(1);
1436 fake_compositor_timing_history_->SetCommitToReadyToActivateDurationEstimate( 1471 fake_compositor_timing_history_->SetCommitToReadyToActivateDurationEstimate(
1437 slow_duration); 1472 kSlowDuration);
1438 1473
1439 bool expect_send_begin_main_frame = true; 1474 bool expect_send_begin_main_frame = true;
1440 EXPECT_SCOPED( 1475 EXPECT_SCOPED(
1441 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame)); 1476 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1442 } 1477 }
1443 1478
1444 TEST_F(SchedulerTest, 1479 TEST_F(SchedulerTest,
1445 MainFrameNotSkippedAfterLateCommit_ActivateEstimateTooLong) { 1480 MainFrameNotSkippedAfterLateCommit_ActivateEstimateTooLong) {
1446 scheduler_settings_.use_external_begin_frame_source = true; 1481 scheduler_settings_.use_external_begin_frame_source = true;
1447 SetUpScheduler(true); 1482 SetUpScheduler(true);
1448 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1483 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1449 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1484 fake_compositor_timing_history_->SetActivateDurationEstimate(kSlowDuration);
1450 auto slow_duration = base::TimeDelta::FromSeconds(1);
1451 fake_compositor_timing_history_->SetActivateDurationEstimate(slow_duration);
1452 1485
1453 bool expect_send_begin_main_frame = true; 1486 bool expect_send_begin_main_frame = true;
1454 EXPECT_SCOPED( 1487 EXPECT_SCOPED(
1455 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame)); 1488 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1456 } 1489 }
1457 1490
1458 TEST_F(SchedulerTest, MainFrameNotSkippedAfterLateCommit_DrawEstimateTooLong) { 1491 TEST_F(SchedulerTest, MainFrameNotSkippedAfterLateCommit_DrawEstimateTooLong) {
1459 scheduler_settings_.use_external_begin_frame_source = true; 1492 scheduler_settings_.use_external_begin_frame_source = true;
1460 SetUpScheduler(true); 1493 SetUpScheduler(true);
1461 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1494 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1462 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1495 fake_compositor_timing_history_->SetDrawDurationEstimate(kSlowDuration);
1463 auto slow_duration = base::TimeDelta::FromSeconds(1);
1464 fake_compositor_timing_history_->SetDrawDurationEstimate(slow_duration);
1465 1496
1466 bool expect_send_begin_main_frame = true; 1497 bool expect_send_begin_main_frame = true;
1467 EXPECT_SCOPED( 1498 EXPECT_SCOPED(
1468 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame)); 1499 CheckMainFrameSkippedAfterLateCommit(expect_send_begin_main_frame));
1469 } 1500 }
1470 1501
1471 void SchedulerTest::ImplFrameSkippedAfterLateSwapAck( 1502 void SchedulerTest::ImplFrameSkippedAfterLateSwapAck(
1472 bool swap_ack_before_deadline) { 1503 bool swap_ack_before_deadline) {
1473 // To get into a high latency state, this test disables automatic swap acks. 1504 // To get into a high latency state, this test disables automatic swap acks.
1474 client_->SetAutomaticSwapAck(false); 1505 client_->SetAutomaticSwapAck(false);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 EXPECT_ACTION("ScheduledActionActivateSyncTree", client_, 1, 4); 1573 EXPECT_ACTION("ScheduledActionActivateSyncTree", client_, 1, 4);
1543 EXPECT_ACTION("ScheduledActionAnimate", client_, 2, 4); 1574 EXPECT_ACTION("ScheduledActionAnimate", client_, 2, 4);
1544 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 3, 4); 1575 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 3, 4);
1545 } 1576 }
1546 } 1577 }
1547 1578
1548 TEST_F(SchedulerTest, 1579 TEST_F(SchedulerTest,
1549 ImplFrameSkippedAfterLateSwapAck_FastEstimates_SwapAckThenDeadline) { 1580 ImplFrameSkippedAfterLateSwapAck_FastEstimates_SwapAckThenDeadline) {
1550 scheduler_settings_.use_external_begin_frame_source = true; 1581 scheduler_settings_.use_external_begin_frame_source = true;
1551 SetUpScheduler(true); 1582 SetUpScheduler(true);
1552 1583 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1553 auto fast_duration = base::TimeDelta::FromMilliseconds(1);
1554 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration);
1555 1584
1556 bool swap_ack_before_deadline = true; 1585 bool swap_ack_before_deadline = true;
1557 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline)); 1586 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline));
1558 } 1587 }
1559 1588
1560 TEST_F(SchedulerTest, 1589 TEST_F(SchedulerTest,
1561 ImplFrameSkippedAfterLateSwapAck_FastEstimates_DeadlineThenSwapAck) { 1590 ImplFrameSkippedAfterLateSwapAck_FastEstimates_DeadlineThenSwapAck) {
1562 scheduler_settings_.use_external_begin_frame_source = true; 1591 scheduler_settings_.use_external_begin_frame_source = true;
1563 SetUpScheduler(true); 1592 SetUpScheduler(true);
1564 1593 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1565 auto fast_duration = base::TimeDelta::FromMilliseconds(1);
1566 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration);
1567 1594
1568 bool swap_ack_before_deadline = false; 1595 bool swap_ack_before_deadline = false;
1569 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline)); 1596 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline));
1597 }
1598
1599 TEST_F(
1600 SchedulerTest,
1601 ImplFrameSkippedAfterLateSwapAck_LongBeginMainFrameQueueDurationNotCritical) {
1602 scheduler_settings_.use_external_begin_frame_source = true;
1603 SetUpScheduler(true);
1604 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1605 fake_compositor_timing_history_
1606 ->SetBeginMainFrameQueueDurationNotCriticalEstimate(kSlowDuration);
1607
1608 bool swap_ack_before_deadline = false;
1609 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline));
1570 } 1610 }
1571 1611
1572 TEST_F(SchedulerTest, 1612 TEST_F(SchedulerTest,
1573 ImplFrameSkippedAfterLateSwapAck_ImplLatencyTakesPriority) { 1613 ImplFrameSkippedAfterLateSwapAck_ImplLatencyTakesPriority) {
1574 scheduler_settings_.use_external_begin_frame_source = true; 1614 scheduler_settings_.use_external_begin_frame_source = true;
1575 SetUpScheduler(true); 1615 SetUpScheduler(true);
1576 1616
1577 // Even if every estimate related to the main thread is slow, we should 1617 // Even if every estimate related to the main thread is slow, we should
1578 // still expect to recover impl thread latency if the draw is fast and we 1618 // still expect to recover impl thread latency if the draw is fast and we
1579 // are in impl latency takes priority. 1619 // are in impl latency takes priority.
1580 scheduler_->SetImplLatencyTakesPriority(true); 1620 scheduler_->SetTreePrioritiesAndScrollState(
1581 auto slow_duration = base::TimeDelta::FromSeconds(1); 1621 SMOOTHNESS_TAKES_PRIORITY,
1582 fake_compositor_timing_history_->SetAllEstimatesTo(slow_duration); 1622 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER);
1583 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1623 fake_compositor_timing_history_->SetAllEstimatesTo(kSlowDuration);
1584 fake_compositor_timing_history_->SetDrawDurationEstimate(fast_duration); 1624 fake_compositor_timing_history_->SetDrawDurationEstimate(kFastDuration);
1585 1625
1586 bool swap_ack_before_deadline = false; 1626 bool swap_ack_before_deadline = false;
1587 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline)); 1627 EXPECT_SCOPED(ImplFrameSkippedAfterLateSwapAck(swap_ack_before_deadline));
1588 } 1628 }
1589 1629
1590 TEST_F(SchedulerTest, 1630 TEST_F(SchedulerTest,
1591 ImplFrameSkippedAfterLateSwapAck_OnlyImplSideUpdatesExpected) { 1631 ImplFrameSkippedAfterLateSwapAck_OnlyImplSideUpdatesExpected) {
1592 // This tests that we recover impl thread latency when there are no commits. 1632 // This tests that we recover impl thread latency when there are no commits.
1593 scheduler_settings_.use_external_begin_frame_source = true; 1633 scheduler_settings_.use_external_begin_frame_source = true;
1594 SetUpScheduler(true); 1634 SetUpScheduler(true);
1595 1635
1596 // To get into a high latency state, this test disables automatic swap acks. 1636 // To get into a high latency state, this test disables automatic swap acks.
1597 client_->SetAutomaticSwapAck(false); 1637 client_->SetAutomaticSwapAck(false);
1598 1638
1599 // Even if every estimate related to the main thread is slow, we should 1639 // Even if every estimate related to the main thread is slow, we should
1600 // still expect to recover impl thread latency if there are no commits from 1640 // still expect to recover impl thread latency if there are no commits from
1601 // the main thread. 1641 // the main thread.
1602 auto slow_duration = base::TimeDelta::FromSeconds(1); 1642 fake_compositor_timing_history_->SetAllEstimatesTo(kSlowDuration);
1603 fake_compositor_timing_history_->SetAllEstimatesTo(slow_duration); 1643 fake_compositor_timing_history_->SetDrawDurationEstimate(kFastDuration);
1604 auto fast_duration = base::TimeDelta::FromMilliseconds(1);
1605 fake_compositor_timing_history_->SetDrawDurationEstimate(fast_duration);
1606 1644
1607 // Draw and swap for first BeginFrame 1645 // Draw and swap for first BeginFrame
1608 client_->Reset(); 1646 client_->Reset();
1609 scheduler_->SetNeedsRedraw(); 1647 scheduler_->SetNeedsRedraw();
1610 EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline()); 1648 EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline());
1611 SendNextBeginFrame(); 1649 SendNextBeginFrame();
1612 EXPECT_ACTION("SetNeedsBeginFrames(true)", client_, 0, 3); 1650 EXPECT_ACTION("SetNeedsBeginFrames(true)", client_, 0, 3);
1613 EXPECT_ACTION("WillBeginImplFrame", client_, 1, 3); 1651 EXPECT_ACTION("WillBeginImplFrame", client_, 1, 3);
1614 EXPECT_ACTION("ScheduledActionAnimate", client_, 2, 3); 1652 EXPECT_ACTION("ScheduledActionAnimate", client_, 2, 3);
1615 1653
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1701 1739
1702 // Verify that we don't skip the actions of the BeginImplFrame 1740 // Verify that we don't skip the actions of the BeginImplFrame
1703 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 0, 5); 1741 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 0, 5);
1704 EXPECT_ACTION("ScheduledActionCommit", client_, 1, 5); 1742 EXPECT_ACTION("ScheduledActionCommit", client_, 1, 5);
1705 EXPECT_ACTION("ScheduledActionActivateSyncTree", client_, 2, 5); 1743 EXPECT_ACTION("ScheduledActionActivateSyncTree", client_, 2, 5);
1706 EXPECT_ACTION("ScheduledActionAnimate", client_, 3, 5); 1744 EXPECT_ACTION("ScheduledActionAnimate", client_, 3, 5);
1707 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 4, 5); 1745 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 4, 5);
1708 } 1746 }
1709 } 1747 }
1710 1748
1749 TEST_F(
1750 SchedulerTest,
1751 ImplFrameIsNotSkippedAfterLateSwapAck_BeginMainFrameQueueDurationCriticalToo Long) {
1752 scheduler_settings_.use_external_begin_frame_source = true;
1753 SetUpScheduler(true);
1754 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1755 fake_compositor_timing_history_
1756 ->SetBeginMainFrameQueueDurationCriticalEstimate(kSlowDuration);
1757 fake_compositor_timing_history_
1758 ->SetBeginMainFrameQueueDurationNotCriticalEstimate(kSlowDuration);
1759 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck());
1760 }
1761
1711 TEST_F(SchedulerTest, 1762 TEST_F(SchedulerTest,
1712 ImplFrameIsNotSkippedAfterLateSwapAck_CommitEstimateTooLong) { 1763 ImplFrameIsNotSkippedAfterLateSwapAck_CommitEstimateTooLong) {
1713 scheduler_settings_.use_external_begin_frame_source = true; 1764 scheduler_settings_.use_external_begin_frame_source = true;
1714 SetUpScheduler(true); 1765 SetUpScheduler(true);
1715 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1766 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1716 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1767 fake_compositor_timing_history_
1717 auto slow_duration = base::TimeDelta::FromSeconds(1); 1768 ->SetBeginMainFrameStartToCommitDurationEstimate(kSlowDuration);
1718 fake_compositor_timing_history_->SetBeginMainFrameToCommitDurationEstimate(
1719 slow_duration);
1720 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck()); 1769 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck());
1721 } 1770 }
1722 1771
1723 TEST_F(SchedulerTest, 1772 TEST_F(SchedulerTest,
1724 ImplFrameIsNotSkippedAfterLateSwapAck_ReadyToActivateEstimateTooLong) { 1773 ImplFrameIsNotSkippedAfterLateSwapAck_ReadyToActivateEstimateTooLong) {
1725 scheduler_settings_.use_external_begin_frame_source = true; 1774 scheduler_settings_.use_external_begin_frame_source = true;
1726 SetUpScheduler(true); 1775 SetUpScheduler(true);
1727 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1776 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1728 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration);
1729 auto slow_duration = base::TimeDelta::FromSeconds(1);
1730 fake_compositor_timing_history_->SetCommitToReadyToActivateDurationEstimate( 1777 fake_compositor_timing_history_->SetCommitToReadyToActivateDurationEstimate(
1731 slow_duration); 1778 kSlowDuration);
1732 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck()); 1779 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck());
1733 } 1780 }
1734 1781
1735 TEST_F(SchedulerTest, 1782 TEST_F(SchedulerTest,
1736 ImplFrameIsNotSkippedAfterLateSwapAck_ActivateEstimateTooLong) { 1783 ImplFrameIsNotSkippedAfterLateSwapAck_ActivateEstimateTooLong) {
1737 scheduler_settings_.use_external_begin_frame_source = true; 1784 scheduler_settings_.use_external_begin_frame_source = true;
1738 SetUpScheduler(true); 1785 SetUpScheduler(true);
1739 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1786 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1740 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1787 fake_compositor_timing_history_->SetActivateDurationEstimate(kSlowDuration);
1741 auto slow_duration = base::TimeDelta::FromSeconds(1);
1742 fake_compositor_timing_history_->SetActivateDurationEstimate(slow_duration);
1743 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck()); 1788 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck());
1744 } 1789 }
1745 1790
1746 TEST_F(SchedulerTest, 1791 TEST_F(SchedulerTest,
1747 ImplFrameIsNotSkippedAfterLateSwapAck_DrawEstimateTooLong) { 1792 ImplFrameIsNotSkippedAfterLateSwapAck_DrawEstimateTooLong) {
1748 scheduler_settings_.use_external_begin_frame_source = true; 1793 scheduler_settings_.use_external_begin_frame_source = true;
1749 SetUpScheduler(true); 1794 SetUpScheduler(true);
1750 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1795 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1751 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration); 1796 fake_compositor_timing_history_->SetDrawDurationEstimate(kSlowDuration);
1752 auto slow_duration = base::TimeDelta::FromSeconds(1);
1753 fake_compositor_timing_history_->SetDrawDurationEstimate(slow_duration);
1754 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck()); 1797 EXPECT_SCOPED(ImplFrameIsNotSkippedAfterLateSwapAck());
1755 } 1798 }
1756 1799
1757 TEST_F(SchedulerTest, 1800 TEST_F(SchedulerTest,
1758 MainFrameThenImplFrameSkippedAfterLateCommitAndLateSwapAck) { 1801 MainFrameThenImplFrameSkippedAfterLateCommitAndLateSwapAck) {
1759 // Set up client with custom estimates. 1802 // Set up client with custom estimates.
1760 // This test starts off with expensive estimates to prevent latency recovery 1803 // This test starts off with expensive estimates to prevent latency recovery
1761 // initially, then lowers the estimates to enable it once both the main 1804 // initially, then lowers the estimates to enable it once both the main
1762 // and impl threads are in a high latency mode. 1805 // and impl threads are in a high latency mode.
1763 scheduler_settings_.use_external_begin_frame_source = true; 1806 scheduler_settings_.use_external_begin_frame_source = true;
1764 SetUpScheduler(true); 1807 SetUpScheduler(true);
1765 1808 fake_compositor_timing_history_->SetAllEstimatesTo(kSlowDuration);
1766 auto slow_duration = base::TimeDelta::FromSeconds(1);
1767 fake_compositor_timing_history_->SetAllEstimatesTo(slow_duration);
1768 1809
1769 // To get into a high latency state, this test disables automatic swap acks. 1810 // To get into a high latency state, this test disables automatic swap acks.
1770 client_->SetAutomaticSwapAck(false); 1811 client_->SetAutomaticSwapAck(false);
1771 1812
1772 // Impl thread hits deadline before commit finishes to make 1813 // Impl thread hits deadline before commit finishes to make
1773 // MainThreadMissedLastDeadline true 1814 // MainThreadMissedLastDeadline true
1774 client_->Reset(); 1815 client_->Reset();
1775 scheduler_->SetNeedsBeginMainFrame(); 1816 scheduler_->SetNeedsBeginMainFrame();
1776 EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline()); 1817 EXPECT_FALSE(scheduler_->MainThreadMissedLastDeadline());
1777 EXPECT_SCOPED(AdvanceFrame()); 1818 EXPECT_SCOPED(AdvanceFrame());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1818 1859
1819 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); 1860 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
1820 EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); 1861 EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2);
1821 // Note: BeginMainFrame and swap are skipped here because of 1862 // Note: BeginMainFrame and swap are skipped here because of
1822 // swap ack backpressure, not because of latency recovery. 1863 // swap ack backpressure, not because of latency recovery.
1823 EXPECT_FALSE(client_->HasAction("ScheduledActionSendBeginMainFrame")); 1864 EXPECT_FALSE(client_->HasAction("ScheduledActionSendBeginMainFrame"));
1824 EXPECT_FALSE(client_->HasAction("ScheduledActionDrawAndSwapIfPossible")); 1865 EXPECT_FALSE(client_->HasAction("ScheduledActionDrawAndSwapIfPossible"));
1825 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline()); 1866 EXPECT_TRUE(scheduler_->MainThreadMissedLastDeadline());
1826 1867
1827 // Lower estimates so that the scheduler will attempt latency recovery. 1868 // Lower estimates so that the scheduler will attempt latency recovery.
1828 auto fast_duration = base::TimeDelta::FromMilliseconds(1); 1869 fake_compositor_timing_history_->SetAllEstimatesTo(kFastDuration);
1829 fake_compositor_timing_history_->SetAllEstimatesTo(fast_duration);
1830 1870
1831 // Now that both threads are in a high latency mode, make sure we 1871 // Now that both threads are in a high latency mode, make sure we
1832 // skip the BeginMainFrame, then the BeginImplFrame, but not both 1872 // skip the BeginMainFrame, then the BeginImplFrame, but not both
1833 // at the same time. 1873 // at the same time.
1834 1874
1835 // Verify we skip BeginMainFrame first. 1875 // Verify we skip BeginMainFrame first.
1836 client_->Reset(); 1876 client_->Reset();
1837 // Previous commit request is still outstanding. 1877 // Previous commit request is still outstanding.
1838 EXPECT_TRUE(scheduler_->NeedsBeginMainFrame()); 1878 EXPECT_TRUE(scheduler_->NeedsBeginMainFrame());
1839 EXPECT_TRUE(scheduler_->SwapThrottled()); 1879 EXPECT_TRUE(scheduler_->SwapThrottled());
(...skipping 1631 matching lines...) Expand 10 before | Expand all | Expand 10 after
3471 EXPECT_SCOPED(AdvanceFrame()); 3511 EXPECT_SCOPED(AdvanceFrame());
3472 3512
3473 // At the next BeginFrame, authoritative interval is used instead of previous 3513 // At the next BeginFrame, authoritative interval is used instead of previous
3474 // interval. 3514 // interval.
3475 EXPECT_NE(initial_interval, scheduler_->BeginImplFrameInterval()); 3515 EXPECT_NE(initial_interval, scheduler_->BeginImplFrameInterval());
3476 EXPECT_EQ(authoritative_interval, scheduler_->BeginImplFrameInterval()); 3516 EXPECT_EQ(authoritative_interval, scheduler_->BeginImplFrameInterval());
3477 } 3517 }
3478 3518
3479 TEST_F(SchedulerTest, ImplLatencyTakesPriority) { 3519 TEST_F(SchedulerTest, ImplLatencyTakesPriority) {
3480 SetUpScheduler(true); 3520 SetUpScheduler(true);
3481 scheduler_->SetImplLatencyTakesPriority(true); 3521
3522 scheduler_->SetTreePrioritiesAndScrollState(
3523 SMOOTHNESS_TAKES_PRIORITY,
3524 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER);
3525 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(true);
3526 EXPECT_TRUE(scheduler_->ImplLatencyTakesPriority());
3527 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(false);
3482 EXPECT_TRUE(scheduler_->ImplLatencyTakesPriority()); 3528 EXPECT_TRUE(scheduler_->ImplLatencyTakesPriority());
3483 3529
3484 scheduler_->SetImplLatencyTakesPriority(false); 3530 scheduler_->SetTreePrioritiesAndScrollState(
3531 SMOOTHNESS_TAKES_PRIORITY,
3532 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER);
3533 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(true);
3534 EXPECT_FALSE(scheduler_->ImplLatencyTakesPriority());
3535 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(false);
3536 EXPECT_TRUE(scheduler_->ImplLatencyTakesPriority());
3537
3538 scheduler_->SetTreePrioritiesAndScrollState(
3539 SAME_PRIORITY_FOR_BOTH_TREES,
3540 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER);
3541 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(true);
3542 EXPECT_FALSE(scheduler_->ImplLatencyTakesPriority());
3543 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(false);
3544 EXPECT_FALSE(scheduler_->ImplLatencyTakesPriority());
3545
3546 scheduler_->SetTreePrioritiesAndScrollState(
3547 SAME_PRIORITY_FOR_BOTH_TREES,
3548 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER);
3549 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(true);
3550 EXPECT_FALSE(scheduler_->ImplLatencyTakesPriority());
3551 scheduler_->SetCriticalBeginMainFrameToActivateIsFast(false);
3485 EXPECT_FALSE(scheduler_->ImplLatencyTakesPriority()); 3552 EXPECT_FALSE(scheduler_->ImplLatencyTakesPriority());
3486 } 3553 }
3487 3554
3488 TEST_F(SchedulerTest, BeginMainFrameArgs_OnCriticalPath) { 3555 // The three letters appeneded to each version of this test mean the following:s
3556 // tree_priority: B = both trees same priority; A = active tree priority;
3557 // scroll_handler_state: H = affects scroll handler; N = does not affect scroll
3558 // handler;
3559 // durations: F = fast durations; S = slow durations
3560 bool SchedulerTest::BeginMainFrameOnCriticalPath(
3561 TreePriority tree_priority,
3562 ScrollHandlerState scroll_handler_state,
3563 base::TimeDelta durations) {
3489 scheduler_settings_.use_external_begin_frame_source = true; 3564 scheduler_settings_.use_external_begin_frame_source = true;
3490 SetUpScheduler(true); 3565 SetUpScheduler(true);
3491 3566 fake_compositor_timing_history_->SetAllEstimatesTo(durations);
3492 scheduler_->SetImplLatencyTakesPriority(false); 3567 client_->Reset();
3568 scheduler_->SetTreePrioritiesAndScrollState(tree_priority,
3569 scroll_handler_state);
3493 scheduler_->SetNeedsBeginMainFrame(); 3570 scheduler_->SetNeedsBeginMainFrame();
3494
3495 client_->Reset();
3496 EXPECT_FALSE(client_->last_begin_main_frame_args().IsValid()); 3571 EXPECT_FALSE(client_->last_begin_main_frame_args().IsValid());
3497 EXPECT_SCOPED(AdvanceFrame()); 3572 EXPECT_SCOPED(AdvanceFrame());
3498 EXPECT_TRUE(client_->last_begin_main_frame_args().IsValid()); 3573 EXPECT_TRUE(client_->last_begin_main_frame_args().IsValid());
3499 EXPECT_TRUE(client_->last_begin_main_frame_args().on_critical_path); 3574 return client_->last_begin_main_frame_args().on_critical_path;
3500 } 3575 }
3501 3576
3502 TEST_F(SchedulerTest, BeginMainFrameArgs_NotOnCriticalPath) { 3577 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_BNF) {
3503 scheduler_settings_.use_external_begin_frame_source = true; 3578 EXPECT_TRUE(BeginMainFrameOnCriticalPath(
3504 SetUpScheduler(true); 3579 SAME_PRIORITY_FOR_BOTH_TREES,
3580 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER,
3581 kFastDuration));
3582 }
3505 3583
3506 scheduler_->SetImplLatencyTakesPriority(true); 3584 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_BNS) {
3507 scheduler_->SetNeedsBeginMainFrame(); 3585 EXPECT_TRUE(BeginMainFrameOnCriticalPath(
3586 SAME_PRIORITY_FOR_BOTH_TREES,
3587 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER,
3588 kSlowDuration));
3589 }
3508 3590
3509 client_->Reset(); 3591 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_BHF) {
3510 EXPECT_FALSE(client_->last_begin_main_frame_args().IsValid()); 3592 EXPECT_TRUE(BeginMainFrameOnCriticalPath(
3511 EXPECT_SCOPED(AdvanceFrame()); 3593 SAME_PRIORITY_FOR_BOTH_TREES,
3512 EXPECT_TRUE(client_->last_begin_main_frame_args().IsValid()); 3594 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER, kFastDuration));
3513 EXPECT_FALSE(client_->last_begin_main_frame_args().on_critical_path); 3595 }
3596
3597 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_BHS) {
3598 EXPECT_TRUE(BeginMainFrameOnCriticalPath(
3599 SAME_PRIORITY_FOR_BOTH_TREES,
3600 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER, kSlowDuration));
3601 }
3602
3603 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_ANF) {
3604 EXPECT_FALSE(BeginMainFrameOnCriticalPath(
3605 SMOOTHNESS_TAKES_PRIORITY,
3606 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER,
3607 kFastDuration));
3608 }
3609
3610 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_ANS) {
3611 EXPECT_FALSE(BeginMainFrameOnCriticalPath(
3612 SMOOTHNESS_TAKES_PRIORITY,
3613 ScrollHandlerState::SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER,
3614 kSlowDuration));
3615 }
3616
3617 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_AHF) {
3618 EXPECT_TRUE(BeginMainFrameOnCriticalPath(
3619 SMOOTHNESS_TAKES_PRIORITY,
3620 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER, kFastDuration));
3621 }
3622
3623 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_AHS) {
3624 EXPECT_FALSE(BeginMainFrameOnCriticalPath(
3625 SMOOTHNESS_TAKES_PRIORITY,
3626 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER, kSlowDuration));
3514 } 3627 }
3515 3628
3516 } // namespace 3629 } // namespace
3517 } // namespace cc 3630 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler_state_machine_unittest.cc ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698