michael@0: function test_fragment_play(v, start, end, is, ok, finish) { michael@0: michael@0: var completed = false; michael@0: var loadedMetadataRaised = false; michael@0: var seekedRaised = false; michael@0: var pausedRaised = false; michael@0: michael@0: function onLoadedMetadata() { michael@0: var s = start == null ? 0 : start; michael@0: var e = end == null ? v.duration : end; michael@0: ok(v.currentTime == s, "loadedmetadata currentTime is " + v.currentTime + " != " + s); michael@0: ok(v.mozFragmentEnd == e, "mozFragmentEnd (" + v.mozFragmentEnd + ") == end Time (" + e + ")"); michael@0: loadedMetadataRaised = true; michael@0: v.play(); michael@0: } michael@0: michael@0: function onSeeked() { michael@0: if (completed) michael@0: return; michael@0: michael@0: var s = start == null ? 0 : start; michael@0: ok(v.currentTime == s, "seeked currentTime is " + v.currentTime + " != " + s); michael@0: michael@0: seekedRaised = true; michael@0: } michael@0: michael@0: function onTimeUpdate() { michael@0: if (completed) michael@0: return; michael@0: michael@0: v._lastTimeUpdate = v.currentTime; michael@0: } michael@0: michael@0: function onPause() { michael@0: if (completed) michael@0: return; michael@0: michael@0: var e = end == null ? v.duration : end; michael@0: var a = e - 0.05; michael@0: var b = e + 0.05; michael@0: ok(v.currentTime >= a && v.currentTime <= b, "paused currentTime is " + a + " < " + v.currentTime + " < " + b + " ? " + v._lastTimeUpdate); michael@0: pausedRaised = true; michael@0: v.play(); michael@0: } michael@0: michael@0: michael@0: function onEnded() { michael@0: if (completed) michael@0: return; michael@0: michael@0: completed = true; michael@0: ok(loadedMetadataRaised, "loadedmetadata event"); michael@0: if (start) { michael@0: ok(seekedRaised, "seeked event"); michael@0: } michael@0: if (end) { michael@0: ok(pausedRaised, "paused event: " + end + " " + v.duration); michael@0: } michael@0: finish(); michael@0: } michael@0: michael@0: v.addEventListener("ended", onEnded, false); michael@0: v.addEventListener("loadedmetadata", onLoadedMetadata, false); michael@0: v.addEventListener("seeked", onSeeked, false); michael@0: v.addEventListener("pause", onPause, false); michael@0: v.addEventListener("timeupdate", onTimeUpdate, false); michael@0: }