| <!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-file.js"></script> |
| <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 = findMediaFile("audio", "content/test"); |
| 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> |