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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 EXPECT_FALSE(state.BeginFrameNeeded()); | 163 EXPECT_FALSE(state.BeginFrameNeeded()); |
164 | 164 |
165 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 165 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
166 EXPECT_FALSE(state.BeginFrameNeeded()); | 166 EXPECT_FALSE(state.BeginFrameNeeded()); |
167 state.OnBeginImplFrame( | 167 state.OnBeginImplFrame( |
168 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 168 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
169 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 169 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
170 state.OnBeginImplFrameDeadline(); | 170 state.OnBeginImplFrameDeadline(); |
171 } | 171 } |
172 | 172 |
| 173 // If commit requested but can_draw is false, begin a main frame. |
| 174 { |
| 175 SchedulerSettings scheduler_settings; |
| 176 // This only happens when proactive begin frames are false. |
| 177 scheduler_settings.using_synchronous_renderer_compositor = true; |
| 178 StateMachine state(scheduler_settings); |
| 179 state.SetCanStart(); |
| 180 state.SetNeedsRedraw(false); |
| 181 state.SetVisible(true); |
| 182 state.SetNeedsCommit(); |
| 183 state.SetCanDraw(false); |
| 184 |
| 185 EXPECT_ACTION(SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
| 186 state.UpdateState(state.NextAction()); |
| 187 state.DidCreateAndInitializeOutputSurface(); |
| 188 |
| 189 // Expect nothing to happen until the IMPL frame comes in. |
| 190 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
| 191 EXPECT_IMPL_FRAME_STATE(SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_IDLE); |
| 192 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
| 193 |
| 194 // Despite not being able to draw, we do need a BeginImplFrame. |
| 195 EXPECT_TRUE(state.BeginFrameNeeded()); |
| 196 |
| 197 state.OnBeginImplFrame( |
| 198 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
| 199 EXPECT_ACTION_UPDATE_STATE( |
| 200 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
| 201 } |
| 202 |
173 // If commit requested, begin a main frame. | 203 // If commit requested, begin a main frame. |
174 { | 204 { |
175 StateMachine state(default_scheduler_settings); | 205 StateMachine state(default_scheduler_settings); |
176 state.SetCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE); | 206 state.SetCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE); |
177 state.SetCanStart(); | 207 state.SetCanStart(); |
178 state.UpdateState(state.NextAction()); | 208 state.UpdateState(state.NextAction()); |
179 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 209 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
180 state.SetNeedsRedraw(false); | 210 state.SetNeedsRedraw(false); |
181 state.SetVisible(true); | 211 state.SetVisible(true); |
182 state.SetNeedsCommit(); | 212 state.SetNeedsCommit(); |
(...skipping 1741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1924 state.SetVisible(true); | 1954 state.SetVisible(true); |
1925 state.SetCanDraw(true); | 1955 state.SetCanDraw(true); |
1926 | 1956 |
1927 EXPECT_FALSE(state.BeginFrameNeeded()); | 1957 EXPECT_FALSE(state.BeginFrameNeeded()); |
1928 state.SetChildrenNeedBeginFrames(true); | 1958 state.SetChildrenNeedBeginFrames(true); |
1929 EXPECT_TRUE(state.BeginFrameNeeded()); | 1959 EXPECT_TRUE(state.BeginFrameNeeded()); |
1930 } | 1960 } |
1931 | 1961 |
1932 } // namespace | 1962 } // namespace |
1933 } // namespace cc | 1963 } // namespace cc |
OLD | NEW |