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 08e7d8229f5c280d624eeab202c3b7bbe61f4ac7..1a2f0f23b4005939d855b12b79ebf89d264f630b 100644 |
--- a/cc/scheduler/scheduler_state_machine_unittest.cc |
+++ b/cc/scheduler/scheduler_state_machine_unittest.cc |
@@ -7,20 +7,40 @@ |
#include "cc/scheduler/scheduler.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-#define EXPECT_ACTION_UPDATE_STATE(action) \ |
- EXPECT_EQ(action, state.NextAction()) << *state.AsValue(); \ |
- state.UpdateState(action); |
+#define EXPECT_ACTION_UPDATE_STATE(action) \ |
+ EXPECT_EQ(action, state.NextAction()) << *state.ToValue(); \ |
+ if (action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE || \ |
Sami
2013/08/30 13:49:06
Nit: maybe separate this part into a normal functi
brianderson
2013/09/03 22:51:47
I wanted to do that, but then we lose information
|
+ action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED) { \ |
+ if (SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW == \ |
+ state.CommitState() && \ |
+ SchedulerStateMachine::OUTPUT_SURFACE_ACTIVE != \ |
+ state.output_surface_state()) \ |
+ return; \ |
+ EXPECT_EQ(SchedulerStateMachine::BEGIN_FRAME_STATE_INSIDE_DEADLINE, \ |
+ state.begin_frame_state()) \ |
+ << *state.ToValue(); \ |
+ } \ |
+ state.UpdateState(action); \ |
+ if (action == SchedulerStateMachine::ACTION_NONE) { \ |
+ state.AdvanceBeginFrameStateWhenNoActionsRemain(); \ |
+ } |
namespace cc { |
namespace { |
+const SchedulerStateMachine::BeginFrameState all_begin_frame_states[] = { |
+ SchedulerStateMachine::BEGIN_FRAME_STATE_IDLE, |
+ SchedulerStateMachine::BEGIN_FRAME_STATE_INSIDE_BEGIN_FRAME, |
+ SchedulerStateMachine::BEGIN_FRAME_STATE_DEADLINE_PENDING, |
+ SchedulerStateMachine::BEGIN_FRAME_STATE_INSIDE_DEADLINE, }; |
+ |
const SchedulerStateMachine::CommitState all_commit_states[] = { |
- SchedulerStateMachine::COMMIT_STATE_IDLE, |
- SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, |
- SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, |
- SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW |
-}; |
+ SchedulerStateMachine::COMMIT_STATE_IDLE, |
+ SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, |
+ SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, |
+ SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_ACTIVATION, |
+ SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, }; |
// Exposes the protected state fields of the SchedulerStateMachine for testing |
class StateMachine : public SchedulerStateMachine { |
@@ -36,6 +56,9 @@ class StateMachine : public SchedulerStateMachine { |
void SetCommitState(CommitState cs) { commit_state_ = cs; } |
CommitState CommitState() const { return commit_state_; } |
+ void SetBeginFrameState(BeginFrameState bfs) { begin_frame_state_ = bfs; } |
+ BeginFrameState begin_frame_state() const { return begin_frame_state_; } |
+ |
OutputSurfaceState output_surface_state() { return output_surface_state_; } |
bool NeedsCommit() const { return needs_commit_; } |