Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: Source/WebKit/chromium/tests/CCSchedulerStateMachineTest.cpp

Issue 10202004: Merge 114599 - [chromium] Add canBeginFrame state to CCSchedulerStateMachine to suppress initializa… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1084/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebKit/chromium/ChangeLog ('k') | Source/WebKit/chromium/tests/CCSchedulerTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 void setUpdateMoreResourcesPending(bool b) { m_updateMoreResourcesPending = b; } 68 void setUpdateMoreResourcesPending(bool b) { m_updateMoreResourcesPending = b; }
69 bool updateMoreResourcesPending() const { return m_updateMoreResourcesPendin g; } 69 bool updateMoreResourcesPending() const { return m_updateMoreResourcesPendin g; }
70 }; 70 };
71 71
72 TEST(CCSchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded) 72 TEST(CCSchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
73 { 73 {
74 // If no commit needed, do nothing 74 // If no commit needed, do nothing
75 { 75 {
76 StateMachine state; 76 StateMachine state;
77 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_IDLE); 77 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_IDLE);
78 state.setCanBeginFrame(true);
78 state.setNeedsRedraw(false); 79 state.setNeedsRedraw(false);
79 state.setNeedsCommit(false); 80 state.setNeedsCommit(false);
80 state.setUpdateMoreResourcesPending(false); 81 state.setUpdateMoreResourcesPending(false);
81 state.setVisible(true); 82 state.setVisible(true);
82 83
83 EXPECT_FALSE(state.vsyncCallbackNeeded()); 84 EXPECT_FALSE(state.vsyncCallbackNeeded());
84 85
85 state.didLeaveVSync(); 86 state.didLeaveVSync();
86 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 87 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
87 EXPECT_FALSE(state.vsyncCallbackNeeded()); 88 EXPECT_FALSE(state.vsyncCallbackNeeded());
88 state.didEnterVSync(); 89 state.didEnterVSync();
89 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 90 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
90 } 91 }
91 92
93 // If commit requested but canBeginFrame is still false, do nothing.
94 {
95 StateMachine state;
96 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_IDLE);
97 state.setNeedsRedraw(false);
98 state.setNeedsCommit(false);
99 state.setUpdateMoreResourcesPending(false);
100 state.setVisible(true);
101
102 EXPECT_FALSE(state.vsyncCallbackNeeded());
103
104 state.didLeaveVSync();
105 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
106 EXPECT_FALSE(state.vsyncCallbackNeeded());
107 state.didEnterVSync();
108 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
109 }
110
111
92 // If commit requested, begin a frame 112 // If commit requested, begin a frame
93 { 113 {
94 StateMachine state; 114 StateMachine state;
95 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_IDLE); 115 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_IDLE);
116 state.setCanBeginFrame(true);
96 state.setNeedsRedraw(false); 117 state.setNeedsRedraw(false);
97 state.setNeedsCommit(true); 118 state.setNeedsCommit(true);
98 state.setUpdateMoreResourcesPending(false); 119 state.setUpdateMoreResourcesPending(false);
99 state.setVisible(true); 120 state.setVisible(true);
100 EXPECT_FALSE(state.vsyncCallbackNeeded()); 121 EXPECT_FALSE(state.vsyncCallbackNeeded());
101 } 122 }
102 123
103 // Begin the frame, make sure needsCommit and commitState update correctly. 124 // Begin the frame, make sure needsCommit and commitState update correctly.
104 { 125 {
105 StateMachine state; 126 StateMachine state;
127 state.setCanBeginFrame(true);
106 state.setVisible(true); 128 state.setVisible(true);
107 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 129 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
108 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state .commitState()); 130 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state .commitState());
109 EXPECT_FALSE(state.needsCommit()); 131 EXPECT_FALSE(state.needsCommit());
110 EXPECT_FALSE(state.vsyncCallbackNeeded()); 132 EXPECT_FALSE(state.vsyncCallbackNeeded());
111 } 133 }
112 } 134 }
113 135
114 TEST(CCSchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw) 136 TEST(CCSchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw)
115 { 137 {
116 CCSchedulerStateMachine state; 138 CCSchedulerStateMachine state;
117 state.setNeedsForcedRedraw(); 139 state.setNeedsForcedRedraw();
118 EXPECT_FALSE(state.redrawPending()); 140 EXPECT_FALSE(state.redrawPending());
119 EXPECT_TRUE(state.vsyncCallbackNeeded()); 141 EXPECT_TRUE(state.vsyncCallbackNeeded());
120 } 142 }
121 143
122 TEST(CCSchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAga in) 144 TEST(CCSchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAga in)
123 { 145 {
124 CCSchedulerStateMachine state; 146 CCSchedulerStateMachine state;
147 state.setCanBeginFrame(true);
125 state.setVisible(true); 148 state.setVisible(true);
126 state.setNeedsRedraw(); 149 state.setNeedsRedraw();
127 EXPECT_TRUE(state.redrawPending()); 150 EXPECT_TRUE(state.redrawPending());
128 EXPECT_TRUE(state.vsyncCallbackNeeded()); 151 EXPECT_TRUE(state.vsyncCallbackNeeded());
129 state.didEnterVSync(); 152 state.didEnterVSync();
130 153
131 // We're drawing now. 154 // We're drawing now.
132 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ()); 155 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ());
133 state.updateState(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE); 156 state.updateState(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE);
134 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 157 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
135 EXPECT_FALSE(state.redrawPending()); 158 EXPECT_FALSE(state.redrawPending());
136 EXPECT_FALSE(state.commitPending()); 159 EXPECT_FALSE(state.commitPending());
137 160
138 // Failing the draw makes us require a commit. 161 // Failing the draw makes us require a commit.
139 state.didDrawIfPossibleCompleted(false); 162 state.didDrawIfPossibleCompleted(false);
140 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 163 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
141 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 164 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
142 EXPECT_TRUE(state.redrawPending()); 165 EXPECT_TRUE(state.redrawPending());
143 EXPECT_TRUE(state.commitPending()); 166 EXPECT_TRUE(state.commitPending());
144 } 167 }
145 168
146 TEST(CCSchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemov eNeedsRedraw) 169 TEST(CCSchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemov eNeedsRedraw)
147 { 170 {
148 CCSchedulerStateMachine state; 171 CCSchedulerStateMachine state;
172 state.setCanBeginFrame(true);
149 state.setVisible(true); 173 state.setVisible(true);
150 state.setNeedsRedraw(); 174 state.setNeedsRedraw();
151 EXPECT_TRUE(state.redrawPending()); 175 EXPECT_TRUE(state.redrawPending());
152 EXPECT_TRUE(state.vsyncCallbackNeeded()); 176 EXPECT_TRUE(state.vsyncCallbackNeeded());
153 state.didEnterVSync(); 177 state.didEnterVSync();
154 178
155 // We're drawing now. 179 // We're drawing now.
156 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ()); 180 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ());
157 state.updateState(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE); 181 state.updateState(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE);
158 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 182 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
159 EXPECT_FALSE(state.redrawPending()); 183 EXPECT_FALSE(state.redrawPending());
160 EXPECT_FALSE(state.commitPending()); 184 EXPECT_FALSE(state.commitPending());
161 185
162 // While still in the same vsync callback, set needs redraw again. 186 // While still in the same vsync callback, set needs redraw again.
163 // This should not redraw. 187 // This should not redraw.
164 state.setNeedsRedraw(); 188 state.setNeedsRedraw();
165 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 189 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
166 190
167 // Failing the draw makes us require a commit. 191 // Failing the draw makes us require a commit.
168 state.didDrawIfPossibleCompleted(false); 192 state.didDrawIfPossibleCompleted(false);
169 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 193 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
170 EXPECT_TRUE(state.redrawPending()); 194 EXPECT_TRUE(state.redrawPending());
171 } 195 }
172 196
173 TEST(CCSchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame ) 197 TEST(CCSchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame )
174 { 198 {
175 CCSchedulerStateMachine state; 199 CCSchedulerStateMachine state;
200 state.setCanBeginFrame(true);
176 state.setVisible(true); 201 state.setVisible(true);
177 202
178 // Start a commit. 203 // Start a commit.
179 state.setNeedsCommit(); 204 state.setNeedsCommit();
180 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 205 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
181 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 206 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
182 EXPECT_TRUE(state.commitPending()); 207 EXPECT_TRUE(state.commitPending());
183 208
184 // Then initiate a draw. 209 // Then initiate a draw.
185 state.setNeedsRedraw(); 210 state.setNeedsRedraw();
(...skipping 19 matching lines...) Expand all
205 state.updateState(CCSchedulerStateMachine::ACTION_COMMIT); 230 state.updateState(CCSchedulerStateMachine::ACTION_COMMIT);
206 EXPECT_TRUE(state.redrawPending()); 231 EXPECT_TRUE(state.redrawPending());
207 232
208 // And we should be allowed to draw again. 233 // And we should be allowed to draw again.
209 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ()); 234 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ());
210 } 235 }
211 236
212 TEST(CCSchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotA llowDrawInSameFrame) 237 TEST(CCSchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotA llowDrawInSameFrame)
213 { 238 {
214 CCSchedulerStateMachine state; 239 CCSchedulerStateMachine state;
240 state.setCanBeginFrame(true);
215 state.setVisible(true); 241 state.setVisible(true);
216 242
217 // Start a commit. 243 // Start a commit.
218 state.setNeedsCommit(); 244 state.setNeedsCommit();
219 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 245 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
220 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 246 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
221 EXPECT_TRUE(state.commitPending()); 247 EXPECT_TRUE(state.commitPending());
222 248
223 // Then initiate a draw. 249 // Then initiate a draw.
224 state.setNeedsRedraw(); 250 state.setNeedsRedraw();
(...skipping 30 matching lines...) Expand all
255 state.updateState(CCSchedulerStateMachine::ACTION_COMMIT); 281 state.updateState(CCSchedulerStateMachine::ACTION_COMMIT);
256 EXPECT_TRUE(state.redrawPending()); 282 EXPECT_TRUE(state.redrawPending());
257 283
258 // And we should not be allowed to draw again in the same frame.. 284 // And we should not be allowed to draw again in the same frame..
259 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 285 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
260 } 286 }
261 287
262 TEST(CCSchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync) 288 TEST(CCSchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync)
263 { 289 {
264 CCSchedulerStateMachine state; 290 CCSchedulerStateMachine state;
291 state.setCanBeginFrame(true);
265 state.setVisible(true); 292 state.setVisible(true);
266 293
267 // Start a draw. 294 // Start a draw.
268 state.setNeedsRedraw(); 295 state.setNeedsRedraw();
269 EXPECT_TRUE(state.vsyncCallbackNeeded()); 296 EXPECT_TRUE(state.vsyncCallbackNeeded());
270 state.didEnterVSync(); 297 state.didEnterVSync();
271 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ()); 298 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ());
272 EXPECT_TRUE(state.redrawPending()); 299 EXPECT_TRUE(state.redrawPending());
273 300
274 // Fail the draw. 301 // Fail the draw.
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 state.setCanDraw(false); 467 state.setCanDraw(false);
441 EXPECT_NE(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.ne xtAction()); 468 EXPECT_NE(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.ne xtAction());
442 } 469 }
443 } 470 }
444 } 471 }
445 472
446 TEST(CCSchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgr ess) 473 TEST(CCSchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgr ess)
447 { 474 {
448 StateMachine state; 475 StateMachine state;
449 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST _DRAW); 476 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST _DRAW);
477 state.setCanBeginFrame(true);
450 state.setNeedsCommit(true); 478 state.setNeedsCommit(true);
451 state.setNeedsRedraw(true); 479 state.setNeedsRedraw(true);
452 state.setUpdateMoreResourcesPending(false); 480 state.setUpdateMoreResourcesPending(false);
453 state.setVisible(true); 481 state.setVisible(true);
454 state.setCanDraw(false); 482 state.setCanDraw(false);
455 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 483 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
456 } 484 }
457 485
458 TEST(CCSchedulerStateMachineTest, TestUpdates_NoRedraw_OneRoundOfUpdates) 486 TEST(CCSchedulerStateMachineTest, TestUpdates_NoRedraw_OneRoundOfUpdates)
459 { 487 {
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 // Verify we commit regardless of vsync state 611 // Verify we commit regardless of vsync state
584 state.didLeaveVSync(); 612 state.didLeaveVSync();
585 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction()); 613 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction());
586 state.didEnterVSync(); 614 state.didEnterVSync();
587 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction()); 615 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction());
588 } 616 }
589 617
590 TEST(CCSchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) 618 TEST(CCSchedulerStateMachineTest, TestSetNeedsCommitIsNotLost)
591 { 619 {
592 StateMachine state; 620 StateMachine state;
621 state.setCanBeginFrame(true);
593 state.setNeedsCommit(true); 622 state.setNeedsCommit(true);
594 state.setVisible(true); 623 state.setVisible(true);
595 624
596 // Begin the frame. 625 // Begin the frame.
597 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 626 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
598 state.updateState(state.nextAction()); 627 state.updateState(state.nextAction());
599 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState()); 628 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState());
600 629
601 // Now, while the frame is in progress, set another commit. 630 // Now, while the frame is in progress, set another commit.
602 state.setNeedsCommit(true); 631 state.setNeedsCommit(true);
(...skipping 22 matching lines...) Expand all
625 state.didDrawIfPossibleCompleted(true); 654 state.didDrawIfPossibleCompleted(true);
626 655
627 // Verify that another commit will begin. 656 // Verify that another commit will begin.
628 state.didLeaveVSync(); 657 state.didLeaveVSync();
629 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 658 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
630 } 659 }
631 660
632 TEST(CCSchedulerStateMachineTest, TestFullCycle) 661 TEST(CCSchedulerStateMachineTest, TestFullCycle)
633 { 662 {
634 StateMachine state; 663 StateMachine state;
664 state.setCanBeginFrame(true);
635 state.setVisible(true); 665 state.setVisible(true);
636 666
637 // Start clean and set commit. 667 // Start clean and set commit.
638 state.setNeedsCommit(true); 668 state.setNeedsCommit(true);
639 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 669 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
640 670
641 // Begin the frame. 671 // Begin the frame.
642 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 672 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
643 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState()); 673 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState());
644 EXPECT_FALSE(state.needsCommit()); 674 EXPECT_FALSE(state.needsCommit());
(...skipping 27 matching lines...) Expand all
672 702
673 // Should be synchronized, no draw needed, no action needed. 703 // Should be synchronized, no draw needed, no action needed.
674 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_IDLE, state.commitState()); 704 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_IDLE, state.commitState());
675 EXPECT_FALSE(state.needsRedraw()); 705 EXPECT_FALSE(state.needsRedraw());
676 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 706 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
677 } 707 }
678 708
679 TEST(CCSchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) 709 TEST(CCSchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween)
680 { 710 {
681 StateMachine state; 711 StateMachine state;
712 state.setCanBeginFrame(true);
682 state.setVisible(true); 713 state.setVisible(true);
683 714
684 // Start clean and set commit. 715 // Start clean and set commit.
685 state.setNeedsCommit(true); 716 state.setNeedsCommit(true);
686 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 717 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
687 718
688 // Begin the frame. 719 // Begin the frame.
689 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 720 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
690 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState()); 721 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState());
691 EXPECT_FALSE(state.needsCommit()); 722 EXPECT_FALSE(state.needsCommit());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 TEST(CCSchedulerStateMachineTest, TestRequestCommitInvisible) 761 TEST(CCSchedulerStateMachineTest, TestRequestCommitInvisible)
731 { 762 {
732 StateMachine state; 763 StateMachine state;
733 state.setNeedsCommit(true); 764 state.setNeedsCommit(true);
734 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 765 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
735 } 766 }
736 767
737 TEST(CCSchedulerStateMachineTest, TestGoesInvisibleMidCommit) 768 TEST(CCSchedulerStateMachineTest, TestGoesInvisibleMidCommit)
738 { 769 {
739 StateMachine state; 770 StateMachine state;
771 state.setCanBeginFrame(true);
740 state.setVisible(true); 772 state.setVisible(true);
741 773
742 // Start clean and set commit. 774 // Start clean and set commit.
743 state.setNeedsCommit(true); 775 state.setNeedsCommit(true);
744 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 776 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
745 777
746 // Begin the frame while visible. 778 // Begin the frame while visible.
747 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); 779 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME);
748 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState()); 780 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com mitState());
749 EXPECT_FALSE(state.needsCommit()); 781 EXPECT_FALSE(state.needsCommit());
(...skipping 25 matching lines...) Expand all
775 // Expect to do nothing, both in and out of vsync. 807 // Expect to do nothing, both in and out of vsync.
776 state.didLeaveVSync(); 808 state.didLeaveVSync();
777 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 809 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
778 state.didEnterVSync(); 810 state.didEnterVSync();
779 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 811 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
780 } 812 }
781 813
782 TEST(CCSchedulerStateMachineTest, TestContextLostWhenCompletelyIdle) 814 TEST(CCSchedulerStateMachineTest, TestContextLostWhenCompletelyIdle)
783 { 815 {
784 StateMachine state; 816 StateMachine state;
817 state.setCanBeginFrame(true);
785 state.setVisible(true); 818 state.setVisible(true);
786 819
787 state.didLoseContext(); 820 state.didLoseContext();
788 821
789 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction()); 822 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction());
790 state.updateState(state.nextAction()); 823 state.updateState(state.nextAction());
791 824
792 // Once context recreation begins, nothing should happen. 825 // Once context recreation begins, nothing should happen.
793 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 826 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
794 827
795 // Recreate the context 828 // Recreate the context
796 state.didRecreateContext(); 829 state.didRecreateContext();
797 830
798 // When the context is recreated, we should begin a commit 831 // When the context is recreated, we should begin a commit
799 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 832 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
800 state.updateState(state.nextAction()); 833 state.updateState(state.nextAction());
801 } 834 }
802 835
803 TEST(CCSchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhile Recreating) 836 TEST(CCSchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhile Recreating)
804 { 837 {
805 StateMachine state; 838 StateMachine state;
839 state.setCanBeginFrame(true);
806 state.setVisible(true); 840 state.setVisible(true);
807 841
808 state.didLoseContext(); 842 state.didLoseContext();
809 843
810 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction()); 844 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction());
811 state.updateState(state.nextAction()); 845 state.updateState(state.nextAction());
812 846
813 // Once context recreation begins, nothing should happen. 847 // Once context recreation begins, nothing should happen.
814 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 848 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
815 849
(...skipping 15 matching lines...) Expand all
831 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ()); 865 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_IF_POSSIBLE, state.nextAction ());
832 state.setCanDraw(false); 866 state.setCanDraw(false);
833 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 867 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
834 state.setCanDraw(true); 868 state.setCanDraw(true);
835 state.didLeaveVSync(); 869 state.didLeaveVSync();
836 } 870 }
837 871
838 TEST(CCSchedulerStateMachineTest, TestContextLostWhileCommitInProgress) 872 TEST(CCSchedulerStateMachineTest, TestContextLostWhileCommitInProgress)
839 { 873 {
840 StateMachine state; 874 StateMachine state;
875 state.setCanBeginFrame(true);
841 state.setVisible(true); 876 state.setVisible(true);
842 877
843 // Get a commit in flight. 878 // Get a commit in flight.
844 state.setNeedsCommit(true); 879 state.setNeedsCommit(true);
845 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 880 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
846 state.updateState(state.nextAction()); 881 state.updateState(state.nextAction());
847 882
848 // Set damage and expect a draw. 883 // Set damage and expect a draw.
849 state.setNeedsRedraw(true); 884 state.setNeedsRedraw(true);
850 state.didEnterVSync(); 885 state.didEnterVSync();
(...skipping 20 matching lines...) Expand all
871 // Expect to be told to begin context recreation, independent of vsync state 906 // Expect to be told to begin context recreation, independent of vsync state
872 state.didEnterVSync(); 907 state.didEnterVSync();
873 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction()); 908 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction());
874 state.didLeaveVSync(); 909 state.didLeaveVSync();
875 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction()); 910 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_CONTEXT_RECREATION, state.ne xtAction());
876 } 911 }
877 912
878 TEST(CCSchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnother CommitRequested) 913 TEST(CCSchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnother CommitRequested)
879 { 914 {
880 StateMachine state; 915 StateMachine state;
916 state.setCanBeginFrame(true);
881 state.setVisible(true); 917 state.setVisible(true);
882 918
883 // Get a commit in flight. 919 // Get a commit in flight.
884 state.setNeedsCommit(true); 920 state.setNeedsCommit(true);
885 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 921 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
886 state.updateState(state.nextAction()); 922 state.updateState(state.nextAction());
887 923
888 // Set damage and expect a draw. 924 // Set damage and expect a draw.
889 state.setNeedsRedraw(true); 925 state.setNeedsRedraw(true);
890 state.didEnterVSync(); 926 state.didEnterVSync();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 // Ask a forced redraw and verify it ocurrs. 985 // Ask a forced redraw and verify it ocurrs.
950 state.setNeedsForcedRedraw(true); 986 state.setNeedsForcedRedraw(true);
951 state.didEnterVSync(); 987 state.didEnterVSync();
952 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_FORCED, state.nextAction()); 988 EXPECT_EQ(CCSchedulerStateMachine::ACTION_DRAW_FORCED, state.nextAction());
953 state.didLeaveVSync(); 989 state.didLeaveVSync();
954 } 990 }
955 991
956 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenInvisibleAndForceCommit) 992 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenInvisibleAndForceCommit)
957 { 993 {
958 StateMachine state; 994 StateMachine state;
995 state.setCanBeginFrame(true);
996 state.setVisible(false);
997 state.setNeedsCommit(true);
998 state.setNeedsForcedCommit(true);
999 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
1000 }
1001
1002 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenCanBeginFrameFalseAndForceCo mmit)
1003 {
1004 StateMachine state;
959 state.setVisible(true); 1005 state.setVisible(true);
960 state.setNeedsCommit(true); 1006 state.setNeedsCommit(true);
961 state.setNeedsForcedCommit(true); 1007 state.setNeedsForcedCommit(true);
962 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 1008 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
963 } 1009 }
964 1010
965 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenCommitInProgress) 1011 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenCommitInProgress)
966 { 1012 {
967 StateMachine state; 1013 StateMachine state;
1014 state.setCanBeginFrame(true);
968 state.setVisible(false); 1015 state.setVisible(false);
969 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS ); 1016 state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS );
970 state.setNeedsCommit(true); 1017 state.setNeedsCommit(true);
971 state.setNeedsForcedCommit(true); 1018 state.setNeedsForcedCommit(true);
972 1019
973 state.beginFrameComplete(); 1020 state.beginFrameComplete();
974 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES, state .nextAction()); 1021 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES, state .nextAction());
975 state.updateState(state.nextAction()); 1022 state.updateState(state.nextAction());
976 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); 1023 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction());
977 state.beginUpdateMoreResourcesComplete(false); 1024 state.beginUpdateMoreResourcesComplete(false);
978 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction()); 1025 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction());
979 state.updateState(state.nextAction()); 1026 state.updateState(state.nextAction());
980 1027
981 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_IDLE, state.commitState()); 1028 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_IDLE, state.commitState());
982 1029
983 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 1030 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
984 } 1031 }
985 1032
986 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenContextLost) 1033 TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenContextLost)
987 { 1034 {
988 StateMachine state; 1035 StateMachine state;
1036 state.setCanBeginFrame(true);
989 state.setVisible(true); 1037 state.setVisible(true);
990 state.setNeedsCommit(true); 1038 state.setNeedsCommit(true);
991 state.setNeedsForcedCommit(true); 1039 state.setNeedsForcedCommit(true);
992 state.didLoseContext(); 1040 state.didLoseContext();
993 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); 1041 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
994 } 1042 }
995 1043
996 } 1044 }
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/ChangeLog ('k') | Source/WebKit/chromium/tests/CCSchedulerTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698