blob: 96ed4cf5b960ac397fa63bf22c71a241790d3743 [file] [log] [blame]
<!DOCTYPE html>
<title>Tests that added cue object wrappers live across garbage collections.</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../media-file.js"></script>
<video></video>
<script>
async_test(function(t) {
var cueIndex = 0;
var cueLimit = 10;
var video = document.querySelector("video");
video.src = findMediaFile("video", "../content/test");
video.textTracks.custom = "trackList";
assert_true(video.textTracks.hasOwnProperty("custom"));
// Add a text track to the video element.
var track = video.addTextTrack("captions", "regular captions track", "en");
track.custom = "track";
assert_true(track.hasOwnProperty("custom"));
// Add cues with own native property to the track with enter event listener.
for (var i = 0; i < cueLimit; i++) {
var cue = new VTTCue(i / 4, i / 2 + 1, "Label" + i);
cue.custom = "cue";
cue.onenter = t.step_func(function(event) {
var currentCue = event.target;
assert_true(currentCue.hasOwnProperty("custom"));
if (++cueIndex == cueLimit)
t.done();
});
track.addCue(cue);
}
for (var i = 0; i < cueLimit; i++) {
var cue = track.cues[i];
assert_true(cue.hasOwnProperty("custom"));
}
// Trigger a garbage collection.
track = null;
gc();
assert_true(video.textTracks.hasOwnProperty("custom"));
track = video.textTracks[0];
assert_true(track.hasOwnProperty("custom"));
// Play the video and test cue wrappers.
video.play();
track.mode = "showing";
});
</script>