chromium/third_party/blink/web_tests/media/audio-delete-while-slider-thumb-clicked.html

<!DOCTYPE html>
<title>This tests that events don't continue to target a slider thumb if the media element is deleted while scrubbing.</title>
<script src="media-controls.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<input type="button" value="Click Me!">
<audio autoplay controls></audio>
<script>
async_test(function(t) {
    var audio = document.querySelector("audio");
    audio.src = "content/test.oga";
    audio.onplaying = t.step_func(function() {
        var seekCoords = mediaControlsButtonCoordinates(audio, "timeline");
        var x = seekCoords[0];
        var y = seekCoords[1];

        // Click in the slider to get the thumb under the mouse.
        // clicking in controller.
        eventSender.mouseMoveTo(x, y);
        eventSender.mouseDown();
        eventSender.mouseUp();

        // Click slider to scrub, leave the mouse down.
        // clicking on thumb.
        eventSender.mouseDown();
        eventSender.mouseMoveTo(x, y + 20);

        // Remove the element after seeking started
        audio.onseeking = t.step_func(deleteAudio);
    });

    function deleteAudio() {
        // deleting audio element.
        audio.parentNode.removeChild(audio);

        setTimeout(t.step_func(buttonClick), 10);
    }

    function buttonClick() {
        gc();

        assert_equals(document.querySelector("audio"), null);

        // click the button
        var button = document.querySelector("input");
        button.onmouseup = t.step_func_done();
        eventSender.mouseMoveTo(button.offsetLeft + 20, button.offsetTop + 7);
        eventSender.mouseDown();
        eventSender.mouseUp();
    }
});
</script>