michael@0: function test_seek11(v, seekTime, is, ok, finish) { michael@0: michael@0: // Test for bug 476973, multiple seeks to the same position shouldn't cause problems. michael@0: michael@0: var seekedNonZero = false; michael@0: var completed = false; michael@0: var target = 0; michael@0: michael@0: function startTest() { michael@0: if (completed) michael@0: return; michael@0: target = v.duration / 2; michael@0: v.currentTime = target; michael@0: v.currentTime = target; michael@0: v._seekTarget = target; michael@0: } michael@0: michael@0: function startSeeking() { michael@0: ok(v.currentTime >= v._seekTarget - 0.1, michael@0: "Video currentTime should be around " + v._seekTarget + ": " + v.currentTime); michael@0: if (!seekedNonZero) { michael@0: v.currentTime = target; michael@0: v._seekTarget = target; michael@0: seekedNonZero = true; michael@0: } michael@0: } michael@0: michael@0: function seekEnded() { michael@0: if (completed) michael@0: return; michael@0: michael@0: if (v.currentTime > 0) { michael@0: ok(v.currentTime > target - 0.1 && v.currentTime < target + 0.1, michael@0: "Seek to wrong destination " + v.currentTime); michael@0: v.currentTime = 0.0; michael@0: v._seekTarget = 0.0; michael@0: } else { michael@0: ok(seekedNonZero, "Successfully seeked to nonzero"); michael@0: ok(true, "Seek back to zero was successful"); michael@0: completed = true; michael@0: finish(); michael@0: } michael@0: } michael@0: michael@0: v.addEventListener("loadedmetadata", startTest, false); michael@0: v.addEventListener("seeking", startSeeking, false); michael@0: v.addEventListener("seeked", seekEnded, false); michael@0: michael@0: }