1<!DOCTYPE html>
2<html>
3<head>
4<title> Calling stopPropagation() prior to dispatchEvent() </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>
25test(function() {
26    var event = "foo";
27    var target = document.getElementById("target");
28    var parent = document.getElementById("parent");
29    var tbody = document.getElementById("table-body");
30    var table = document.getElementById("table");
31    var body = document.body;
32    var html = document.documentElement;
33    var current_targets = [window, document, html, body, table, tbody, parent, target];
34    var expected_targets = [];
35    var actual_targets = [];
36    var expected_phases = [];
37    var actual_phases = [];
38
39    var test_event = function(evt) {
40        actual_targets.push(evt.currentTarget);
41        actual_phases.push(evt.eventPhase);
42    };
43
44    for (var i = 0; i < current_targets.length; ++i) {
45        current_targets[i].addEventListener(event, test_event, true);
46        current_targets[i].addEventListener(event, test_event, false);
47    }
48
49    var evt = document.createEvent("Event");
50    evt.initEvent(event, true, true);
51    evt.stopPropagation();
52    target.dispatchEvent(evt);
53
54    assert_array_equals(actual_targets, expected_targets, "actual_targets");
55    assert_array_equals(actual_phases, expected_phases, "actual_phases");
56});
57</script>
58</body>
59</html>
60