michael@0: function test_seek13(v, seekTime, is, ok, finish) { 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: v.currentTime = v.duration; michael@0: is(v.currentTime, v.duration, "currentTime must report seek target immediately"); michael@0: is(v.seeking, true, "seeking flag on start should be true"); michael@0: } michael@0: michael@0: function seekStarted() { michael@0: if (completed) michael@0: return; michael@0: //is(v.currentTime, v.duration, "seeking: currentTime must be duration"); michael@0: ok(Math.abs(v.currentTime - v.duration) < 0.01, michael@0: "seeking: currentTime (" + v.currentTime + ") must be duration (" + v.duration + ")"); michael@0: } michael@0: michael@0: function seekEnded() { michael@0: if (completed) michael@0: return; michael@0: //is(v.currentTime, v.duration, "seeked: currentTime must be duration"); michael@0: ok(Math.abs(v.currentTime - v.duration) < 0.01, michael@0: "seeked: currentTime (" + v.currentTime + ") must be duration (" + v.duration + ")"); michael@0: is(v.seeking, false, "seeking flag on end should be false"); michael@0: } michael@0: michael@0: function playbackEnded() { michael@0: if (completed) michael@0: return; michael@0: completed = true; michael@0: //is(v.currentTime, v.duration, "ended: currentTime must be duration"); michael@0: ok(Math.abs(v.currentTime - v.duration) < 0.01, michael@0: "ended: currentTime (" + v.currentTime + ") must be duration (" + v.duration + ")"); michael@0: is(v.seeking, false, "seeking flag on end should be false"); michael@0: is(v.ended, true, "ended must be true"); michael@0: finish(); michael@0: } michael@0: michael@0: v.addEventListener("loadedmetadata", startTest, false); michael@0: v.addEventListener("seeking", seekStarted, false); michael@0: v.addEventListener("seeked", seekEnded, false); michael@0: v.addEventListener("ended", playbackEnded, false); michael@0: }