diff options
Diffstat (limited to 'dom/media/test/fragment_play.js')
-rw-r--r-- | dom/media/test/fragment_play.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/dom/media/test/fragment_play.js b/dom/media/test/fragment_play.js new file mode 100644 index 000000000..df98f6b09 --- /dev/null +++ b/dom/media/test/fragment_play.js @@ -0,0 +1,67 @@ +function test_fragment_play(v, start, end, is, ok, finish) { + +var completed = false; +var loadedMetadataRaised = false; +var seekedRaised = false; +var pausedRaised = false; + +function onLoadedMetadata() { + var s = start == null ? 0 : start; + var e = end == null ? v.duration : end; + ok(v.currentTime == s, "loadedmetadata currentTime is " + v.currentTime + " != " + s); + ok(v.mozFragmentEnd == e, "mozFragmentEnd (" + v.mozFragmentEnd + ") == end Time (" + e + ")"); + loadedMetadataRaised = true; + v.play(); +} + +function onSeeked() { + if (completed) + return; + + var s = start == null ? 0 : start; + ok(v.currentTime - s < 0.1, "seeked currentTime is " + v.currentTime + " != " + s + " (fuzzy compare +-0.1)"); + + seekedRaised = true; +} + +function onTimeUpdate() { + if (completed) + return; + + v._lastTimeUpdate = v.currentTime; +} + +function onPause() { + if (completed) + return; + + var e = end == null ? v.duration : end; + var a = e - 0.05; + var b = e + 0.05; + ok(v.currentTime >= a && v.currentTime <= b, "paused currentTime is " + a + " < " + v.currentTime + " < " + b + " ? " + v._lastTimeUpdate); + pausedRaised = true; + v.play(); +} + + +function onEnded() { + if (completed) + return; + + completed = true; + ok(loadedMetadataRaised, "loadedmetadata event"); + if (start) { + ok(seekedRaised, "seeked event"); + } + if (end) { + ok(pausedRaised, "paused event: " + end + " " + v.duration); + } + finish(); +} + +v.addEventListener("ended", onEnded, false); +v.addEventListener("loadedmetadata", onLoadedMetadata, false); +v.addEventListener("seeked", onSeeked, false); +v.addEventListener("pause", onPause, false); +v.addEventListener("timeupdate", onTimeUpdate, false); +} |