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 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1072 TEST(SchedulerStateMachineTest, TestRequestCommitInvisible) { | 1072 TEST(SchedulerStateMachineTest, TestRequestCommitInvisible) { |
1073 SchedulerSettings default_scheduler_settings; | 1073 SchedulerSettings default_scheduler_settings; |
1074 StateMachine state(default_scheduler_settings); | 1074 StateMachine state(default_scheduler_settings); |
1075 state.SetCanStart(); | 1075 state.SetCanStart(); |
1076 state.UpdateState(state.NextAction()); | 1076 state.UpdateState(state.NextAction()); |
1077 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1077 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
1078 state.SetNeedsCommit(); | 1078 state.SetNeedsCommit(); |
1079 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1079 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1080 } | 1080 } |
1081 | 1081 |
1082 TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeFinishCommit) { | 1082 // See ThreadProxy::BeginMainFrame "EarlyOut_NotVisible" / |
| 1083 // "EarlyOut_OutputSurfaceLost" cases. |
| 1084 TEST(SchedulerStateMachineTest, TestAbortBeginMainFrameBecauseInvisible) { |
1083 SchedulerSettings default_scheduler_settings; | 1085 SchedulerSettings default_scheduler_settings; |
1084 StateMachine state(default_scheduler_settings); | 1086 StateMachine state(default_scheduler_settings); |
1085 state.SetCanStart(); | 1087 state.SetCanStart(); |
1086 state.UpdateState(state.NextAction()); | 1088 state.UpdateState(state.NextAction()); |
1087 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1089 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
1088 state.SetVisible(true); | 1090 state.SetVisible(true); |
1089 state.SetCanDraw(true); | 1091 state.SetCanDraw(true); |
1090 | 1092 |
1091 // Start clean and set commit. | 1093 // Start clean and set commit. |
1092 state.SetNeedsCommit(); | 1094 state.SetNeedsCommit(); |
1093 | 1095 |
1094 // Begin the frame while visible. | 1096 // Begin the frame while visible. |
1095 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1097 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
1096 EXPECT_ACTION_UPDATE_STATE( | 1098 EXPECT_ACTION_UPDATE_STATE( |
1097 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1099 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
1098 EXPECT_COMMIT_STATE( | 1100 EXPECT_COMMIT_STATE( |
1099 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); | 1101 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); |
1100 EXPECT_FALSE(state.NeedsCommit()); | 1102 EXPECT_FALSE(state.NeedsCommit()); |
1101 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1103 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1102 | 1104 |
1103 // Become invisible and abort BeginMainFrame. | 1105 // Become invisible and abort BeginMainFrame. |
1104 state.SetVisible(false); | 1106 state.SetVisible(false); |
1105 state.BeginMainFrameAborted(false); | 1107 state.BeginMainFrameAborted(CommitEarlyOutReason::ABORTED_NOT_VISIBLE); |
| 1108 |
| 1109 // NeedsCommit should now be true again because we never actually did a |
| 1110 // commit. |
| 1111 EXPECT_TRUE(state.NeedsCommit()); |
1106 | 1112 |
1107 // We should now be back in the idle state as if we never started the frame. | 1113 // We should now be back in the idle state as if we never started the frame. |
1108 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | 1114 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
1109 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1115 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1110 | 1116 |
1111 // We shouldn't do anything on the BeginImplFrame deadline. | 1117 // We shouldn't do anything on the BeginImplFrame deadline. |
1112 state.OnBeginImplFrameDeadline(); | 1118 state.OnBeginImplFrameDeadline(); |
1113 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1119 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1114 | 1120 |
1115 // Become visible again. | 1121 // Become visible again. |
1116 state.SetVisible(true); | 1122 state.SetVisible(true); |
1117 | 1123 |
1118 // Although we have aborted on this frame and haven't cancelled the commit | 1124 // Although we have aborted on this frame and haven't cancelled the commit |
1119 // (i.e. need another), don't send another BeginMainFrame yet. | 1125 // (i.e. need another), don't send another BeginMainFrame yet. |
1120 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | 1126 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
1121 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | 1127 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
1122 EXPECT_TRUE(state.NeedsCommit()); | 1128 EXPECT_TRUE(state.NeedsCommit()); |
1123 | 1129 |
1124 // Start a new frame. | 1130 // Start a new frame. |
1125 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1131 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
1126 EXPECT_ACTION_UPDATE_STATE( | 1132 EXPECT_ACTION_UPDATE_STATE( |
1127 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1133 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
1128 | 1134 |
1129 // We should be starting the commit now. | 1135 // We should be starting the commit now. |
1130 EXPECT_COMMIT_STATE( | 1136 EXPECT_COMMIT_STATE( |
1131 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); | 1137 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); |
1132 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1138 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1133 } | 1139 } |
1134 | 1140 |
1135 TEST(SchedulerStateMachineTest, AbortBeginMainFrameAndCancelCommit) { | 1141 // See ThreadProxy::BeginMainFrame "EarlyOut_NoUpdates" case. |
| 1142 TEST(SchedulerStateMachineTest, TestAbortBeginMainFrameBecauseCommitNotNeeded) { |
1136 SchedulerSettings default_scheduler_settings; | 1143 SchedulerSettings default_scheduler_settings; |
1137 StateMachine state(default_scheduler_settings); | 1144 StateMachine state(default_scheduler_settings); |
1138 state.SetCanStart(); | 1145 state.SetCanStart(); |
1139 state.UpdateState(state.NextAction()); | 1146 state.UpdateState(state.NextAction()); |
1140 state.DidCreateAndInitializeOutputSurface(); | 1147 state.DidCreateAndInitializeOutputSurface(); |
1141 state.SetVisible(true); | 1148 state.SetVisible(true); |
1142 state.SetCanDraw(true); | 1149 state.SetCanDraw(true); |
1143 | 1150 |
1144 // Get into a begin frame / commit state. | 1151 // Get into a begin frame / commit state. |
1145 state.SetNeedsCommit(); | 1152 state.SetNeedsCommit(); |
1146 | 1153 |
1147 EXPECT_ACTION_UPDATE_STATE( | 1154 EXPECT_ACTION_UPDATE_STATE( |
1148 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1155 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
1149 EXPECT_COMMIT_STATE( | 1156 EXPECT_COMMIT_STATE( |
1150 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); | 1157 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); |
1151 EXPECT_FALSE(state.NeedsCommit()); | 1158 EXPECT_FALSE(state.NeedsCommit()); |
1152 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | 1159 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
1153 | 1160 |
1154 // Abort the commit, cancelling future commits. | 1161 // Abort the commit, true means that the BeginMainFrame was sent but there |
1155 state.BeginMainFrameAborted(true); | 1162 // was no work to do on the main thread. |
| 1163 state.BeginMainFrameAborted(CommitEarlyOutReason::FINISHED_NO_UPDATES); |
1156 | 1164 |
| 1165 // NeedsCommit should now be false because the commit was actually handled. |
| 1166 EXPECT_FALSE(state.NeedsCommit()); |
1157 // Verify that another commit doesn't start on the same frame. | 1167 // Verify that another commit doesn't start on the same frame. |
1158 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | 1168 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
1159 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | 1169 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
1160 EXPECT_FALSE(state.NeedsCommit()); | |
1161 | 1170 |
1162 // Start a new frame; draw because this is the first frame since output | 1171 // Even though the commit was aborted, we still expect to draw the new frame. |
1163 // surface init'd. | |
1164 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | 1172 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); |
1165 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | 1173 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
1166 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1174 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1167 state.OnBeginImplFrameDeadline(); | 1175 state.OnBeginImplFrameDeadline(); |
1168 EXPECT_ACTION_UPDATE_STATE( | 1176 EXPECT_ACTION_UPDATE_STATE( |
1169 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); | 1177 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); |
1170 state.DidSwapBuffers(); | |
1171 state.DidSwapBuffersComplete(); | |
1172 | |
1173 // Verify another commit doesn't start on another frame either. | |
1174 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1175 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1176 EXPECT_FALSE(state.NeedsCommit()); | |
1177 | |
1178 // Verify another commit can start if requested, though. | |
1179 state.SetNeedsCommit(); | |
1180 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1181 EXPECT_ACTION(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | |
1182 } | |
1183 | |
1184 TEST(SchedulerStateMachineTest, | |
1185 AbortBeginMainFrameAndCancelCommitWhenInvisible) { | |
1186 SchedulerSettings default_scheduler_settings; | |
1187 StateMachine state(default_scheduler_settings); | |
1188 state.SetCanStart(); | |
1189 state.UpdateState(state.NextAction()); | |
1190 state.DidCreateAndInitializeOutputSurface(); | |
1191 state.SetVisible(true); | |
1192 state.SetCanDraw(true); | |
1193 | |
1194 // Get into a begin frame / commit state. | |
1195 state.SetNeedsCommit(); | |
1196 | |
1197 EXPECT_ACTION_UPDATE_STATE( | |
1198 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | |
1199 EXPECT_COMMIT_STATE( | |
1200 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); | |
1201 EXPECT_FALSE(state.NeedsCommit()); | |
1202 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1203 | |
1204 // Become invisible and abort BeginMainFrame. | |
1205 state.SetVisible(false); | |
1206 state.BeginMainFrameAborted(true); | |
1207 | |
1208 // Verify that another commit doesn't start on the same frame. | |
1209 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1210 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1211 EXPECT_FALSE(state.NeedsCommit()); | |
1212 | |
1213 // Become visible and start a new frame. | |
1214 state.SetVisible(true); | |
1215 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | |
1216 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | |
1217 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | |
1218 | |
1219 // Draw because this is the first frame since output surface init'd. | |
1220 state.OnBeginImplFrameDeadline(); | |
1221 EXPECT_ACTION_UPDATE_STATE( | |
1222 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); | |
1223 state.DidSwapBuffers(); | 1178 state.DidSwapBuffers(); |
1224 state.DidSwapBuffersComplete(); | 1179 state.DidSwapBuffersComplete(); |
1225 | 1180 |
1226 // Verify another commit doesn't start on another frame either. | 1181 // Verify another commit doesn't start on another frame either. |
1227 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | 1182 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
1228 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | 1183 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); |
1229 EXPECT_FALSE(state.NeedsCommit()); | 1184 EXPECT_FALSE(state.NeedsCommit()); |
1230 | 1185 |
1231 // Verify another commit can start if requested, though. | 1186 // Verify another commit can start if requested, though. |
1232 state.SetNeedsCommit(); | 1187 state.SetNeedsCommit(); |
1233 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | 1188 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); |
1234 EXPECT_ACTION(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1189 EXPECT_ACTION(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
1235 } | 1190 } |
1236 | 1191 |
1237 TEST(SchedulerStateMachineTest, | |
1238 AbortBeginMainFrameAndRequestCommitWhenInvisible) { | |
1239 SchedulerSettings default_scheduler_settings; | |
1240 StateMachine state(default_scheduler_settings); | |
1241 state.SetCanStart(); | |
1242 state.UpdateState(state.NextAction()); | |
1243 state.DidCreateAndInitializeOutputSurface(); | |
1244 state.SetVisible(true); | |
1245 state.SetCanDraw(true); | |
1246 | |
1247 // Get into a begin frame / commit state. | |
1248 state.SetNeedsCommit(); | |
1249 | |
1250 EXPECT_ACTION_UPDATE_STATE( | |
1251 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | |
1252 EXPECT_COMMIT_STATE( | |
1253 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); | |
1254 EXPECT_FALSE(state.NeedsCommit()); | |
1255 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1256 | |
1257 // Become invisible and abort BeginMainFrame. | |
1258 state.SetVisible(false); | |
1259 state.BeginMainFrameAborted(true); | |
1260 | |
1261 // Verify that another commit doesn't start on the same frame. | |
1262 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1263 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1264 EXPECT_FALSE(state.NeedsCommit()); | |
1265 | |
1266 // Asking for a commit while not visible won't make it happen. | |
1267 state.SetNeedsCommit(); | |
1268 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1269 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1270 EXPECT_TRUE(state.NeedsCommit()); | |
1271 | |
1272 // Become visible but nothing happens until the next frame. | |
1273 state.SetVisible(true); | |
1274 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1275 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1276 EXPECT_TRUE(state.NeedsCommit()); | |
1277 | |
1278 // We should get that commit when we begin the next frame. | |
1279 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | |
1280 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | |
1281 EXPECT_ACTION_UPDATE_STATE( | |
1282 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | |
1283 } | |
1284 | |
1285 TEST(SchedulerStateMachineTest, | |
1286 AbortBeginMainFrameAndRequestCommitAndBeginImplFrameWhenInvisible) { | |
1287 SchedulerSettings default_scheduler_settings; | |
1288 StateMachine state(default_scheduler_settings); | |
1289 state.SetCanStart(); | |
1290 state.UpdateState(state.NextAction()); | |
1291 state.DidCreateAndInitializeOutputSurface(); | |
1292 state.SetVisible(true); | |
1293 state.SetCanDraw(true); | |
1294 | |
1295 // Get into a begin frame / commit state. | |
1296 state.SetNeedsCommit(); | |
1297 | |
1298 EXPECT_ACTION_UPDATE_STATE( | |
1299 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | |
1300 EXPECT_COMMIT_STATE( | |
1301 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); | |
1302 EXPECT_FALSE(state.NeedsCommit()); | |
1303 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1304 | |
1305 // Become invisible and abort BeginMainFrame. | |
1306 state.SetVisible(false); | |
1307 state.BeginMainFrameAborted(true); | |
1308 | |
1309 // Asking for a commit while not visible won't make it happen. | |
1310 state.SetNeedsCommit(); | |
1311 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1312 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1313 EXPECT_TRUE(state.NeedsCommit()); | |
1314 | |
1315 // Begin a frame when not visible, the scheduler animates but does not commit. | |
1316 state.OnBeginImplFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); | |
1317 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1318 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | |
1319 EXPECT_ACTION(SchedulerStateMachine::ACTION_NONE); | |
1320 EXPECT_TRUE(state.NeedsCommit()); | |
1321 | |
1322 // Become visible and the requested commit happens immediately. | |
1323 state.SetVisible(true); | |
1324 EXPECT_COMMIT_STATE(SchedulerStateMachine::COMMIT_STATE_IDLE); | |
1325 EXPECT_ACTION_UPDATE_STATE( | |
1326 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | |
1327 } | |
1328 | |
1329 TEST(SchedulerStateMachineTest, TestFirstContextCreation) { | 1192 TEST(SchedulerStateMachineTest, TestFirstContextCreation) { |
1330 SchedulerSettings default_scheduler_settings; | 1193 SchedulerSettings default_scheduler_settings; |
1331 StateMachine state(default_scheduler_settings); | 1194 StateMachine state(default_scheduler_settings); |
1332 state.SetCanStart(); | 1195 state.SetCanStart(); |
1333 state.SetVisible(true); | 1196 state.SetVisible(true); |
1334 state.SetCanDraw(true); | 1197 state.SetCanDraw(true); |
1335 | 1198 |
1336 EXPECT_ACTION_UPDATE_STATE( | 1199 EXPECT_ACTION_UPDATE_STATE( |
1337 SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); | 1200 SchedulerStateMachine::ACTION_BEGIN_OUTPUT_SURFACE_CREATION); |
1338 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); | 1201 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); |
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1750 state.SetNeedsCommit(); | 1613 state.SetNeedsCommit(); |
1751 | 1614 |
1752 // We should start the commit normally. | 1615 // We should start the commit normally. |
1753 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); | 1616 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); |
1754 EXPECT_ACTION_UPDATE_STATE( | 1617 EXPECT_ACTION_UPDATE_STATE( |
1755 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); | 1618 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); |
1756 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); | 1619 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); |
1757 | 1620 |
1758 // Since only the scroll offset changed, the main thread will abort the | 1621 // Since only the scroll offset changed, the main thread will abort the |
1759 // commit. | 1622 // commit. |
1760 state.BeginMainFrameAborted(true); | 1623 state.BeginMainFrameAborted(CommitEarlyOutReason::FINISHED_NO_UPDATES); |
1761 | 1624 |
1762 // Since the commit was aborted, we should draw right away instead of waiting | 1625 // Since the commit was aborted, we should draw right away instead of waiting |
1763 // for the deadline. | 1626 // for the deadline. |
1764 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); | 1627 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineImmediately()); |
1765 } | 1628 } |
1766 | 1629 |
1767 void FinishPreviousCommitAndDrawWithoutExitingDeadline( | 1630 void FinishPreviousCommitAndDrawWithoutExitingDeadline( |
1768 StateMachine* state_ptr) { | 1631 StateMachine* state_ptr) { |
1769 // Gross, but allows us to use macros below. | 1632 // Gross, but allows us to use macros below. |
1770 StateMachine& state = *state_ptr; | 1633 StateMachine& state = *state_ptr; |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1992 state.SetVisible(true); | 1855 state.SetVisible(true); |
1993 state.SetCanDraw(true); | 1856 state.SetCanDraw(true); |
1994 | 1857 |
1995 EXPECT_FALSE(state.BeginFrameNeeded()); | 1858 EXPECT_FALSE(state.BeginFrameNeeded()); |
1996 state.SetChildrenNeedBeginFrames(true); | 1859 state.SetChildrenNeedBeginFrames(true); |
1997 EXPECT_TRUE(state.BeginFrameNeeded()); | 1860 EXPECT_TRUE(state.BeginFrameNeeded()); |
1998 } | 1861 } |
1999 | 1862 |
2000 } // namespace | 1863 } // namespace |
2001 } // namespace cc | 1864 } // namespace cc |
OLD | NEW |