test_play_promise_9.html (1443B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Media test: promise-based play() method</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 <script type="text/javascript" src="manifest.js"></script> 8 </head> 9 <body> 10 <pre id="test"> 11 12 <script> 13 // Name: playAndPauseBeforeCanPlay 14 // Case: invlke play() and then pause() on an element that deoen't have enough data to play. 15 // Expected result: reject the promise with AbortError DOM exception. 16 // Note: the pause() cancels the play() because the promise is still pending. 17 18 let manager = new MediaTestManager; 19 20 function initTest(test, token) { 21 manager.started(token); 22 23 let element = document.createElement(getMajorMimeType(test.type)); 24 ok(element.readyState == HTMLMediaElement.HAVE_NOTHING); 25 element.play().then( 26 (result) => { 27 ok(false, `${token} is resolved with ${result}.`); 28 }, 29 (error) => { 30 if (error.name == "AbortError") { 31 ok(true, `${token} is rejected with ${error.name}.`); 32 } else { 33 ok(false, `${token} is rejected with ${error.name}.`); 34 } 35 } 36 ).then( () => { manager.finished(token); } ); 37 ok(!element.paused, `playAndPauseBeforeCanPlay(${token}) element should not be paused.`); 38 element.pause(); 39 ok(element.paused, `playAndPauseBeforeCanPlay(${token}) element should be paused.`); 40 } 41 42 manager.runTests(gSmallTests, initTest); 43 44 </script>