--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/WebCore/manual-tests/video-waiting-seeking.html Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,81 @@
+<html>
+ <head>
+ <script src="../../LayoutTests/media/video-test.js"></script>
+ <script>
+
+ var seekedCount = 0;
+ var counter = 0;
+
+ function trySeek(seekTo)
+ {
+ if (isInTimeRanges(video.seekable, seekTo)) {
+ if (isInTimeRanges(video.buffered, seekTo)) {
+ consoleWrite("Warining: Seeking into buffered region. May not generate waiting or seeking events.");
+ }
+ run("video.currentTime = " + seekTo);
+ } else {
+ failTest("Cannot seek to " + seekTo + ". Does engine support seeking into unbuffered region?");
+ }
+ }
+
+ function seeked()
+ {
+ ++seekedCount;
+ consoleWrite("");
+ }
+
+ function scheduleSeek() {
+ setTimeout(someTimeLater, 200);
+ }
+
+ function someTimeLater()
+ {
+ consoleWrite("Running scheduled seek");
+ testExpected("seekedCount", counter);
+ testExpected("video.currentTime", counter, ">=");
+
+ if (counter == 3)
+ {
+ consoleWrite("");
+ return;
+ endTest();
+ }
+
+ ++counter;
+
+ scheduleSeek();
+ trySeek(counter);
+ consoleWrite("");
+ }
+
+ function start()
+ {
+ findMediaElement();
+
+ waitForEvent('waiting');
+ waitForEvent('seeking');
+ waitForEvent('seeked', seeked);
+ waitForEvent('play', someTimeLater);
+
+ consoleWrite("Start Load");
+ video.src = "http://127.0.0.1:8000/media/video-throttled-load.cgi?name=../../../media/content/test.mp4&throttle=25";
+ video.load();
+ video.play();
+ }
+ </script>
+ </head>
+ <body onload="start()">
+ <video controls></video>
+
+ <p>Attempt to seek out of the buffered range. If supported, this
+ should cause a waiting and seeking event to be fired for each seek.
+ This test makes assumptions on the size of the input file, the bitrate
+ of delivery, and the duration of the file.
+ </p>
+ <p>
+ Source is assumed to be about 188k with a uniform bitrate, > 4
+ seconds in length, and served at 25kb/s. This should make seeking one
+ second ahead every 200ms always leave the buffered region.
+ </p>
+ </body>
+</html>