Bug 1284177 - P1: Provide observable notification for video suspend. r=jwwang

To support mochitests, report change in video decode suspend state via
events mozentervideosuspend/mozexitvideosuspend.

MozReview-Commit-ID: EwMduLzcMVg

--HG--
extra : rebase_source : 5f1fed90964fae182f06d9fb480491728c5f1c97
This commit is contained in:
Dan Glastonbury 2016-07-04 14:35:21 +10:00
Родитель 88b7ec7f4b
Коммит f9a87adc92
3 изменённых файлов: 13 добавлений и 3 удалений

Просмотреть файл

@ -697,6 +697,12 @@ MediaDecoder::OnPlaybackEvent(MediaEventType aEvent)
case MediaEventType::Invalidate:
Invalidate();
break;
case MediaEventType::EnterVideoSuspend:
mOwner->DispatchAsyncEvent(NS_LITERAL_STRING("mozentervideosuspend"));
break;
case MediaEventType::ExitVideoSuspend:
mOwner->DispatchAsyncEvent(NS_LITERAL_STRING("mozexitvideosuspend"));
break;
}
}

Просмотреть файл

@ -1328,8 +1328,8 @@ void MediaDecoderStateMachine::VisibilityChanged()
{
MOZ_ASSERT(OnTaskQueue());
DECODER_LOG("VisibilityChanged: mIsVisible=%d, "
"mVideoDecodeSuspended=%d, mIsReaderSuspended=%d",
mIsVisible.Ref(), mVideoDecodeSuspended, mIsReaderSuspended.Ref());
"mVideoDecodeSuspended=%c, mIsReaderSuspended=%d",
mIsVisible.Ref(), mVideoDecodeSuspended ? 'T' : 'F', mIsReaderSuspended.Ref());
if (!HasVideo()) {
return;
@ -1358,6 +1358,7 @@ void MediaDecoderStateMachine::VisibilityChanged()
if (mVideoDecodeSuspended) {
mVideoDecodeSuspended = false;
mOnPlaybackEvent.Notify(MediaEventType::ExitVideoSuspend);
mReader->SetVideoBlankDecode(false);
if (mIsReaderSuspended) {
@ -2931,6 +2932,7 @@ MediaDecoderStateMachine::OnSuspendTimerResolved()
DECODER_LOG("OnSuspendTimerResolved");
mVideoDecodeSuspendTimer.CompleteRequest();
mVideoDecodeSuspended = true;
mOnPlaybackEvent.Notify(MediaEventType::EnterVideoSuspend);
mReader->SetVideoBlankDecode(true);
}

Просмотреть файл

@ -120,7 +120,9 @@ enum class MediaEventType : int8_t {
PlaybackEnded,
SeekStarted,
DecodeError,
Invalidate
Invalidate,
EnterVideoSuspend,
ExitVideoSuspend
};
/*