Bug 1276530 - part2: The id of cue might be empty, so don't use it for checking. r=rillian
MozReview-Commit-ID: CyjEkOmDNG0
--- 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.