test_bug495145.html (2145B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=495145 5 --> 6 7 <head> 8 <title>Bug 495145 - pausing while ended shouldn't cause problems</title> 9 <script src="/tests/SimpleTest/SimpleTest.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 11 <script type="text/javascript" src="manifest.js"></script> 12 13 </head> 14 <body> 15 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=495145">Mozilla Bug 495145</a> 16 <pre id="test"> 17 <script class="testbody" type="text/javascript"> 18 19 var manager = new MediaTestManager; 20 21 function start(e) { 22 e.target.play(); 23 } 24 25 function ended1(e) { 26 var v = e.target; 27 if (v._finished) 28 return; 29 30 ++v._endCount; 31 if (v._endCount == 2) { 32 ok(true, "Playing after pause while ended works for " + v._name); 33 v._finished = true; 34 v.removeEventListener("loadedmetadata", start); 35 v.removeEventListener("ended", ended1); 36 removeNodeAndSource(v); 37 manager.finished(v.token); 38 return; 39 } 40 41 v.pause(); 42 v.play(); 43 } 44 45 function ended2(e) { 46 var v = e.target; 47 if (v._finished) 48 return; 49 50 v.pause(); 51 v.currentTime = 0; 52 } 53 54 function seeked2(e) { 55 var v = e.target; 56 if (v._finished) 57 return; 58 59 ok(v.paused, "Paused after seek after pause while ended for " + v._name); 60 v._finished = true; 61 v.removeEventListener("loadedmetadata", start); 62 v.removeEventListener("ended", ended2); 63 v.removeEventListener("seeked", seeked2); 64 removeNodeAndSource(v); 65 manager.finished(v.token); 66 } 67 68 function createVideo(test, x, token) { 69 var v = document.createElement('video'); 70 v.preload = "metadata"; 71 v.token = token; 72 manager.started(token); 73 v.src = test.name; 74 v._name = test.name + "#" + x; 75 v._endCount = 0; 76 v._finished = false; 77 v.addEventListener("loadedmetadata", start); 78 v.addEventListener("ended", x == 1 ? ended1 : ended2); 79 if (x == 2) 80 v.addEventListener("seeked", seeked2); 81 document.body.appendChild(v); 82 } 83 84 function startTest(test, token) { 85 createVideo(test, 1, token + "a"); 86 createVideo(test, 2, token + "b"); 87 } 88 89 manager.runTests(gSmallTests, startTest); 90 91 92 </script> 93 </pre> 94 </body> 95 </html>