Bug 1278151 - Fix CompareCuesByTime for the web-platform/meta/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues.html. r=rillian
MozReview-Commit-ID: KLGqF55DnhI
--- a/dom/media/TextTrackCueList.cpp
+++ b/dom/media/TextTrackCueList.cpp
@@ -9,23 +9,22 @@
namespace mozilla {
namespace dom {
class CompareCuesByTime
{
public:
bool Equals(TextTrackCue* aOne, TextTrackCue* aTwo) const {
- return aOne->StartTime() == aTwo->StartTime() &&
- aOne->EndTime() == aTwo->EndTime();
+ return false;
}
bool LessThan(TextTrackCue* aOne, TextTrackCue* aTwo) const {
return aOne->StartTime() < aTwo->StartTime() ||
(aOne->StartTime() == aTwo->StartTime() &&
- aOne->EndTime() < aTwo->EndTime());
+ aOne->EndTime() >= aTwo->EndTime());
}
};
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TextTrackCueList, mParent, mList)
NS_IMPL_CYCLE_COLLECTING_ADDREF(TextTrackCueList)
NS_IMPL_CYCLE_COLLECTING_RELEASE(TextTrackCueList)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TextTrackCueList)
--- a/dom/media/TextTrackList.cpp
+++ b/dom/media/TextTrackList.cpp
@@ -96,16 +96,19 @@ TextTrackList::AddTextTrack(TextTrackKin
AddTextTrack(track, aCompareTT);
return track.forget();
}
void
TextTrackList::AddTextTrack(TextTrack* aTextTrack,
const CompareTextTracks& aCompareTT)
{
+ if (mTextTracks.Contains(aTextTrack)) {
+ return;
+ }
if (mTextTracks.InsertElementSorted(aTextTrack, aCompareTT)) {
aTextTrack->SetTextTrackList(this);
CreateAndDispatchTrackEventRunner(aTextTrack, NS_LITERAL_STRING("addtrack"));
}
}
TextTrack*
TextTrackList::GetTrackById(const nsAString& aId)
--- a/dom/media/test/test_bug883173.html
+++ b/dom/media/test/test_bug883173.html
@@ -36,17 +36,17 @@ video.addEventListener("loadedmetadata",
setTimeout(run_tests, 0);
return;
}
is(trackElement.readyState, 2, "Track::ReadyState should be set to LOADED.");
// Set mode to hidden so that the active cue lists are being updated.
trackElement.track.mode = "hidden";
- var expected = [[1, 2], [1, 3], [2, 3], [2, 4], [3, 4]];
+ var expected = [[1, 3], [1, 2], [2, 4], [2, 3], [3, 4]];
var cueList = trackElement.track.cues;
is(cueList.length, expected.length, "Cue list length should be 5.");
for (var i = 0; i < expected.length; i++) {
is(cueList[i].startTime, expected[i][0], "Cue's start time should be " + expected[i][0]);
is(cueList[i].endTime, expected[i][1], "Cue's end time should be " + expected[i][1]);
}
--- a/testing/web-platform/meta/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues.html.ini
+++ b/testing/web-platform/meta/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues.html.ini
@@ -1,8 +1,5 @@
[cues.html]
type: testharness
- [TextTrack.cues, changing order]
- expected: FAIL
-
[TextTrack.cues, default attribute]
expected: FAIL