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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-attributes.html

Issue 1529523002: Import dom/ from web-platform-tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tweak W3CImportExpectations Created 5 years 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 <meta charset=utf-8>
3 <title>MutationObservers: attributes mutations</title>
4 <script src="../../../../resources/testharness.js"></script>
5 <script src="../../../../resources/testharnessreport.js"></script>
6 <script src="mutationobservers.js"></script>
7 <h1>MutationObservers: attributes mutations</h1>
8 <div id="log"></div>
9
10 <section style="display: none">
11 <p id='n'></p>
12
13 <p id='n00'></p>
14 <p id='n01'></p>
15 <p id='n02'></p>
16 <p id='n03'></p>
17 <input id="n04" type="text">
18
19 <p id='n10'></p>
20 <p id='n11'></p>
21 <p id='n12' class='c01'></p>
22 <p id='n13' class='c01 c02'></p>
23
24 <p id='n20'></p>
25 <p id='n21'></p>
26 <p id='n22'></p>
27 <p id='n23'></p>
28 <p id='n24' class="c01 c02"></p>
29
30 <p id='n30' class="c01 c02"></p>
31 <p id='n31' class="c01 c02"></p>
32 <p id='n32' class="c01 c02"></p>
33
34 <p id='n40' class="c01 c02"></p>
35 <p id='n41' class="c01 c02"></p>
36 <p id='n42' class="c01 c02"></p>
37 <p id='n43' class="c01 c02"></p>
38 <p id='n44' class="c01 c02"></p>
39 <p id='n45' class="c01 c02"></p>
40
41 <p id='n50' class="c01 c02"></p>
42 <p id='n51'></p>
43
44 <p id='n60'></p>
45 <p id='n61' class="c01"></p>
46 <p id='n62'></p>
47
48 <p id='n70' class="c01"></p>
49 <p id='n71'></p>
50 <input id="n72" type="text">
51
52 <p id='n80'></p>
53 <p id='n81'></p>
54
55 <p id='n90'></p>
56 <p id='n91'></p>
57 <p id='n92'></p>
58
59 <p id='n1000'></p>
60 <p id='n1001' class='c01'></p>
61
62 <p id='n2000'></p>
63 <p id='n2001' class='c01'></p>
64
65 <p id='n3000'></p>
66
67 </section>
68
69 <script>
70
71 var n = document.getElementById('n');
72
73 runMutationTest(n,
74 {"attributes":true},
75 [{type: "attributes", attributeName: "id"}],
76 function() { n.id = "n000";},
77 "attributes Element.id: update, no oldValue, mutation");
78
79 var n00 = document.getElementById('n00');
80 runMutationTest(n00,
81 {"attributes":true, "attributeOldValue": true},
82 [{type: "attributes", oldValue: "n00", attributeName: "id"}],
83 function() { n00.id = "n000";},
84 "attributes Element.id: update mutation");
85
86 var n01 = document.getElementById('n01');
87 runMutationTest(n01,
88 {"attributes":true, "attributeOldValue": true},
89 [{type: "attributes", oldValue: "n01", attributeName: "id"}],
90 function() { n01.id = "";},
91 "attributes Element.id: empty string update mutation");
92
93 var n02 = document.getElementById('n02');
94 runMutationTest(n02,
95 {"attributes":true, "attributeOldValue": true},
96 [{type: "attributes", oldValue: "n02", attributeName: "id"}, { type: "attributes", attributeName: "class"}],
97 function() { n02.id = "n02"; n02.setAttribute("class", "c01"); },
98 "attributes Element.id: same value mutation");
99
100 var n03 = document.getElementById('n03');
101 runMutationTest(n03,
102 {"attributes":true, "attributeOldValue": true},
103 [{type: "attributes", oldValue: "n03", attributeName: "id"}],
104 function() { n03.unknown = "c02"; n03.id = "n030";},
105 "attributes Element.unknown: IDL attribute no mutation");
106
107 var n04 = document.getElementById('n04');
108 runMutationTest(n04,
109 {"attributes":true, "attributeOldValue": true},
110 [{type: "attributes", oldValue: "text", attributeName: "type"} , {type: "attributes", oldValue: "n04", attributeName: "id"}],
111 function() { n04.type = "unknown"; n04.id = "n040";},
112 "attributes HTMLInputElement.type: type update mutation");
113
114 var n10 = document.getElementById('n10');
115 runMutationTest(n10,
116 {"attributes":true, "attributeOldValue": true},
117 [{type: "attributes", attributeName: "class"}],
118 function() { n10.className = "c01";},
119 "attributes Element.className: new value mutation");
120
121 var n11 = document.getElementById('n11');
122 runMutationTest(n11,
123 {"attributes":true, "attributeOldValue": true},
124 [{type: "attributes", attributeName: "class"}],
125 function() { n11.className = "";},
126 "attributes Element.className: empty string update mutation");
127
128 var n12 = document.getElementById('n12');
129 runMutationTest(n12,
130 {"attributes":true, "attributeOldValue": true},
131 [{type: "attributes", oldValue: "c01", attributeName: "class"} ],
132 function() { n12.className = "c01";},
133 "attributes Element.className: same value mutation");
134
135 var n13 = document.getElementById('n13');
136 runMutationTest(n13,
137 {"attributes":true, "attributeOldValue": true},
138 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
139 function() { n13.className = "c01 c02";},
140 "attributes Element.className: same multiple values mutation") ;
141
142 var n20 = document.getElementById('n20');
143 runMutationTest(n20,
144 {"attributes":true, "attributeOldValue": true},
145 [{type: "attributes", attributeName: "class"}],
146 function() { n20.classList.add("c01");},
147 "attributes Element.classList.add: single token addition mutat ion");
148
149 var n21 = document.getElementById('n21');
150 runMutationTest(n21,
151 {"attributes":true, "attributeOldValue": true},
152 [{type: "attributes", attributeName: "class"}],
153 function() { n21.classList.add("c01", "c02", "c03");},
154 "attributes Element.classList.add: multiple tokens addition mu tation");
155
156 var n22 = document.getElementById('n22');
157 runMutationTest(n22,
158 {"attributes":true, "attributeOldValue": true},
159 [{type: "attributes", oldValue: "n22", attributeName: "id"}],
160 function() { try { n22.classList.add("c01", "", "c03"); } catc h (e) { };
161 n22.id = "n220"; },
162 "attributes Element.classList.add: syntax err/no mutation");
163
164 var n23 = document.getElementById('n23');
165 runMutationTest(n23,
166 {"attributes":true, "attributeOldValue": true},
167 [{type: "attributes", oldValue: "n23", attributeName: "id"}],
168 function() { try { n23.classList.add("c01", "c 02", "c03"); } catch (e) { };
169 n23.id = "n230"; },
170 "attributes Element.classList.add: invalid character/no mutati on");
171
172 var n24 = document.getElementById('n24');
173 runMutationTest(n24,
174 {"attributes":true, "attributeOldValue": true},
175 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}, {type: "attributes", oldValue: "n24", attributeName: "id"}],
176 function() { n24.classList.add("c02"); n24.id = "n240";},
177 "attributes Element.classList.add: same value mutation");
178
179 var n30 = document.getElementById('n30');
180 runMutationTest(n30,
181 {"attributes":true, "attributeOldValue": true},
182 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
183 function() { n30.classList.remove("c01");},
184 "attributes Element.classList.remove: single token removal mut ation");
185
186 var n31 = document.getElementById('n31');
187 runMutationTest(n31,
188 {"attributes":true, "attributeOldValue": true},
189 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
190 function() { n31.classList.remove("c01", "c02");},
191 "attributes Element.classList.remove: multiple tokens removal mutation");
192
193 var n32 = document.getElementById('n32');
194 runMutationTest(n32,
195 {"attributes":true, "attributeOldValue": true},
196 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}, {type: "attributes", oldValue: "n32", attributeName: "id"}],
197 function() { n32.classList.remove("c03"); n32.id = "n320";},
198 "attributes Element.classList.remove: missing token removal mu tation");
199
200 var n40 = document.getElementById('n40');
201 runMutationTest(n40,
202 {"attributes":true, "attributeOldValue": true},
203 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
204 function() { n40.classList.toggle("c01");},
205 "attributes Element.classList.toggle: token removal mutation") ;
206
207 var n41 = document.getElementById('n41');
208 runMutationTest(n41,
209 {"attributes":true, "attributeOldValue": true},
210 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
211 function() { n41.classList.toggle("c03");},
212 "attributes Element.classList.toggle: token addition mutation" );
213
214 var n42 = document.getElementById('n42');
215 runMutationTest(n42,
216 {"attributes":true, "attributeOldValue": true},
217 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
218 function() { n42.classList.toggle("c01", false);},
219 "attributes Element.classList.toggle: forced token removal mut ation");
220
221 var n43 = document.getElementById('n43');
222 runMutationTest(n43,
223 {"attributes":true, "attributeOldValue": true},
224 [{type: "attributes", oldValue: "n43", attributeName: "id"}],
225 function() { n43.classList.toggle("c03", false); n43.id = "n43 0"; },
226 "attributes Element.classList.toggle: forced missing token rem oval no mutation");
227
228 var n44 = document.getElementById('n44');
229 runMutationTest(n44,
230 {"attributes":true, "attributeOldValue": true},
231 [{type: "attributes", oldValue: "n44", attributeName: "id"}],
232 function() { n44.classList.toggle("c01", true); n44.id = "n440 "; },
233 "attributes Element.classList.toggle: forced existing token ad dition no mutation");
234
235 var n45 = document.getElementById('n45');
236 runMutationTest(n45,
237 {"attributes":true, "attributeOldValue": true},
238 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
239 function() { n45.classList.toggle("c03", true);},
240 "attributes Element.classList.toggle: forced token addition mu tation");
241
242 var n50 = document.getElementById('n50');
243 runMutationTest(n50,
244 {"attributes":true, "attributeOldValue": true},
245 [{type: "attributes", oldValue: "c01 c02", attributeName: "cla ss"}],
246 function() {
247 for (var i = 0; i < n50.attributes.length; i++) {
248 var attr = n50.attributes[i];
249 if (attr.localName === "class") {
250 attr.value = "c03";
251 }
252 };
253 },
254 "attributes Element.attributes.value: update mutation");
255
256 var n51 = document.getElementById('n51');
257 runMutationTest(n51,
258 {"attributes":true, "attributeOldValue": true},
259 [{type: "attributes", oldValue: "n51", attributeName: "id"}],
260 function() {
261 n51.attributes[0].value = "n51";
262 },
263 "attributes Element.attributes.value: same id mutation");
264
265 var n60 = document.getElementById('n60');
266 runMutationTest(n60,
267 {"attributes":true, "attributeOldValue": true},
268 [{type: "attributes", oldValue: "n60", attributeName: "id"}],
269 function() {
270 n60.setAttribute("id", "n601");
271 },
272 "attributes Element.setAttribute: id mutation");
273
274 var n61 = document.getElementById('n61');
275 runMutationTest(n61,
276 {"attributes":true, "attributeOldValue": true},
277 [{type: "attributes", oldValue: "c01", attributeName: "class"} ],
278 function() {
279 n61.setAttribute("class", "c01");
280 },
281 "attributes Element.setAttribute: same class mutation");
282
283 var n62 = document.getElementById('n62');
284 runMutationTest(n62,
285 {"attributes":true, "attributeOldValue": true},
286 [{type: "attributes", attributeName: "classname"}],
287 function() {
288 n62.setAttribute("classname", "c01");
289 },
290 "attributes Element.setAttribute: classname mutation");
291
292 var n70 = document.getElementById('n70');
293 runMutationTest(n70,
294 {"attributes":true, "attributeOldValue": true},
295 [{type: "attributes", oldValue: "c01", attributeName: "class"} ],
296 function() {
297 n70.removeAttribute("class");
298 },
299 "attributes Element.removeAttribute: removal mutation");
300
301 var n71 = document.getElementById('n71');
302 runMutationTest(n71,
303 {"attributes":true, "attributeOldValue": true},
304 [{type: "attributes", oldValue: "n71", attributeName: "id"}],
305 function() {
306 n71.removeAttribute("class");
307 n71.id = "n710";
308 },
309 "attributes Element.removeAttribute: removal no mutation");
310
311 var n72 = document.getElementById('n72');
312 runMutationTest(n72,
313 {"attributes":true, "attributeOldValue": true},
314 [{type: "attributes", oldValue: "text", attributeName: "type"} , {type: "attributes", oldValue: "n72", attributeName: "id"}],
315 function() {
316 n72.removeAttribute("type");
317 n72.id = "n720";
318 },
319 "childList HTMLInputElement.removeAttribute: type removal muta tion");
320
321 var n80 = document.getElementById('n80');
322 runMutationTest(n80,
323 {"attributes":true, "attributeOldValue": true},
324 [{type: "attributes", attributeName: "private", attributeNames pace: "http://example.org/"}],
325 function() {
326 n80.setAttributeNS("http://example.org/", "private", "42");
327 },
328 "attributes Element.setAttributeNS: creation mutation");
329
330 var n81 = document.getElementById('n81');
331 runMutationTest(n81,
332 {"attributes":true, "attributeOldValue": true},
333 [{type: "attributes", attributeName: "lang", attributeNamespac e: "http://www.w3.org/XML/1998/namespace"}],
334 function() {
335 n81.setAttributeNS("http://www.w3.org/XML/1998/namespace", " xml:lang", "42");
336 },
337 "attributes Element.setAttributeNS: prefixed attribute creatio n mutation");
338
339 var n90 = document.getElementById('n90');
340 n90.setAttributeNS("http://example.org/", "private", "42");
341 runMutationTest(n90,
342 {"attributes":true, "attributeOldValue": true},
343 [{type: "attributes", oldValue: "42", attributeName: "private" , attributeNamespace: "http://example.org/"}],
344 function() {
345 n90.removeAttributeNS("http://example.org/", "private");
346 },
347 "attributes Element.removeAttributeNS: removal mutation");
348
349 var n91 = document.getElementById('n91');
350 runMutationTest(n91,
351 {"attributes":true, "attributeOldValue": true},
352 [{type: "attributes", oldValue: "n91", attributeName: "id"}],
353 function() {
354 n91.removeAttributeNS("http://example.org/", "private");
355 n91.id = "n910";
356 },
357 "attributes Element.removeAttributeNS: removal no mutation");
358
359 var n92 = document.getElementById('n92');
360 runMutationTest(n92,
361 {"attributes":true, "attributeOldValue": true},
362 [{type: "attributes", oldValue: "n92", attributeName: "id"}],
363 function() {
364 n92.removeAttributeNS("http://www.w3.org/XML/1998/namespace" , "xml:lang");
365 n92.id = "n920";
366 },
367 "attributes Element.removeAttributeNS: prefixed attribute remo val no mutation");
368
369 var n1000 = document.getElementById('n1000');
370 runMutationTest(n1000,
371 {"attributes":true, "attributeOldValue": true,"attributeFilter ": ["id"]},
372 [{type: "attributes", oldValue: "n1000", attributeName: "id"}] ,
373 function() { n1000.id = "abc"; n1000.className = "c01"},
374 "attributes/attributeFilter Element.id/Element.className: upda te mutation");
375
376 var n1001 = document.getElementById('n1001');
377 runMutationTest(n1001,
378 {"attributes":true, "attributeOldValue": true,"attributeFilter ": ["id", "class"]},
379 [{type: "attributes", oldValue: "n1001", attributeName: "id"},
380 {type: "attributes", oldValue: "c01", attributeName: "class"} ],
381 function() { n1001.id = "abc"; n1001.className = "c02"; n1001. setAttribute("lang", "fr");},
382 "attributes/attributeFilter Element.id/Element.className: mult iple filter update mutation");
383
384 var n2000 = document.getElementById('n2000');
385 runMutationTest(n2000,
386 {"attributeOldValue": true},
387 [{type: "attributes", oldValue: "n2000", attributeName: "id"}] ,
388 function() { n2000.id = "abc";},
389 "attributeOldValue alone Element.id: update mutation");
390
391 var n2001 = document.getElementById('n2001');
392 runMutationTest(n2001,
393 {"attributeFilter": ["id", "class"]},
394 [{type: "attributes", attributeName: "id"},
395 {type: "attributes", attributeName: "class"}],
396 function() { n2001.id = "abcd"; n2001.className = "c02"; n2001 .setAttribute("lang", "fr");},
397 "attributeFilter alone Element.id/Element.className: multiple filter update mutation");
398
399 var n3000 = document.getElementById('n3000');
400 runMutationTest(n3000,
401 {"subtree": true, "childList":false, "attributes" : true},
402 [{type: "attributes", attributeName: "id" }],
403 function() { n3000.textContent = "CHANGED"; n3000.id = "abc";} ,
404 "childList false: no childList mutation");
405
406 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698