tor-browser

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

Event-dispatch-reenter.html (2221B)


      1 <!DOCTYPE html>
      2 <meta charset=utf-8>
      3 <title> Dispatch additional events inside an event listener </title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <div id=log></div>
      7 <table id="table" border="1" style="display: none">
      8    <tbody id="table-body">
      9    <tr id="table-row">
     10        <td id="table-cell">Shady Grove</td>
     11        <td>Aeolian</td>
     12    </tr>
     13    <tr id="parent">
     14        <td id="target">Over the river, Charlie</td>
     15        <td>Dorian</td>
     16    </tr>
     17    </tbody>
     18 </table>
     19 <script>
     20 test(function() {
     21    var event_type = "foo";
     22    var target = document.getElementById("target");
     23    var parent = document.getElementById("parent");
     24    var tbody = document.getElementById("table-body");
     25    var table = document.getElementById("table");
     26    var body = document.body;
     27    var html = document.documentElement;
     28    var targets = [window, document, html, body, table, tbody, parent, target];
     29    var expected_targets = [
     30        window, document, html, body, table,
     31        target, parent, tbody,
     32        table, body, html, document, window,
     33        tbody, parent, target];
     34    var actual_targets = [];
     35    var expected_types = [
     36        "foo", "foo", "foo", "foo", "foo",
     37        "bar", "bar", "bar",
     38        "bar", "bar", "bar", "bar", "bar",
     39        "foo", "foo", "foo"
     40    ];
     41 
     42    var actual_targets = [], actual_types = [];
     43    var test_event = this.step_func(function(evt) {
     44        actual_targets.push(evt.currentTarget);
     45        actual_types.push(evt.type);
     46 
     47        if (table == evt.currentTarget && event_type == evt.type) {
     48            var e = document.createEvent("Event");
     49            e.initEvent("bar", true, true);
     50            target.dispatchEvent(e);
     51        }
     52    });
     53 
     54    for (var i = 0; i < targets.length; ++i) {
     55        targets[i].addEventListener(event_type, test_event, true);
     56        targets[i].addEventListener("bar", test_event, false);
     57    }
     58 
     59    var evt = document.createEvent("Event");
     60    evt.initEvent(event_type, false, true);
     61    target.dispatchEvent(evt);
     62 
     63    assert_array_equals(actual_targets, expected_targets, "actual_targets");
     64    assert_array_equals(actual_types, expected_types, "actual_types");
     65 });
     66 </script>