summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html
blob: 455ee40c383473b3dce334ba3ca4b0f89bf32218 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<!--
Distributed under both the W3C Test Suite License [1] and the W3C
3-clause BSD License [2]. To contribute to a W3C Test Suite, see the
policies and contribution forms [3].

[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
-->
<html>
<head>
<title>Shadow DOM Test - event path</title>
<link rel="author" title="Kazuhito Hokamura" href="mailto:k.hokamura@gmail.com">
<link rel="help" href="https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event">
<meta name="assert" content="Extensions to Event Interface: event.composedPath() cross the shadow boundary">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../../../html/resources/common.js"></script>
<script src="../../../resources/shadow-dom-utils.js"></script>
</head>
<body>
<div id="log"></div>
<script>
var t = async_test('event.composedPath() cross the shadow boundary');

t.step(unit(function(ctx) {
    var doc = newRenderedHTMLDocument(ctx);
    var host = doc.createElement('div');

    var shadowRoot = host.attachShadow({mode: 'open'});
    var child = doc.createElement('div');

    doc.body.appendChild(host);
    shadowRoot.appendChild(child);

    child.addEventListener('click', t.step_func(function(e) {
        assert_equals(e.composedPath().length, 7, 'composedPath().length');
        assert_equals(e.composedPath()[0], child, 'composedPath()[0] should be child');
        assert_equals(e.composedPath()[1], shadowRoot, 'composedPath()[1] should be shadowRoot');
        assert_equals(e.composedPath()[2], host, 'composedPath()[2] should be host');
        assert_equals(e.composedPath()[3], doc.body, 'composedPath()[3] should be body');
        assert_equals(e.composedPath()[4], doc.documentElement, 'composedPath()[4] should be html');
        assert_equals(e.composedPath()[5], doc, 'composedPath()[5] should be document');
        assert_equals(e.composedPath()[6], ctx.iframes[0].contentWindow, 'composedPath()[6] should be window');

        t.done();
    }));

    var event = doc.createEvent('HTMLEvents');
    event.initEvent('click', true, false);
    child.dispatchEvent(event);
}));
</script>
</body>
</html>