chromium/third_party/blink/web_tests/media/video-played-reset.html

<!DOCTYPE html>
<title>Test media element's "played" attribute.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="video-played.js"></script>
<video></video>
<script>
var video;
async_test(function(t) {
    var expectedStartTimes = [];
    var expectedEndTimes = [];
    video = document.querySelector("video");

    video.oncanplay = t.step_func(function() {
        video.oncanplay = null;
        testRanges(expectedStartTimes, expectedEndTimes);
        // Test playing when there are no ranges.
        timeRangeCount = currentTimeRange = 0;
        startPlayingInNewRange(t, expectedStartTimes);
    });
    waitForPauseAndContinue(t, resetToAVideoSource, false, expectedStartTimes, expectedEndTimes);

    function resetToAVideoSource() {
        // Test to reset to non empty video source.
        timeRangeCount = currentTimeRange = 0;
        expectedStartTimes = [];
        expectedEndTimes = [];
        video.src = "content/test.ogv";
        video.oncanplay = t.step_func(jumpAndPlayFwd);
    }

    function jumpAndPlayFwd() {
        video.oncanplay = null;
        testRanges(expectedStartTimes, expectedEndTimes);
        // Test jumping forward into a new range and play.
        video.currentTime = (video.duration - 0.5).toFixed(2);
        currentTimeRange = 1;
        startPlayingInNewRange(t, expectedStartTimes);
        waitForPauseAndContinue(t, resetToAnEmptyVideoSource, false, expectedStartTimes, expectedEndTimes);
    }

    function resetToAnEmptyVideoSource() {
        // Test to reset to an empty video source.
        timeRangeCount = currentTimeRange = 0;
        expectedStartTimes = [];
        expectedEndTimes = [];
        video.src = "";
        video.onloadstart = t.step_func_done(testRanges(expectedStartTimes, expectedEndTimes));
    }

    video.src = "content/test.ogv";
});
</script>