| 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_state_machine.h" | 5 #include "cc/scheduler/scheduler_state_machine.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "cc/scheduler/scheduler.h" | 8 #include "cc/scheduler/scheduler.h" |
| 9 #include "cc/test/begin_frame_args_test.h" | 9 #include "cc/test/begin_frame_args_test.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 bool CanDraw() const { return can_draw_; } | 96 bool CanDraw() const { return can_draw_; } |
| 97 bool Visible() const { return visible_; } | 97 bool Visible() const { return visible_; } |
| 98 | 98 |
| 99 bool PendingActivationsShouldBeForced() const { | 99 bool PendingActivationsShouldBeForced() const { |
| 100 return SchedulerStateMachine::PendingActivationsShouldBeForced(); | 100 return SchedulerStateMachine::PendingActivationsShouldBeForced(); |
| 101 } | 101 } |
| 102 | 102 |
| 103 void SetHasPendingTree(bool has_pending_tree) { | 103 void SetHasPendingTree(bool has_pending_tree) { |
| 104 has_pending_tree_ = has_pending_tree; | 104 has_pending_tree_ = has_pending_tree; |
| 105 } | 105 } |
| 106 |
| 107 using SchedulerStateMachine::ShouldTriggerBeginImplFrameDeadlineImmediately; |
| 106 }; | 108 }; |
| 107 | 109 |
| 108 TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { | 110 TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) { |
| 109 SchedulerSettings default_scheduler_settings; | 111 SchedulerSettings default_scheduler_settings; |
| 110 | 112 |
| 111 // If no commit needed, do nothing. | 113 // If no commit needed, do nothing. |
| 112 { | 114 { |
| 113 StateMachine state(default_scheduler_settings); | 115 StateMachine state(default_scheduler_settings); |
| 114 state.SetCanStart(); | 116 state.SetCanStart(); |
| 115 EXPECT_ACTION_UPDATE_STATE( | 117 EXPECT_ACTION_UPDATE_STATE( |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 state.NotifyBeginMainFrameStarted(); | 227 state.NotifyBeginMainFrameStarted(); |
| 226 state.NotifyReadyToCommit(); | 228 state.NotifyReadyToCommit(); |
| 227 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 229 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 228 | 230 |
| 229 // Verify NotifyReadyToActivate unblocks activation, draw, and | 231 // Verify NotifyReadyToActivate unblocks activation, draw, and |
| 230 // commit in that order. | 232 // commit in that order. |
| 231 state.NotifyReadyToActivate(); | 233 state.NotifyReadyToActivate(); |
| 232 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE); | 234 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE); |
| 233 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 235 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 234 | 236 |
| 235 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 237 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 236 state.OnBeginImplFrameDeadline(); | 238 state.OnBeginImplFrameDeadline(); |
| 237 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | 239 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
| 238 EXPECT_ACTION_UPDATE_STATE( | 240 EXPECT_ACTION_UPDATE_STATE( |
| 239 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); | 241 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
| 240 state.DidSwapBuffers(); | 242 state.DidSwapBuffers(); |
| 241 state.DidSwapBuffersComplete(); | 243 state.DidSwapBuffersComplete(); |
| 242 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); | 244 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); |
| 243 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 245 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 244 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); | 246 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); |
| 245 } | 247 } |
| (...skipping 1478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1724 | 1726 |
| 1725 state.SetCanDraw(false); | 1727 state.SetCanDraw(false); |
| 1726 state.SetVisible(false); | 1728 state.SetVisible(false); |
| 1727 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); | 1729 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); |
| 1728 | 1730 |
| 1729 state.SetCanDraw(true); | 1731 state.SetCanDraw(true); |
| 1730 state.SetVisible(true); | 1732 state.SetVisible(true); |
| 1731 EXPECT_FALSE(state.PendingDrawsShouldBeAborted()); | 1733 EXPECT_FALSE(state.PendingDrawsShouldBeAborted()); |
| 1732 } | 1734 } |
| 1733 | 1735 |
| 1734 TEST(SchedulerStateMachineTest, TestTriggerDeadlineEarlyAfterAbortedCommit) { | 1736 TEST(SchedulerStateMachineTest, |
| 1737 TestTriggerDeadlineImmediatelyAfterAbortedCommit) { |
| 1735 SchedulerSettings settings; | 1738 SchedulerSettings settings; |
| 1736 settings.impl_side_painting = true; | 1739 settings.impl_side_painting = true; |
| 1737 StateMachine state(settings); | 1740 StateMachine state(settings); |
| 1738 state.SetCanStart(); | 1741 state.SetCanStart(); |
| 1739 state.UpdateState(state.NextAction()); | 1742 state.UpdateState(state.NextAction()); |
| 1740 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1743 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1741 state.SetVisible(true); | 1744 state.SetVisible(true); |
| 1742 state.SetCanDraw(true); | 1745 state.SetCanDraw(true); |
| 1743 | 1746 |
| 1744 // This test mirrors what happens during the first frame of a scroll gesture. | 1747 // This test mirrors what happens during the first frame of a scroll gesture. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1755 EXPECT_ACTION_UPDATE_STATE( | 1758 EXPECT_ACTION_UPDATE_STATE( |
| 1756 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1759 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
| 1757 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1760 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1758 | 1761 |
| 1759 // Since only the scroll offset changed, the main thread will abort the | 1762 // Since only the scroll offset changed, the main thread will abort the |
| 1760 // commit. | 1763 // commit. |
| 1761 state.BeginMainFrameAborted(true); | 1764 state.BeginMainFrameAborted(true); |
| 1762 | 1765 |
| 1763 // Since the commit was aborted, we should draw right away instead of waiting | 1766 // Since the commit was aborted, we should draw right away instead of waiting |
| 1764 // for the deadline. | 1767 // for the deadline. |
| 1765 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1768 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1766 } | 1769 } |
| 1767 | 1770 |
| 1768 void FinishPreviousCommitAndDrawWithoutExitingDeadline( | 1771 void FinishPreviousCommitAndDrawWithoutExitingDeadline( |
| 1769 StateMachine* state_ptr) { | 1772 StateMachine* state_ptr) { |
| 1770 // Gross, but allows us to use macros below. | 1773 // Gross, but allows us to use macros below. |
| 1771 StateMachine& state = *state_ptr; | 1774 StateMachine& state = *state_ptr; |
| 1772 | 1775 |
| 1773 state.NotifyBeginMainFrameStarted(); | 1776 state.NotifyBeginMainFrameStarted(); |
| 1774 state.NotifyReadyToCommit(); | 1777 state.NotifyReadyToCommit(); |
| 1775 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); | 1778 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); |
| 1776 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1779 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1777 state.NotifyReadyToActivate(); | 1780 state.NotifyReadyToActivate(); |
| 1778 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE); | 1781 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE); |
| 1779 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1782 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1780 | 1783 |
| 1781 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1784 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
| 1782 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | 1785 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
| 1783 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1786 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1784 | 1787 |
| 1785 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1788 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1786 state.OnBeginImplFrameDeadline(); | 1789 state.OnBeginImplFrameDeadline(); |
| 1787 EXPECT_ACTION_UPDATE_STATE( | 1790 EXPECT_ACTION_UPDATE_STATE( |
| 1788 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); | 1791 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
| 1789 state.DidSwapBuffers(); | 1792 state.DidSwapBuffers(); |
| 1790 } | 1793 } |
| 1791 | 1794 |
| 1792 TEST(SchedulerStateMachineTest, TestImplLatencyTakesPriority) { | 1795 TEST(SchedulerStateMachineTest, TestImplLatencyTakesPriority) { |
| 1793 SchedulerSettings settings; | 1796 SchedulerSettings settings; |
| 1794 settings.impl_side_painting = true; | 1797 settings.impl_side_painting = true; |
| 1795 StateMachine state(settings); | 1798 StateMachine state(settings); |
| 1796 state.SetCanStart(); | 1799 state.SetCanStart(); |
| 1797 state.UpdateState(state.NextAction()); | 1800 state.UpdateState(state.NextAction()); |
| 1798 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1801 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1799 state.SetVisible(true); | 1802 state.SetVisible(true); |
| 1800 state.SetCanDraw(true); | 1803 state.SetCanDraw(true); |
| 1801 | 1804 |
| 1802 // This test ensures that impl-draws are prioritized over main thread updates | 1805 // This test ensures that impl-draws are prioritized over main thread updates |
| 1803 // in prefer impl latency mode. | 1806 // in prefer impl latency mode. |
| 1804 state.SetNeedsRedraw(true); | 1807 state.SetNeedsRedraw(true); |
| 1805 state.SetNeedsCommit(); | 1808 state.SetNeedsCommit(); |
| 1806 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1809 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
| 1807 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | 1810 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
| 1808 EXPECT_ACTION_UPDATE_STATE( | 1811 EXPECT_ACTION_UPDATE_STATE( |
| 1809 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1812 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
| 1810 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1813 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1811 | 1814 |
| 1812 // Verify the deadline is not triggered early until we enter | 1815 // Verify the deadline is not triggered early until we enter |
| 1813 // prefer impl latency mode. | 1816 // prefer impl latency mode. |
| 1814 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1817 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1815 state.SetImplLatencyTakesPriority(true); | 1818 state.SetImplLatencyTakesPriority(true); |
| 1816 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1819 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1817 | 1820 |
| 1818 // Trigger the deadline. | 1821 // Trigger the deadline. |
| 1819 state.OnBeginImplFrameDeadline(); | 1822 state.OnBeginImplFrameDeadline(); |
| 1820 EXPECT_ACTION_UPDATE_STATE( | 1823 EXPECT_ACTION_UPDATE_STATE( |
| 1821 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); | 1824 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
| 1822 state.DidSwapBuffers(); | 1825 state.DidSwapBuffers(); |
| 1823 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1826 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1824 state.DidSwapBuffersComplete(); | 1827 state.DidSwapBuffersComplete(); |
| 1825 | 1828 |
| 1826 // Request a new commit and finish the previous one. | 1829 // Request a new commit and finish the previous one. |
| 1827 state.SetNeedsCommit(); | 1830 state.SetNeedsCommit(); |
| 1828 FinishPreviousCommitAndDrawWithoutExitingDeadline(&state); | 1831 FinishPreviousCommitAndDrawWithoutExitingDeadline(&state); |
| 1829 EXPECT_ACTION_UPDATE_STATE( | 1832 EXPECT_ACTION_UPDATE_STATE( |
| 1830 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1833 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
| 1831 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1834 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1832 state.DidSwapBuffersComplete(); | 1835 state.DidSwapBuffersComplete(); |
| 1833 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1836 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1834 | 1837 |
| 1835 // Finish the previous commit and draw it. | 1838 // Finish the previous commit and draw it. |
| 1836 FinishPreviousCommitAndDrawWithoutExitingDeadline(&state); | 1839 FinishPreviousCommitAndDrawWithoutExitingDeadline(&state); |
| 1837 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1840 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1838 | 1841 |
| 1839 // Verify we do not send another BeginMainFrame if was are swap throttled | 1842 // Verify we do not send another BeginMainFrame if was are swap throttled |
| 1840 // and did not just swap. | 1843 // and did not just swap. |
| 1841 state.SetNeedsCommit(); | 1844 state.SetNeedsCommit(); |
| 1842 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1845 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1843 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1846 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
| 1844 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1847 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1845 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1848 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1846 state.OnBeginImplFrameDeadline(); | 1849 state.OnBeginImplFrameDeadline(); |
| 1847 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1850 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1848 } | 1851 } |
| 1849 | 1852 |
| 1850 TEST(SchedulerStateMachineTest, TestTriggerDeadlineEarlyOnLostOutputSurface) { | 1853 TEST(SchedulerStateMachineTest, |
| 1854 TestTriggerDeadlineImmediatelyOnLostOutputSurface) { |
| 1851 SchedulerSettings default_scheduler_settings; | 1855 SchedulerSettings default_scheduler_settings; |
| 1852 StateMachine state(default_scheduler_settings); | 1856 StateMachine state(default_scheduler_settings); |
| 1853 state.SetCanStart(); | 1857 state.SetCanStart(); |
| 1854 state.UpdateState(state.NextAction()); | 1858 state.UpdateState(state.NextAction()); |
| 1855 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1859 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1856 state.SetVisible(true); | 1860 state.SetVisible(true); |
| 1857 state.SetCanDraw(true); | 1861 state.SetCanDraw(true); |
| 1858 | 1862 |
| 1859 state.SetNeedsCommit(); | 1863 state.SetNeedsCommit(); |
| 1860 | 1864 |
| 1861 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1865 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
| 1862 EXPECT_ACTION_UPDATE_STATE( | 1866 EXPECT_ACTION_UPDATE_STATE( |
| 1863 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1867 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
| 1864 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1868 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1865 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1869 EXPECT_FALSE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1866 | 1870 |
| 1867 state.DidLoseOutputSurface(); | 1871 state.DidLoseOutputSurface(); |
| 1868 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1872 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
| 1869 // The deadline should be triggered immediately when output surface is lost. | 1873 // The deadline should be triggered immediately when output surface is lost. |
| 1870 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); | 1874 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
| 1871 } | 1875 } |
| 1872 | 1876 |
| 1873 TEST(SchedulerStateMachineTest, TestSetNeedsAnimate) { | 1877 TEST(SchedulerStateMachineTest, TestSetNeedsAnimate) { |
| 1874 SchedulerSettings settings; | 1878 SchedulerSettings settings; |
| 1875 settings.impl_side_painting = true; | 1879 settings.impl_side_painting = true; |
| 1876 StateMachine state(settings); | 1880 StateMachine state(settings); |
| 1877 state.SetCanStart(); | 1881 state.SetCanStart(); |
| 1878 state.UpdateState(state.NextAction()); | 1882 state.UpdateState(state.NextAction()); |
| 1879 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1883 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1880 state.SetVisible(true); | 1884 state.SetVisible(true); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1992 state.SetVisible(true); | 1996 state.SetVisible(true); |
| 1993 state.SetCanDraw(true); | 1997 state.SetCanDraw(true); |
| 1994 | 1998 |
| 1995 EXPECT_FALSE(state.BeginFrameNeeded()); | 1999 EXPECT_FALSE(state.BeginFrameNeeded()); |
| 1996 state.SetChildrenNeedBeginFrames(true); | 2000 state.SetChildrenNeedBeginFrames(true); |
| 1997 EXPECT_TRUE(state.BeginFrameNeeded()); | 2001 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 1998 } | 2002 } |
| 1999 | 2003 |
| 2000 } // namespace | 2004 } // namespace |
| 2001 } // namespace cc | 2005 } // namespace cc |
| OLD | NEW |