<!DOCTYPE HTML> <html> <head> <title>Video controls test</title> <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> <script type="text/javascript" src="head.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <p id="display"></p> <div id="content"> <video id="video" controls mozNoDynamicControls preload="auto"></video> </div> <pre id="test"> <script class="testbody" type="text/javascript"> SimpleTest.waitForExplicitFinish(); var video = document.getElementById("video"); function startMediaLoad() { // Kick off test once video has loaded, in its canplaythrough event handler. video.src = "seek_with_sound.ogg"; video.addEventListener("canplaythrough", runTest, false); } function loadevent(event) { SpecialPowers.pushPrefEnv({"set": [["media.cache_size", 40000]]}, startMediaLoad); } window.addEventListener("load", loadevent, false); function runTest() { video.addEventListener("click", function() { this.play(); }); ok(video.paused, "video should be paused initially"); new Promise(resolve => { let timeupdates = 0; video.addEventListener("timeupdate", function timeupdate() { ok(!video.paused, "video should not get paused after clicking in middle"); if (++timeupdates == 3) { video.removeEventListener("timeupdate", timeupdate); resolve(); } }); synthesizeMouseAtCenter(video, {}, window); }).then(function() { new Promise(resolve => { video.addEventListener("pause", function onpause() { setTimeout(() => { ok(video.paused, "video should still be paused 200ms after pause request"); // When the video reaches the end of playback it is automatically paused. // Check during the pause event that the video has not reachd the end // of playback. ok(!video.ended, "video should not have paused due to playback ending"); resolve(); }, 200); }); synthesizeMouse(video, 10, video.clientHeight - 10, {}, window); }).then(SimpleTest.finish); }); } </script> </pre> </body> </html>