Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(918)

Side by Side Diff: third_party/WebKit/LayoutTests/imported/wpt/shadow-dom/leaktests/get-elements.html

Issue 2015623004: Import wpt@ed94c51f3dfaa5ff4c9c311add1a560408059c51 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta name='author' title='Google' href='http://www.google.com'>
5 <meta name='assert' content='getElement* API in document should not leak any nod e in shadow tree.'>
6 <link rel='help' href='https://w3c.github.io/webcomponents/spec/shadow/'>
7 <script src='../../../../resources/testharness.js'></script>
8 <script src='../../../../resources/testharnessreport.js'></script>
9 </head>
10 <body>
11
12 <!-- This template will be filled in '#doc', '#host-open', and '#host-closed' b elow -->
13 <template id='domtree-template'>
14 <span id='foo'></span>
15 <div class='bar'></div>
16 <form name='baz'></form>
17 <my-element></my-element>
18 </template>
19
20 <div id='doc'>
21 <div id='host-open'></div>
22 <div id='host-closed'></div>
23 </div>
24
25 </body>
26 <script>
27 'use strict';
28
29 function fillTemplate(root, prefix) {
30 var tmpl = document.getElementById('domtree-template');
31 root.appendChild(document.importNode(tmpl.content, true));
32 for (var i = 0; i < root.childNodes.length; ++i) {
33 var el = root.childNodes[i];
34 if (el.nodeType != 1)
35 continue;
36 el.setAttribute('label', prefix + el.tagName.toLowerCase());
37 }
38
39 root.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'lin earGradient'));
40 }
41
42 // Construct subtree with 'doc-*' ids.
43 var doc = document.getElementById('doc');
44 fillTemplate(doc, 'doc-');
45
46 // Construct shadow subtree with 'shadow-*' ids.
47 var hostOpen = document.getElementById('host-open');
48 var shadowOpen = hostOpen.attachShadow({mode: 'open'});
49 fillTemplate(shadowOpen, 'shadow-open-');
50
51 var hostClosed = document.getElementById('host-closed');
52 var shadowClosed = hostClosed.attachShadow({mode: 'closed'});
53 fillTemplate(shadowClosed, 'shadow-closed-');
54
55 test(function() {
56 // getElementById() (NonElementParentNode)
57 assert_equals(document.querySelectorAll('#foo').length, 1);
58 assert_equals(document.getElementById('foo').getAttribute('label'), 'doc-spa n');
59 assert_equals(document.querySelector('#foo').getAttribute('label'), 'doc-spa n');
60
61 assert_equals(doc.querySelectorAll('#foo').length, 1);
62 assert_equals(doc.querySelector('#foo').getAttribute('label'), 'doc-span');
63
64 assert_equals(hostOpen.querySelectorAll('#foo').length, 0);
65
66 assert_equals(shadowOpen.querySelectorAll('#foo').length, 1);
67 assert_equals(shadowOpen.getElementById('foo').getAttribute('label'), 'shado w-open-span');
68 assert_equals(shadowOpen.querySelector('#foo').getAttribute('label'), 'shado w-open-span');
69
70 assert_equals(hostClosed.querySelectorAll('#foo').length, 0);
71
72 assert_equals(shadowClosed.querySelectorAll('#foo').length, 1);
73 assert_equals(shadowClosed.getElementById('foo').getAttribute('label'), 'sha dow-closed-span');
74 assert_equals(shadowClosed.querySelector('#foo').getAttribute('label'), 'sha dow-closed-span');
75 }, 'getElementsById() should not leak nodes in shadow tree');
76
77 test(function() {
78 // getElementsByClassName() (Element, Document)
79 assert_equals(document.getElementsByClassName('bar').length, 1);
80 assert_equals(document.getElementsByClassName('bar')[0].getAttribute('label' ), 'doc-div');
81 assert_equals(document.getElementsByClassName('bar').length, 1);
82 assert_equals(document.getElementsByClassName('bar')[0].getAttribute('label' ), 'doc-div');
83 assert_equals(document.querySelectorAll('.bar').length, 1);
84
85 assert_equals(doc.querySelectorAll('.bar').length, 1);
86 assert_equals(doc.getElementsByClassName('bar')[0].getAttribute('label'), 'd oc-div');
87
88 assert_array_equals(hostOpen.querySelectorAll('.bar').length, 0);
89
90 assert_equals(shadowOpen.querySelectorAll('.bar').length, 1);
91 assert_equals(shadowOpen.querySelectorAll('.bar')[0].getAttribute('label'), 'shadow-open-div');
92
93 assert_array_equals(hostClosed.querySelectorAll('.bar').length, 0);
94
95 assert_equals(shadowClosed.querySelectorAll('.bar').length, 1);
96 assert_equals(shadowClosed.querySelectorAll('.bar')[0].getAttribute('label') , 'shadow-closed-div');
97 }, 'getElementsByClassName() should not leak nodes in shadow tree');
98
99 test(function() {
100 // getElementsByName (Document)
101 assert_equals(document.getElementsByName('baz').length, 1);
102 assert_equals(document.getElementsByName('baz')[0].getAttribute('label'), 'd oc-form');
103 assert_equals(document.getElementsByName('baz').length, 1);
104 assert_equals(document.getElementsByName('baz')[0].getAttribute('label'), 'd oc-form');
105 assert_equals(document.querySelectorAll('[name=baz]').length, 1);
106
107 assert_equals(doc.querySelectorAll('[name=baz]').length, 1);
108
109 assert_array_equals(hostOpen.querySelectorAll('[name=baz]').length, 0);
110 assert_equals(shadowOpen.querySelectorAll('[name=baz]').length, 1);
111 assert_equals(shadowOpen.querySelectorAll('[name=baz]')[0].getAttribute('lab el'), 'shadow-open-form');
112
113 assert_array_equals(hostClosed.querySelectorAll('[name=baz]').length, 0);
114 assert_equals(shadowClosed.querySelectorAll('[name=baz]').length, 1);
115 assert_equals(shadowClosed.querySelectorAll('[name=baz]')[0].getAttribute('l abel'), 'shadow-closed-form');
116 }, 'getElementsByName() should not leak nodes in shadow tree');
117
118 test(function() {
119 // getElementsByTagName (Element, Document)
120 assert_equals(document.getElementsByTagName('my-element').length, 1);
121 assert_equals(document.getElementsByTagName('my-element')[0].getAttribute('l abel'), 'doc-my-element');
122 assert_equals(document.getElementsByTagName('my-element').length, 1);
123 assert_equals(document.getElementsByTagName('my-element')[0].getAttribute('l abel'), 'doc-my-element');
124 assert_equals(document.querySelectorAll('my-element').length, 1);
125
126 assert_equals(doc.querySelectorAll('my-element').length, 1);
127 assert_equals(doc.getElementsByTagName('my-element')[0].getAttribute('label' ), 'doc-my-element');
128
129 assert_array_equals(hostOpen.querySelectorAll('my-element').length, 0);
130 // ShadowRoot isn't an Element, does not have getElementsByTagName().
131 assert_equals(shadowOpen.querySelectorAll('my-element').length, 1);
132 assert_equals(shadowOpen.querySelectorAll('my-element')[0].getAttribute('lab el'), 'shadow-open-my-element');
133
134 assert_array_equals(hostClosed.querySelectorAll('my-element').length, 0);
135 assert_equals(shadowClosed.querySelectorAll('my-element').length, 1);
136 assert_equals(shadowClosed.querySelectorAll('my-element')[0].getAttribute('l abel'), 'shadow-closed-my-element');
137 }, 'getElementsByTagName() should not leak nodes in shadow tree');
138
139 test(function() {
140 // getElementsByTagNameNS (Element, Document)
141 assert_equals(document.getElementsByTagName('lineargradient').length, 0);
142 assert_equals(document.getElementsByTagNameNS('*', 'lineargradient').length, 0);
143 assert_equals(document.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'lineargradient').length, 0);
144 assert_equals(document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml' , 'lineargradient').length, 0);
145
146 assert_equals(document.getElementsByTagName('linearGradient').length, 1);
147 assert_equals(document.getElementsByTagNameNS('*', 'linearGradient').length, 1);
148 assert_equals(document.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'linearGradient').length, 1);
149 assert_equals(document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml' , 'linearGradient').length, 0);
150
151 assert_equals(doc.getElementsByTagName('lineargradient').length, 0);
152 assert_equals(doc.getElementsByTagNameNS('*', 'lineargradient').length, 0);
153 assert_equals(doc.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'line argradient').length, 0);
154 assert_equals(doc.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'li neargradient').length, 0);
155
156 assert_equals(doc.getElementsByTagName('linearGradient').length, 1);
157 assert_equals(doc.getElementsByTagNameNS('*', 'linearGradient').length, 1);
158 assert_equals(doc.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'line arGradient').length, 1);
159 assert_equals(doc.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'li nearGradient').length, 0);
160
161 assert_equals(hostOpen.getElementsByTagName('linearGradient').length, 0);
162 assert_equals(hostOpen.getElementsByTagNameNS('*', 'linearGradient').length, 0);
163 assert_equals(hostOpen.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'linearGradient').length, 0);
164 assert_equals(hostOpen.getElementsByTagNameNS('http://www.w3.org/1999/xhtml' , 'linearGradient').length, 0);
165
166 assert_equals(hostClosed.getElementsByTagName('linearGradient').length, 0);
167 assert_equals(hostClosed.getElementsByTagNameNS('*', 'linearGradient').lengt h, 0);
168 assert_equals(hostClosed.getElementsByTagNameNS('http://www.w3.org/2000/svg' , 'linearGradient').length, 0);
169 assert_equals(hostClosed.getElementsByTagNameNS('http://www.w3.org/1999/xhtm l', 'linearGradient').length, 0);
170
171 // ShadowRoot isn't an Element, does not have getElementsByTagNameNS().
172 }, 'getElementsByTagNameNS() should not leak nodes in shadow tree');
173 </script>
174 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698