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

Unified Diff: cc/scheduler/scheduler_state_machine_unittest.cc

Issue 131683005: cc: Make PrepareToDraw return an enum for why it aborts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: cc/scheduler/scheduler_state_machine_unittest.cc
diff --git a/cc/scheduler/scheduler_state_machine_unittest.cc b/cc/scheduler/scheduler_state_machine_unittest.cc
index 67925a059b39b2295b977f9cacb5cc28ed487ba5..c67ae4d3f4036ab08cbdef5ffd0608eae48a52d3 100644
--- a/cc/scheduler/scheduler_state_machine_unittest.cc
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc
@@ -173,8 +173,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsMainFrameIfNeeded) {
}
}
-TEST(SchedulerStateMachineTest,
- TestFailedDrawSetsNeedsCommitAndDoesNotDrawAgain) {
+TEST(SchedulerStateMachineTest, TestFailedDrawSetsRedrawAndCommitFlags) {
SchedulerSettings default_scheduler_settings;
StateMachine state(default_scheduler_settings);
state.SetCanStart();
@@ -185,25 +184,42 @@ TEST(SchedulerStateMachineTest,
state.SetNeedsRedraw(true);
EXPECT_TRUE(state.RedrawPending());
EXPECT_TRUE(state.BeginImplFrameNeeded());
- state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
- EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
- state.OnBeginImplFrameDeadline();
- // We're drawing now.
- EXPECT_ACTION_UPDATE_STATE(
- SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
+ DrawSwapReadbackResult::DrawResult aborts[] = {
brianderson 2014/01/29 01:31:22 Thanks for testing all the new abort results.
+ DrawSwapReadbackResult::DRAW_ABORTED_CANT_DRAW,
+ DrawSwapReadbackResult::DRAW_ABORTED_NO_TREE,
+ DrawSwapReadbackResult::DRAW_ABORTED_NO_RENDERER,
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS, };
- EXPECT_FALSE(state.RedrawPending());
- EXPECT_FALSE(state.CommitPending());
+ for (size_t i = 0; i < arraysize(aborts); ++i) {
+ state.SetNeedsRedraw(true);
+ state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
+ state.OnBeginImplFrameDeadline();
- // Failing the draw makes us require a commit.
- state.DidDrawIfPossibleCompleted(false);
- state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
- EXPECT_ACTION_UPDATE_STATE(
- SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
- EXPECT_TRUE(state.RedrawPending());
- EXPECT_TRUE(state.CommitPending());
+ EXPECT_ACTION_UPDATE_STATE(
+ SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
+ EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
+ EXPECT_FALSE(state.RedrawPending());
+ EXPECT_FALSE(state.CommitPending());
+
+ state.DidDrawIfPossibleCompleted(aborts[i]);
+
+ if (aborts[i] ==
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS) {
+ // Failing the draw for checkerboarding causes a commit/redraw.
+ state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
+ EXPECT_ACTION_UPDATE_STATE(
+ SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
+ EXPECT_TRUE(state.RedrawPending());
+ EXPECT_TRUE(state.CommitPending());
+ } else {
+ // Failing the draw for most reasons does not require a commit or a
+ // redraw.
+ EXPECT_FALSE(state.RedrawPending());
+ EXPECT_FALSE(state.CommitPending());
+ }
+ }
}
TEST(SchedulerStateMachineTest,
@@ -235,8 +251,9 @@ TEST(SchedulerStateMachineTest,
state.SetNeedsRedraw(true);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
- // Failing the draw makes us require a commit.
- state.DidDrawIfPossibleCompleted(false);
+ // Failing the draw for animation checkerboards makes us require a commit.
+ state.DidDrawIfPossibleCompleted(
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
@@ -277,7 +294,8 @@ void TestFailedDrawsWillEventuallyForceADrawAfterTheNextCommit(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
// Fail the draw.
- state.DidDrawIfPossibleCompleted(false);
+ state.DidDrawIfPossibleCompleted(
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
EXPECT_TRUE(state.BeginImplFrameNeeded());
EXPECT_TRUE(state.RedrawPending());
@@ -316,9 +334,9 @@ TEST(SchedulerStateMachineTest,
void TestFailedDrawsDoNotRestartForcedDraw(
bool deadline_scheduling_enabled) {
SchedulerSettings scheduler_settings;
- int drawLimit = 1;
+ int draw_limit = 1;
scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced_ =
- drawLimit;
+ draw_limit;
scheduler_settings.deadline_scheduling_enabled = deadline_scheduling_enabled;
scheduler_settings.impl_side_painting = true;
StateMachine state(scheduler_settings);
@@ -351,9 +369,10 @@ void TestFailedDrawsDoNotRestartForcedDraw(
// Fail the draw enough times to force a redraw,
// then once more for good measure.
- for (int i = 0; i < drawLimit; ++i)
- state.DidDrawIfPossibleCompleted(false);
- state.DidDrawIfPossibleCompleted(false);
+ for (int i = 0; i < draw_limit + 1; ++i) {
+ state.DidDrawIfPossibleCompleted(
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
+ }
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
EXPECT_TRUE(state.BeginImplFrameNeeded());
EXPECT_TRUE(state.RedrawPending());
@@ -374,9 +393,10 @@ void TestFailedDrawsDoNotRestartForcedDraw(
// After failing additional draws, we should still be in a forced
// redraw, but not back in WAITING_FOR_COMMIT.
- for (int i = 0; i < drawLimit; ++i)
- state.DidDrawIfPossibleCompleted(false);
- state.DidDrawIfPossibleCompleted(false);
+ for (int i = 0; i < draw_limit + 1; ++i) {
+ state.DidDrawIfPossibleCompleted(
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
+ }
EXPECT_TRUE(state.RedrawPending());
EXPECT_TRUE(state.ForcedRedrawState() ==
SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
@@ -415,8 +435,9 @@ TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) {
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- // Fail the draw
- state.DidDrawIfPossibleCompleted(false);
+ // Failing the draw for animation checkerboards makes us require a commit.
+ state.DidDrawIfPossibleCompleted(
+ DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
@@ -453,7 +474,7 @@ TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) {
state.OnBeginImplFrameDeadline();
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
// Before the next BeginImplFrame, set needs redraw again.
@@ -470,7 +491,7 @@ TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) {
state.OnBeginImplFrameDeadline();
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
// We just swapped, so we should proactively request another BeginImplFrame.
@@ -715,7 +736,7 @@ TEST(SchedulerStateMachineTest, TestsetNeedsCommitIsNotLost) {
state.CommitState());
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
// Verify that another commit will start immediately after draw.
EXPECT_ACTION_UPDATE_STATE(
@@ -762,7 +783,7 @@ TEST(SchedulerStateMachineTest, TestFullCycle) {
state.OnBeginImplFrameDeadline();
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
// Should be synchronized, no draw needed, no action needed.
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
@@ -813,7 +834,7 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) {
state.OnBeginImplFrameDeadline();
EXPECT_ACTION_UPDATE_STATE(
SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
// Should be synchronized, no draw needed, no action needed.
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
@@ -1449,7 +1470,7 @@ TEST(SchedulerStateMachineTest, TestImmediateFinishCommit) {
state.CommitState());
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
@@ -1492,7 +1513,7 @@ void TestImmediateFinishCommitDuringCommit(bool deadline_scheduling_enabled) {
state.CommitState());
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
// Should be waiting for the normal BeginMainFrame.
@@ -1546,7 +1567,7 @@ void ImmediateBeginMainFrameAbortedWhileInvisible(
state.CommitState());
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
// Should be waiting for BeginMainFrame.
@@ -1602,7 +1623,7 @@ TEST(SchedulerStateMachineTest, ImmediateFinishCommitWhileCantDraw) {
state.CommitState());
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
- state.DidDrawIfPossibleCompleted(true);
+ state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DID_DRAW);
EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
}

Powered by Google App Engine
This is Rietveld 408576698