Bug 1300956. Part 10 - Remove null-checks for mStateObj.
MozReview-Commit-ID: 6SRx1QqRXC8
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1059,18 +1059,20 @@ nsresult MediaDecoderStateMachine::Init(
OwnerThread(), __func__, this,
&MediaDecoderStateMachine::OnCDMProxyReady,
&MediaDecoderStateMachine::OnCDMProxyNotReady));
#endif
nsresult rv = mReader->Init();
NS_ENSURE_SUCCESS(rv, rv);
- OwnerThread()->Dispatch(
- NewRunnableMethod(this, &MediaDecoderStateMachine::EnterState));
+ RefPtr<MediaDecoderStateMachine> self = this;
+ OwnerThread()->Dispatch(NS_NewRunnableFunction([self] () {
+ self->mStateObj->Enter();
+ }));
return NS_OK;
}
void
MediaDecoderStateMachine::SetMediaDecoderReaderWrapperCallback()
{
MOZ_ASSERT(OnTaskQueue());
@@ -1250,17 +1252,18 @@ MediaDecoderStateMachine::SetState(State
{
MOZ_ASSERT(OnTaskQueue());
if (mState == aState) {
return;
}
DECODER_LOG("MDSM state: %s -> %s", ToStateStr(), ToStateStr(aState));
- ExitState();
+ MOZ_ASSERT(mState == mStateObj->GetState());
+ mStateObj->Exit();
mState = aState;
switch (mState) {
case DECODER_STATE_DECODING_METADATA:
mStateObj = MakeUnique<DecodeMetadataState>(this);
break;
case DECODER_STATE_WAIT_FOR_CDM:
mStateObj = MakeUnique<WaitForCDMState>(this);
@@ -1282,45 +1285,22 @@ MediaDecoderStateMachine::SetState(State
break;
case DECODER_STATE_COMPLETED:
mStateObj = MakeUnique<CompletedState>(this);
break;
case DECODER_STATE_SHUTDOWN:
mStateObj = MakeUnique<ShutdownState>(this);
break;
default:
- mStateObj = nullptr;
+ MOZ_ASSERT_UNREACHABLE("Invalid state.");
break;
}
- EnterState();
-}
-
-void
-MediaDecoderStateMachine::ExitState()
-{
- MOZ_ASSERT(OnTaskQueue());
-
- if (mStateObj) {
- MOZ_ASSERT(mState == mStateObj->GetState());
- mStateObj->Exit();
- return;
- }
-}
-
-void
-MediaDecoderStateMachine::EnterState()
-{
- MOZ_ASSERT(OnTaskQueue());
-
- if (mStateObj) {
- MOZ_ASSERT(mState == mStateObj->GetState());
- mStateObj->Enter();
- return;
- }
+ MOZ_ASSERT(mState == mStateObj->GetState());
+ mStateObj->Enter();
}
void MediaDecoderStateMachine::VolumeChanged()
{
MOZ_ASSERT(OnTaskQueue());
mMediaSink->SetVolume(mVolume);
}
@@ -2455,21 +2435,17 @@ MediaDecoderStateMachine::FinishShutdown
void
MediaDecoderStateMachine::RunStateMachine()
{
MOZ_ASSERT(OnTaskQueue());
mDelayedScheduler.Reset(); // Must happen on state machine task queue.
mDispatchedStateMachine = false;
-
- if (mStateObj) {
- mStateObj->Step();
- return;
- }
+ mStateObj->Step();
}
void
MediaDecoderStateMachine::StepDecoding()
{
MOZ_ASSERT(OnTaskQueue());
if (mPlayState != MediaDecoder::PLAY_STATE_PLAYING && IsPlaying()) {
--- a/dom/media/MediaDecoderStateMachine.h
+++ b/dom/media/MediaDecoderStateMachine.h
@@ -352,18 +352,16 @@ private:
// and aborting all pending operations on the decode task queue.
void Reset(TrackSet aTracks = TrackSet(TrackInfo::kAudioTrack,
TrackInfo::kVideoTrack));
protected:
virtual ~MediaDecoderStateMachine();
void SetState(State aState);
- void ExitState();
- void EnterState();
void BufferedRangeUpdated();
void ReaderSuspendedChanged();
// Inserts MediaData* samples into their respective MediaQueues.
// aSample must not be null.