Bug 1300956. Part 8 - Implement CompletedState. r=kaku

MozReview-Commit-ID: KsgjLPShe2N

--HG--
extra : rebase_source : cf5c32278a2cdc1e1c2907d3a1125508db53044c
This commit is contained in:
JW Wang 2016-09-06 11:34:09 +08:00
parent 15cc25b0ee
commit eff197ce51

View File

@ -346,6 +346,33 @@ public:
}
};
class MediaDecoderStateMachine::CompletedState
: public MediaDecoderStateMachine::StateObject
{
public:
explicit CompletedState(Master* aPtr) : StateObject(aPtr) {}
void Enter() override
{
mMaster->ScheduleStateMachine();
}
void Exit() override
{
mMaster->mSentPlaybackEndedEvent = false;
}
void Step() override
{
mMaster->StepCompleted();
}
State GetState() const override
{
return DECODER_STATE_COMPLETED;
}
};
#define INIT_WATCHABLE(name, val) \
name(val, "MediaDecoderStateMachine::" #name)
#define INIT_MIRROR(name, val) \
@ -1231,6 +1258,9 @@ MediaDecoderStateMachine::SetState(State aState)
case DECODER_STATE_BUFFERING:
mStateObj = MakeUnique<BufferingState>(this);
break;
case DECODER_STATE_COMPLETED:
mStateObj = MakeUnique<CompletedState>(this);
break;
default:
mStateObj = nullptr;
break;
@ -1251,9 +1281,6 @@ MediaDecoderStateMachine::ExitState()
}
switch (mState) {
case DECODER_STATE_COMPLETED:
mSentPlaybackEndedEvent = false;
break;
case DECODER_STATE_SHUTDOWN:
MOZ_DIAGNOSTIC_ASSERT(false, "Shouldn't escape the SHUTDOWN state.");
break;
@ -1274,9 +1301,6 @@ MediaDecoderStateMachine::EnterState()
}
switch (mState) {
case DECODER_STATE_COMPLETED:
ScheduleStateMachine();
break;
case DECODER_STATE_SHUTDOWN:
mIsShutdown = true;
break;
@ -2432,14 +2456,6 @@ MediaDecoderStateMachine::RunStateMachine()
mStateObj->Step();
return;
}
switch (mState) {
case DECODER_STATE_COMPLETED:
StepCompleted();
return;
default:
return;
}
}
void