Bug 1276530 - part2: The id of cue might be empty, so don't use it for checking. r=rillian draft
authorbechen <bechen@mozilla.com>
Fri, 17 Jun 2016 17:20:24 +0800
changeset 379748 33e19f536b8fe35f0f79d082e24439917c636088
parent 379747 b08311196d87309890142a82d366b0c18ab54377
child 523560 c22771e39a214f5ac599f014882b004e5dc5b64b
push id21042
push userbechen@mozilla.com
push dateFri, 17 Jun 2016 09:22:30 +0000
reviewersrillian
bugs1276530
milestone50.0a1
Bug 1276530 - part2: The id of cue might be empty, so don't use it for checking. r=rillian MozReview-Commit-ID: CyjEkOmDNG0
dom/html/TextTrackManager.cpp
dom/media/TextTrackCue.h
dom/media/TextTrackCueList.cpp
dom/media/TextTrackCueList.h
--- a/dom/html/TextTrackManager.cpp
+++ b/dom/html/TextTrackManager.cpp
@@ -654,18 +654,17 @@ TextTrackManager::TimeMarchesOn()
         CompareSimpleTextTrackEvents(mMediaElement));
       affectedTracks.AddTextTrack(cue->GetTrack(), CompareTextTracks(mMediaElement));
     }
   }
 
   // Step 11, 17.
   for (uint32_t i = 0; i < otherCues->Length(); ++i) {
     TextTrackCue* cue = (*otherCues)[i];
-    if (cue->GetActive() ||
-        missedCues->GetCueById(cue->Id()) != nullptr) {
+    if (cue->GetActive() || missedCues->IsCueExist(cue)) {
       double time = cue->StartTime() > cue->EndTime() ? cue->StartTime()
                                                       : cue->EndTime();
       SimpleTextTrackEvent* event =
         new SimpleTextTrackEvent(NS_LITERAL_STRING("exit"), time,
                                  cue->GetTrack(), cue);
       eventList.InsertElementSorted(event,
         CompareSimpleTextTrackEvents(mMediaElement));
       affectedTracks.AddTextTrack(cue->GetTrack(), CompareTextTracks(mMediaElement));
--- a/dom/media/TextTrackCue.h
+++ b/dom/media/TextTrackCue.h
@@ -310,22 +310,16 @@ public:
     return mReset;
   }
 
   double ComputedLine();
   double ComputedPosition();
   PositionAlignSetting ComputedPositionAlign();
 
   // Helper functions for implementation.
-  bool
-  operator==(const TextTrackCue& rhs) const
-  {
-    return mId.Equals(rhs.mId);
-  }
-
   const nsAString& Id() const
   {
     return mId;
   }
 
   void SetTrack(TextTrack* aTextTrack)
   {
     mTrack = aTextTrack;
--- a/dom/media/TextTrackCueList.cpp
+++ b/dom/media/TextTrackCueList.cpp
@@ -156,10 +156,19 @@ void
 TextTrackCueList::NotifyCueUpdated(TextTrackCue *aCue)
 {
   if (aCue) {
     mList.RemoveElement(aCue);
     mList.InsertElementSorted(aCue, CompareCuesByTime());
   }
 }
 
+bool
+TextTrackCueList::IsCueExist(TextTrackCue *aCue)
+{
+  if (aCue && mList.Contains(aCue)) {
+    return true;
+  }
+  return false;
+}
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/media/TextTrackCueList.h
+++ b/dom/media/TextTrackCueList.h
@@ -56,16 +56,17 @@ public:
   void RemoveAll();
   void GetArray(nsTArray<RefPtr<TextTrackCue> >& aCues);
 
   void SetCuesInactive();
 
   already_AddRefed<TextTrackCueList>
   GetCueListByTimeInterval(media::Interval<double>& aInterval);
   void NotifyCueUpdated(TextTrackCue *aCue);
+  bool IsCueExist(TextTrackCue *aCue);
 
 private:
   ~TextTrackCueList();
 
   nsCOMPtr<nsISupports> mParent;
 
   // A sorted list of TextTrackCues sorted by earliest start time. If the start
   // times are equal then it will be sorted by end time, earliest first.