Fri, 16 Jan 2015 04:50:19 +0100
Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=495145
5 -->
7 <head>
8 <title>Bug 495145 - pausing while ended shouldn't cause problems</title>
9 <script type="text/javascript" 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>
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">
19 var manager = new MediaTestManager;
21 function start(e) {
22 e.target.play();
23 }
25 function ended1(e) {
26 var v = e.target;
27 if (v._finished)
28 return;
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, false);
35 v.removeEventListener("ended", ended1, false);
36 removeNodeAndSource(v);
37 manager.finished(v.token);
38 return;
39 }
41 v.pause();
42 v.play();
43 }
45 function ended2(e) {
46 var v = e.target;
47 if (v._finished)
48 return;
50 v.pause();
51 v.currentTime = 0;
52 }
54 function seeked2(e) {
55 var v = e.target;
56 if (v._finished)
57 return;
59 ok(v.paused, "Paused after seek after pause while ended for " + v._name);
60 v._finished = true;
61 v.removeEventListener("loadedmetadata", start, false);
62 v.removeEventListener("ended", ended2, false);
63 v.removeEventListener("seeked", seeked2, false);
64 removeNodeAndSource(v);
65 manager.finished(v.token);
66 }
68 function createVideo(test, x, token) {
69 var v = document.createElement('video');
70 v.preload = "auto";
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, false);
78 v.addEventListener("ended", x == 1 ? ended1 : ended2, false);
79 if (x == 2)
80 v.addEventListener("seeked", seeked2, false);
81 document.body.appendChild(v);
82 }
84 function startTest(test, token) {
85 createVideo(test, 1, token + "a");
86 createVideo(test, 2, token + "b");
87 }
89 manager.runTests(gSmallTests, startTest);
92 </script>
93 </pre>
94 </body>
95 </html>