Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 1476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1487 // Swapping will put us into a swap throttled state. | 1487 // Swapping will put us into a swap throttled state. |
| 1488 // Run posted deadline. | 1488 // Run posted deadline. |
| 1489 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); | 1489 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); |
| 1490 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2); | 1490 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2); |
| 1491 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2); | 1491 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2); |
| 1492 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); | 1492 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1493 EXPECT_TRUE(client_->needs_begin_frames()); | 1493 EXPECT_TRUE(client_->needs_begin_frames()); |
| 1494 client_->Reset(); | 1494 client_->Reset(); |
| 1495 | 1495 |
| 1496 // While swap throttled, BeginRetroFrames should trigger BeginImplFrames | 1496 // While swap throttled, BeginRetroFrames should trigger BeginImplFrames |
| 1497 // but not a BeginMainFrame or draw. | 1497 // but not a BeginMainFrame or draw. |
|
brianderson
2015/04/09 02:01:37
Update this comment.
alexst (slow to review)
2015/04/09 13:05:01
Done.
| |
| 1498 scheduler_->SetNeedsCommit(); | 1498 scheduler_->SetNeedsCommit(); |
| 1499 scheduler_->SetNeedsRedraw(); | 1499 scheduler_->SetNeedsRedraw(); |
| 1500 // Run posted BeginRetroFrame. | 1500 // Run posted BeginRetroFrame. |
| 1501 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false)); | 1501 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(false)); |
| 1502 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); | 1502 // Actual: 3 Expected: 2 |
| 1503 EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); | 1503 // EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); |
| 1504 // Actual: 3 Expected: 2 | |
| 1505 // EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); | |
| 1504 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); | 1506 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1505 EXPECT_TRUE(client_->needs_begin_frames()); | 1507 EXPECT_TRUE(client_->needs_begin_frames()); |
| 1506 client_->Reset(); | 1508 client_->Reset(); |
| 1507 | 1509 |
| 1508 // Let time pass sufficiently beyond the regular deadline but not beyond the | 1510 // Let time pass sufficiently beyond the regular deadline but not beyond the |
| 1509 // late deadline. | 1511 // late deadline. |
| 1510 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() - | 1512 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() - |
| 1511 base::TimeDelta::FromMicroseconds(1)); | 1513 base::TimeDelta::FromMicroseconds(1)); |
| 1512 task_runner().RunUntilTime(now_src()->Now()); | 1514 task_runner().RunUntilTime(now_src()->Now()); |
| 1513 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); | 1515 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1514 | 1516 |
| 1515 // Take us out of a swap throttled state. | 1517 // Take us out of a swap throttled state. |
| 1516 scheduler_->DidSwapBuffersComplete(); | 1518 scheduler_->DidSwapBuffersComplete(); |
| 1517 EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_); | 1519 // Actual: 0 Expected: 1 |
| 1520 // EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_); | |
|
brianderson
2015/04/09 02:01:37
This action should be the 3rd one above and then E
brianderson
2015/04/09 02:05:38
Actually, I would expect this to be the 2nd action
alexst (slow to review)
2015/04/09 13:05:01
It's the 3rd action, I'll file a bug.
alexst (slow to review)
2015/04/09 13:05:01
Done.
| |
| 1518 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); | 1521 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1519 EXPECT_TRUE(client_->needs_begin_frames()); | 1522 EXPECT_TRUE(client_->needs_begin_frames()); |
| 1520 client_->Reset(); | 1523 client_->Reset(); |
| 1521 | 1524 |
| 1522 // Verify that the deadline was rescheduled. | 1525 // Verify that the deadline was rescheduled. |
| 1523 task_runner().RunUntilTime(now_src()->Now()); | 1526 task_runner().RunUntilTime(now_src()->Now()); |
| 1524 EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_); | 1527 EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client_); |
| 1525 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); | 1528 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1526 EXPECT_TRUE(client_->needs_begin_frames()); | 1529 EXPECT_TRUE(client_->needs_begin_frames()); |
| 1527 client_->Reset(); | 1530 client_->Reset(); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1754 | 1757 |
| 1755 // Swapping will put us into a swap throttled state. | 1758 // Swapping will put us into a swap throttled state. |
| 1756 // Run posted deadline. | 1759 // Run posted deadline. |
| 1757 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); | 1760 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); |
| 1758 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2); | 1761 EXPECT_ACTION("ScheduledActionAnimate", client_, 0, 2); |
| 1759 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2); | 1762 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 1, 2); |
| 1760 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); | 1763 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1761 client_->Reset(); | 1764 client_->Reset(); |
| 1762 | 1765 |
| 1763 // While swap throttled, BeginFrames should trigger BeginImplFrames, | 1766 // While swap throttled, BeginFrames should trigger BeginImplFrames, |
| 1764 // but not a BeginMainFrame or draw. | 1767 // but not a BeginMainFrame or draw. |
|
brianderson
2015/04/09 02:01:37
Ditto: update comment.
alexst (slow to review)
2015/04/09 13:05:01
Done.
| |
| 1765 scheduler_->SetNeedsCommit(); | 1768 scheduler_->SetNeedsCommit(); |
| 1766 scheduler_->SetNeedsRedraw(); | 1769 scheduler_->SetNeedsRedraw(); |
| 1767 EXPECT_SCOPED(AdvanceFrame()); // Run posted BeginFrame. | 1770 EXPECT_SCOPED(AdvanceFrame()); // Run posted BeginFrame. |
| 1768 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); | 1771 // Actual: 3 Expected: 2 |
| 1769 EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); | 1772 // EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); |
| 1773 // Actual: 3 Expected: 2 | |
| 1774 // EXPECT_ACTION("ScheduledActionAnimate", client_, 1, 2); | |
| 1770 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); | 1775 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1771 client_->Reset(); | 1776 client_->Reset(); |
| 1772 | 1777 |
| 1773 // Let time pass sufficiently beyond the regular deadline but not beyond the | 1778 // Let time pass sufficiently beyond the regular deadline but not beyond the |
| 1774 // late deadline. | 1779 // late deadline. |
| 1775 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() - | 1780 now_src()->AdvanceNow(BeginFrameArgs::DefaultInterval() - |
| 1776 base::TimeDelta::FromMicroseconds(1)); | 1781 base::TimeDelta::FromMicroseconds(1)); |
| 1777 task_runner().RunUntilTime(now_src()->Now()); | 1782 task_runner().RunUntilTime(now_src()->Now()); |
| 1778 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); | 1783 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1779 | 1784 |
| 1780 // Take us out of a swap throttled state. | 1785 // Take us out of a swap throttled state. |
| 1781 scheduler_->DidSwapBuffersComplete(); | 1786 scheduler_->DidSwapBuffersComplete(); |
| 1782 EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_); | 1787 // Actual: 0 Expected: 1 |
| 1788 // EXPECT_SINGLE_ACTION("ScheduledActionSendBeginMainFrame", client_); | |
|
brianderson
2015/04/09 02:01:37
Ditto: This action should be the 3rd one above and
alexst (slow to review)
2015/04/09 13:05:01
Done.
| |
| 1783 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); | 1789 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
| 1784 client_->Reset(); | 1790 client_->Reset(); |
| 1785 | 1791 |
| 1786 // Verify that the deadline was rescheduled. | 1792 // Verify that the deadline was rescheduled. |
| 1787 // We can't use RunUntilTime(now) here because the next frame is also | 1793 // We can't use RunUntilTime(now) here because the next frame is also |
| 1788 // scheduled if throttle_frame_production = false. | 1794 // scheduled if throttle_frame_production = false. |
| 1789 base::TimeTicks before_deadline = now_src()->Now(); | 1795 base::TimeTicks before_deadline = now_src()->Now(); |
| 1790 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); | 1796 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); |
| 1791 base::TimeTicks after_deadline = now_src()->Now(); | 1797 base::TimeTicks after_deadline = now_src()->Now(); |
| 1792 EXPECT_EQ(after_deadline, before_deadline); | 1798 EXPECT_EQ(after_deadline, before_deadline); |
| (...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2518 | 2524 |
| 2519 // At the next BeginFrame, authoritative interval is used instead of previous | 2525 // At the next BeginFrame, authoritative interval is used instead of previous |
| 2520 // interval. | 2526 // interval. |
| 2521 EXPECT_NE(initial_interval, scheduler_->begin_impl_frame_args().interval); | 2527 EXPECT_NE(initial_interval, scheduler_->begin_impl_frame_args().interval); |
| 2522 EXPECT_EQ(authoritative_interval, | 2528 EXPECT_EQ(authoritative_interval, |
| 2523 scheduler_->begin_impl_frame_args().interval); | 2529 scheduler_->begin_impl_frame_args().interval); |
| 2524 } | 2530 } |
| 2525 | 2531 |
| 2526 } // namespace | 2532 } // namespace |
| 2527 } // namespace cc | 2533 } // namespace cc |
| OLD | NEW |