| 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/trace_event/trace_event.h" | 7 #include "base/trace_event/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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 state.SetNeedsRedraw(true); | 164 state.SetNeedsRedraw(true); |
| 165 state.SetNeedsAnimateForTest(false); | 165 state.SetNeedsAnimateForTest(false); |
| 166 EXPECT_TRUE(state.BeginFrameNeeded()); | 166 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 167 | 167 |
| 168 // Don't background tick for needs_redraw. | 168 // Don't background tick for needs_redraw. |
| 169 state.SetVisible(false); | 169 state.SetVisible(false); |
| 170 state.SetNeedsRedraw(true); | 170 state.SetNeedsRedraw(true); |
| 171 state.SetNeedsAnimateForTest(false); | 171 state.SetNeedsAnimateForTest(false); |
| 172 EXPECT_FALSE(state.BeginFrameNeeded()); | 172 EXPECT_FALSE(state.BeginFrameNeeded()); |
| 173 | 173 |
| 174 // Background tick for animations. | |
| 175 state.SetVisible(false); | |
| 176 state.SetNeedsRedraw(false); | |
| 177 state.SetNeedsAnimateForTest(true); | |
| 178 EXPECT_TRUE(state.BeginFrameNeeded()); | |
| 179 | |
| 180 // Proactively request BeginFrames when commit is pending. | 174 // Proactively request BeginFrames when commit is pending. |
| 181 state.SetVisible(true); | 175 state.SetVisible(true); |
| 182 state.SetNeedsRedraw(false); | 176 state.SetNeedsRedraw(false); |
| 183 state.SetNeedsAnimateForTest(false); | 177 state.SetNeedsAnimateForTest(false); |
| 184 state.SetNeedsCommitForTest(true); | 178 state.SetNeedsCommitForTest(true); |
| 185 EXPECT_TRUE(state.BeginFrameNeeded()); | 179 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 186 | 180 |
| 187 // Don't request BeginFrames when commit is pending if | 181 // Don't request BeginFrames when commit is pending if |
| 188 // we are currently deferring commits. | 182 // we are currently deferring commits. |
| 189 state.SetVisible(true); | 183 state.SetVisible(true); |
| (...skipping 1359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1549 state.NotifyReadyToCommit(); | 1543 state.NotifyReadyToCommit(); |
| 1550 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); | 1544 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); |
| 1551 | 1545 |
| 1552 EXPECT_TRUE(state.PendingActivationsShouldBeForced()); | 1546 EXPECT_TRUE(state.PendingActivationsShouldBeForced()); |
| 1553 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE); | 1547 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE); |
| 1554 | 1548 |
| 1555 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); | 1549 EXPECT_TRUE(state.PendingDrawsShouldBeAborted()); |
| 1556 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); | 1550 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_SWAP_ABORT); |
| 1557 } | 1551 } |
| 1558 | 1552 |
| 1553 TEST(SchedulerStateMachineTest, TestNoBeginFrameNeededWhenInvisible) { |
| 1554 SchedulerSettings default_scheduler_settings; |
| 1555 StateMachine state(default_scheduler_settings); |
| 1556 state.SetCanStart(); |
| 1557 state.UpdateState(state.NextAction()); |
| 1558 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1559 state.SetVisible(true); |
| 1560 |
| 1561 EXPECT_FALSE(state.BeginFrameNeeded()); |
| 1562 state.SetNeedsRedraw(true); |
| 1563 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 1564 |
| 1565 state.SetVisible(false); |
| 1566 EXPECT_FALSE(state.BeginFrameNeeded()); |
| 1567 |
| 1568 state.SetVisible(true); |
| 1569 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 1570 } |
| 1571 |
| 1559 TEST(SchedulerStateMachineTest, TestNoBeginMainFrameWhenInvisible) { | 1572 TEST(SchedulerStateMachineTest, TestNoBeginMainFrameWhenInvisible) { |
| 1560 SchedulerSettings default_scheduler_settings; | 1573 SchedulerSettings default_scheduler_settings; |
| 1561 StateMachine state(default_scheduler_settings); | 1574 StateMachine state(default_scheduler_settings); |
| 1562 state.SetCanStart(); | 1575 state.SetCanStart(); |
| 1563 state.UpdateState(state.NextAction()); | 1576 state.UpdateState(state.NextAction()); |
| 1564 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1577 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1565 state.SetVisible(false); | 1578 state.SetVisible(false); |
| 1566 state.SetNeedsCommit(); | 1579 state.SetNeedsCommit(); |
| 1567 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | 1580 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
| 1581 EXPECT_FALSE(state.BeginFrameNeeded()); |
| 1582 |
| 1583 // When become visible again, the needs commit should still be pending. |
| 1584 state.SetVisible(true); |
| 1585 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 1586 state.OnBeginImplFrame(); |
| 1587 EXPECT_ACTION_UPDATE_STATE( |
| 1588 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
| 1568 } | 1589 } |
| 1569 | 1590 |
| 1570 TEST(SchedulerStateMachineTest, TestFinishCommitWhenCommitInProgress) { | 1591 TEST(SchedulerStateMachineTest, TestFinishCommitWhenCommitInProgress) { |
| 1571 SchedulerSettings default_scheduler_settings; | 1592 SchedulerSettings default_scheduler_settings; |
| 1572 StateMachine state(default_scheduler_settings); | 1593 StateMachine state(default_scheduler_settings); |
| 1573 state.SetCanStart(); | 1594 state.SetCanStart(); |
| 1574 state.UpdateState(state.NextAction()); | 1595 state.UpdateState(state.NextAction()); |
| 1575 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1596 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
| 1576 state.SetVisible(false); | 1597 state.SetVisible(false); |
| 1577 state.SetCommitState( | 1598 state.SetCommitState( |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1918 EXPECT_FALSE(state.ProactiveBeginFrameWanted()); | 1939 EXPECT_FALSE(state.ProactiveBeginFrameWanted()); |
| 1919 bool commit_has_no_updates = true; | 1940 bool commit_has_no_updates = true; |
| 1920 state.UpdateStateOnCommit(commit_has_no_updates); | 1941 state.UpdateStateOnCommit(commit_has_no_updates); |
| 1921 EXPECT_TRUE(state.ProactiveBeginFrameWanted()); | 1942 EXPECT_TRUE(state.ProactiveBeginFrameWanted()); |
| 1922 state.OnBeginImplFrame(); | 1943 state.OnBeginImplFrame(); |
| 1923 EXPECT_FALSE(state.ProactiveBeginFrameWanted()); | 1944 EXPECT_FALSE(state.ProactiveBeginFrameWanted()); |
| 1924 } | 1945 } |
| 1925 | 1946 |
| 1926 } // namespace | 1947 } // namespace |
| 1927 } // namespace cc | 1948 } // namespace cc |
| OLD | NEW |