content/media/test/test_bug495145.html

Fri, 16 Jan 2015 04:50:19 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 04:50:19 +0100
branch
TOR_BUG_9701
changeset 13
44a2da4a2ab2
permissions
-rw-r--r--

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>

mercurial