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>
|