michael@0: function test_seek1(v, seekTime, is, ok, finish) { michael@0: michael@0: var startPassed = false; michael@0: var endPassed = false; michael@0: var seekFlagStart = false; michael@0: var seekFlagEnd = false; michael@0: var readonly = true; michael@0: var completed = false; michael@0: michael@0: function startTest() { michael@0: if (completed) michael@0: return; michael@0: ok(!v.seeking, "seeking should default to false"); michael@0: try { michael@0: v.seeking = true; michael@0: readonly = v.seeking === false; michael@0: } michael@0: catch(e) { michael@0: readonly = "threw exception: " + e; michael@0: } michael@0: is(readonly, true, "seeking should be readonly"); michael@0: michael@0: v.play(); michael@0: v.currentTime=seekTime; michael@0: seekFlagStart = v.seeking; michael@0: } michael@0: michael@0: function seekStarted() { michael@0: if (completed) michael@0: return; michael@0: ok(v.currentTime >= seekTime - 0.1, michael@0: "Video currentTime should be around " + seekTime + ": " + v.currentTime + " (seeking)"); michael@0: v.pause(); michael@0: startPassed = true; michael@0: } michael@0: michael@0: function seekEnded() { michael@0: if (completed) michael@0: return; michael@0: michael@0: var t = v.currentTime; michael@0: // Since we were playing, and we only paused asynchronously, we can't be michael@0: // sure that we paused before the seek finished, so we may have played michael@0: // ahead arbitrarily far. michael@0: ok(t >= seekTime - 0.1, "Video currentTime should be around " + seekTime + ": " + t + " (seeked)"); michael@0: v.play(); michael@0: endPassed = true; michael@0: seekFlagEnd = v.seeking; michael@0: } michael@0: michael@0: function playbackEnded() { michael@0: if (completed) michael@0: return; michael@0: michael@0: completed = true; michael@0: ok(startPassed, "seeking event"); michael@0: ok(endPassed, "seeked event"); michael@0: ok(seekFlagStart, "seeking flag on start should be true"); michael@0: ok(!seekFlagEnd, "seeking flag on end should be false"); michael@0: finish(); michael@0: } michael@0: michael@0: v.addEventListener("ended", playbackEnded, false); michael@0: v.addEventListener("loadedmetadata", startTest, false); michael@0: v.addEventListener("seeking", seekStarted, false); michael@0: v.addEventListener("seeked", seekEnded, false); michael@0: michael@0: }