• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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>
20test(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>
67