Bug 1283417 - part1 : implement function to notify cue's display states changed.
MozReview-Commit-ID: AF2S2UOLCt1
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -6152,10 +6152,21 @@ HTMLMediaElement::OnVisibilityChange(Vis
}
case Visibility::IN_DISPLAYPORT: {
mDecoder->NotifyOwnerActivityChanged(true);
break;
}
}
}
+
+void
+HTMLMediaElement::NotifyCueDisplayStatesChanged()
+{
+ if (!mTextTrackManager) {
+ return;
+ }
+
+ mTextTrackManager->DispatchUpdateCueDisplay();
+}
+
} // namespace dom
} // namespace mozilla
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -704,16 +704,18 @@ public:
}
}
void NotifyCueUpdated(TextTrackCue *aCue) {
if (mTextTrackManager) {
mTextTrackManager->NotifyCueUpdated(aCue);
}
}
+ void NotifyCueDisplayStatesChanged();
+
bool GetHasUserInteraction()
{
return mHasUserInteraction;
}
// A method to check whether we are currently playing.
bool IsCurrentlyPlaying() const;
--- a/dom/media/TextTrackCue.cpp
+++ b/dom/media/TextTrackCue.cpp
@@ -227,10 +227,26 @@ TextTrackCue::ComputedPositionAlign()
} else if (mAlign == AlignSetting::Left) {
return PositionAlignSetting::Line_left;
} else if (mAlign == AlignSetting::Right) {
return PositionAlignSetting::Line_right;
}
return PositionAlignSetting::Center;
}
+void
+TextTrackCue::NotifyDisplayStatesChanged()
+{
+ if (!mReset) {
+ return;
+ }
+
+ if (!mTrack ||
+ !mTrack->GetTextTrackList() ||
+ !mTrack->GetTextTrackList()->GetMediaElement()) {
+ return;
+ }
+
+ mTrack->GetTextTrackList()->GetMediaElement()->NotifyCueDisplayStatesChanged();
+}
+
} // namespace dom
} // namespace mozilla
--- a/dom/media/TextTrackCue.h
+++ b/dom/media/TextTrackCue.h
@@ -355,16 +355,19 @@ private:
~TextTrackCue();
void NotifyCueUpdated(TextTrackCue* aCue)
{
if (mTrack) {
mTrack->NotifyCueUpdated(aCue);
}
}
+
+ void NotifyDisplayStatesChanged();
+
void SetDefaultCueSettings();
nsresult StashDocument();
RefPtr<nsIDocument> mDocument;
nsString mText;
double mStartTime;
double mEndTime;