tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

stopImmediatePropagation.effect.html (2380B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <title> Event.stopImmediatePropagation() immediate effect </title>
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 </head>
      8 <body>
      9 <div id=log></div>
     10 
     11 <table id="table" border="1" style="display: none">
     12    <tbody id="table-body">
     13    <tr id="table-row">
     14        <td id="table-cell">Shady Grove</td>
     15        <td>Aeolian</td>
     16    </tr>
     17    <tr id="parent">
     18        <td id="target">Over the river, Charlie</td>
     19        <td>Dorian</td>
     20    </tr>
     21    </tbody>
     22 </table>
     23 
     24 <script>
     25    var EVENT = "foo";
     26    var TARGET = document.getElementById("target");
     27    var PARENT = document.getElementById("parent");
     28    var TBODY = document.getElementById("table-body");
     29    var TABLE = document.getElementById("table");
     30    var BODY = document.body;
     31    var HTML = document.documentElement;
     32    var CurrentTargets = [window, document, HTML, BODY, TABLE, TBODY, PARENT, TARGET];
     33    var ExpectResult = [window, window, document, document, HTML, HTML, BODY, BODY, TABLE];
     34    var ActualResult = [];
     35    var ExpectListeners = [0,1,0,1,0,1,0,1,0];
     36    var ActualListeners = [];
     37 
     38    var description = "Test Description: " +
     39                      "stopImmediatePropagation() prevents other event listeners from being triggered and, unlike " +
     40                      "Event.stopPropagation(), its effect must be immediate. Once it has been called, further calls " +
     41                      "to this method have no additional effect.";
     42 
     43    test(function()
     44    {
     45        for (var i=0; i < CurrentTargets.length; i++)
     46        {
     47            CurrentTargets[i].addEventListener(EVENT, function(e){TestEvent(e, 0)}, true);
     48            CurrentTargets[i].addEventListener(EVENT, function(e){TestEvent(e, 1)}, true);
     49        }
     50 
     51        var evt = document.createEvent("Event");
     52        evt.initEvent(EVENT, true, true);
     53        TARGET.dispatchEvent(evt);
     54 
     55        assert_array_equals(ActualResult, ExpectResult, "ActualResult");
     56        assert_array_equals(ActualListeners, ExpectListeners, "ActualListeners");
     57 
     58    }, description);
     59 
     60    function TestEvent(evt, i)
     61    {
     62        ActualResult.push(evt.currentTarget);
     63        ActualListeners.push(i);
     64        if ((1 == evt.eventPhase) && (TABLE == evt.currentTarget) && (0 == i))
     65        {
     66            evt.stopImmediatePropagation();
     67        }
     68    }
     69 </script>
     70 </body>
     71 </html>