Bug 1283417 - part1 : implement function to notify cue's display states changed. draft
authorAlastor Wu <alwu@mozilla.com>
Tue, 09 Aug 2016 16:43:07 +0800
changeset 398513 3228849189d835a4c4e1c802455b4c1467083e68
parent 397688 763fe887c37cee5fcfe0f00e94fdffc84a41ea1c
child 398514 b847ba36ec1abdfa0213184a2e6e26a7926d5ae9
push id25556
push useralwu@mozilla.com
push dateTue, 09 Aug 2016 09:00:14 +0000
bugs1283417
milestone51.0a1
Bug 1283417 - part1 : implement function to notify cue's display states changed. MozReview-Commit-ID: AF2S2UOLCt1
dom/html/HTMLMediaElement.cpp
dom/html/HTMLMediaElement.h
dom/media/TextTrackCue.cpp
dom/media/TextTrackCue.h
--- 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;