| OLD | NEW |
| 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 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); | 758 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); |
| 759 } | 759 } |
| 760 | 760 |
| 761 TEST(CCSchedulerStateMachineTest, TestRequestCommitInvisible) | 761 TEST(CCSchedulerStateMachineTest, TestRequestCommitInvisible) |
| 762 { | 762 { |
| 763 StateMachine state; | 763 StateMachine state; |
| 764 state.setNeedsCommit(true); | 764 state.setNeedsCommit(true); |
| 765 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); | 765 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); |
| 766 } | 766 } |
| 767 | 767 |
| 768 TEST(CCSchedulerStateMachineTest, TestGoesInvisibleMidCommit) | 768 TEST(CCSchedulerStateMachineTest, TestGoesInvisibleBeforeBeginFrameCompletes) |
| 769 { | 769 { |
| 770 StateMachine state; | 770 StateMachine state; |
| 771 state.setCanBeginFrame(true); | 771 state.setCanBeginFrame(true); |
| 772 state.setVisible(true); | 772 state.setVisible(true); |
| 773 | 773 |
| 774 // Start clean and set commit. | 774 // Start clean and set commit. |
| 775 state.setNeedsCommit(true); | 775 state.setNeedsCommit(true); |
| 776 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); | 776 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); |
| 777 | 777 |
| 778 // Begin the frame while visible. | 778 // Begin the frame while visible. |
| 779 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); | 779 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_FRAME); |
| 780 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com
mitState()); | 780 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS, state.com
mitState()); |
| 781 EXPECT_FALSE(state.needsCommit()); | 781 EXPECT_FALSE(state.needsCommit()); |
| 782 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); | 782 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); |
| 783 | 783 |
| 784 // Become invisible | 784 // Become invisible and abort the beginFrame. |
| 785 state.setVisible(false); | 785 state.setVisible(false); |
| 786 state.beginFrameAborted(); |
| 786 | 787 |
| 787 // Tell the scheduler the frame finished | 788 // We should now be back in the idle state as if we didn't start a frame at
all. |
| 788 state.beginFrameComplete(); | 789 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_IDLE, state.commitState()); |
| 789 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_UPDATING_RESOURCES, state.co
mmitState()); | |
| 790 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES, state
.nextAction()); | |
| 791 | |
| 792 // Tell the scheduler the update began and finished | |
| 793 state.updateState(CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCE
S); | |
| 794 state.beginUpdateMoreResourcesComplete(false); | |
| 795 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, state.commi
tState()); | |
| 796 EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction()); | |
| 797 | |
| 798 // Commit in invisible state should leave us: | |
| 799 // - COMMIT_STATE_WAITING_FOR_FIRST_DRAW | |
| 800 // - Waiting for redraw. | |
| 801 // - No commit needed | |
| 802 state.updateState(CCSchedulerStateMachine::ACTION_COMMIT); | |
| 803 EXPECT_EQ(CCSchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW, stat
e.commitState()); | |
| 804 EXPECT_TRUE(state.needsRedraw()); | |
| 805 EXPECT_FALSE(state.needsCommit()); | |
| 806 | |
| 807 // Expect to do nothing, both in and out of vsync. | |
| 808 state.didLeaveVSync(); | |
| 809 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); | |
| 810 state.didEnterVSync(); | |
| 811 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); | 790 EXPECT_EQ(CCSchedulerStateMachine::ACTION_NONE, state.nextAction()); |
| 812 } | 791 } |
| 813 | 792 |
| 814 TEST(CCSchedulerStateMachineTest, TestContextLostWhenCompletelyIdle) | 793 TEST(CCSchedulerStateMachineTest, TestContextLostWhenCompletelyIdle) |
| 815 { | 794 { |
| 816 StateMachine state; | 795 StateMachine state; |
| 817 state.setCanBeginFrame(true); | 796 state.setCanBeginFrame(true); |
| 818 state.setVisible(true); | 797 state.setVisible(true); |
| 819 | 798 |
| 820 state.didLoseContext(); | 799 state.didLoseContext(); |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1035 StateMachine state; | 1014 StateMachine state; |
| 1036 state.setCanBeginFrame(true); | 1015 state.setCanBeginFrame(true); |
| 1037 state.setVisible(true); | 1016 state.setVisible(true); |
| 1038 state.setNeedsCommit(true); | 1017 state.setNeedsCommit(true); |
| 1039 state.setNeedsForcedCommit(true); | 1018 state.setNeedsForcedCommit(true); |
| 1040 state.didLoseContext(); | 1019 state.didLoseContext(); |
| 1041 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); | 1020 EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction()); |
| 1042 } | 1021 } |
| 1043 | 1022 |
| 1044 } | 1023 } |
| OLD | NEW |