Bug 1346498 part 1 - extract the MediaDecoder::NotifyCompositor() method; r?jwwang
MozReview-Commit-ID: Hfw3FJUSVVe
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -298,28 +298,17 @@ MediaDecoder::ResourceCallback::NotifyBy
void
MediaDecoder::NotifyOwnerActivityChanged(bool aIsVisible)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_DIAGNOSTIC_ASSERT(!IsShutdown());
SetElementVisibility(aIsVisible);
- MediaDecoderOwner* owner = GetOwner();
- NS_ENSURE_TRUE_VOID(owner);
-
- dom::HTMLMediaElement* element = owner->GetMediaElement();
- NS_ENSURE_TRUE_VOID(element);
-
- RefPtr<LayerManager> layerManager =
- nsContentUtils::LayerManagerForDocument(element->OwnerDoc());
- if (layerManager) {
- RefPtr<KnowsCompositor> knowsCompositor = layerManager->AsShadowForwarder();
- mCompositorUpdatedEvent.Notify(knowsCompositor);
- }
+ NotifyCompositor();
}
void
MediaDecoder::Pause()
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_DIAGNOSTIC_ASSERT(!IsShutdown());
if (mPlayState == PLAY_STATE_LOADING || IsEnded()) {
@@ -1295,16 +1284,33 @@ MediaDecoder::DurationChanged()
}
if (CurrentPosition() > TimeUnit::FromSeconds(mDuration).ToMicroseconds()) {
Seek(mDuration, SeekTarget::Accurate);
}
}
void
+MediaDecoder::NotifyCompositor()
+{
+ MediaDecoderOwner* owner = GetOwner();
+ NS_ENSURE_TRUE_VOID(owner);
+
+ dom::HTMLMediaElement* element = owner->GetMediaElement();
+ NS_ENSURE_TRUE_VOID(element);
+
+ RefPtr<LayerManager> layerManager =
+ nsContentUtils::LayerManagerForDocument(element->OwnerDoc());
+ if (layerManager) {
+ RefPtr<KnowsCompositor> knowsCompositor = layerManager->AsShadowForwarder();
+ mCompositorUpdatedEvent.Notify(knowsCompositor);
+ }
+}
+
+void
MediaDecoder::SetElementVisibility(bool aIsVisible)
{
MOZ_ASSERT(NS_IsMainThread());
mElementVisible = aIsVisible;
mIsVisible = !mForcedHidden && mElementVisible;
}
void
--- a/dom/media/MediaDecoder.h
+++ b/dom/media/MediaDecoder.h
@@ -585,16 +585,19 @@ private:
// state machine. Call on the main thread only.
void MetadataLoaded(nsAutoPtr<MediaInfo> aInfo,
nsAutoPtr<MetadataTags> aTags,
MediaDecoderEventVisibility aEventVisibility);
MediaEventSource<void>*
DataArrivedEvent() override { return &mDataArrivedEvent; }
+ // Called when the owner's activity changed.
+ void NotifyCompositor();
+
MediaEventSource<RefPtr<layers::KnowsCompositor>>*
CompositorUpdatedEvent() override { return &mCompositorUpdatedEvent; }
void OnPlaybackEvent(MediaEventType aEvent);
void OnPlaybackErrorEvent(const MediaResult& aError);
void OnDecoderDoctorEvent(DecoderDoctorEvent aEvent);