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

Side by Side Diff: LayoutTests/fast/dom/MutationObserver/observe-attributes.html

Issue 12317072: Merge 143386 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1410/
Patch Set: Created 7 years, 10 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
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../../js/resources/js-test-pre.js"></script> 2 <script src="../../js/resources/js-test-pre.js"></script>
3 <script> 3 <script>
4 4
5 window.jsTestIsAsync = true; 5 window.jsTestIsAsync = true;
6 var mutations, mutations2, mutationsWithOldValue; 6 var mutations, mutations2, mutationsWithOldValue;
7 var calls; 7 var calls;
8 var div; 8 var div;
9 9
10 function testBasic() { 10 function testBasic() {
11 var div; 11 var div;
12 var observer; 12 var observer;
13 13
14 function start() { 14 function start() {
15 debug('Testing basic aspects of attribute observation.'); 15 debug('Testing basic aspects of attribute observation.');
16 16
17 mutations = null; 17 mutations = null;
18 div = document.createElement('div'); 18 div = document.createElement('div');
19 div.setAttribute('bar', 'foo'); 19 div.setAttribute('bar', 'foo');
20 20
21 observer = new WebKitMutationObserver(function(m) { 21 observer = new MutationObserver(function(m) {
22 mutations = m; 22 mutations = m;
23 }); 23 });
24 24
25 observer.observe(div, { attributes: true, characterData: true }); 25 observer.observe(div, { attributes: true, characterData: true });
26 div.setAttribute('foo', 'bar'); 26 div.setAttribute('foo', 'bar');
27 div.removeAttribute('bar'); 27 div.removeAttribute('bar');
28 setTimeout(checkDisconnectAndMutate, 0); 28 setTimeout(checkDisconnectAndMutate, 0);
29 } 29 }
30 30
31 function checkDisconnectAndMutate() { 31 function checkDisconnectAndMutate() {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 75
76 function testWrongType() { 76 function testWrongType() {
77 var div; 77 var div;
78 var observer; 78 var observer;
79 79
80 function start() { 80 function start() {
81 debug('Testing that observing without specifying "attributes" does not r esult in hearing about attribute changes.'); 81 debug('Testing that observing without specifying "attributes" does not r esult in hearing about attribute changes.');
82 82
83 mutations = null; 83 mutations = null;
84 div = document.createElement('div'); 84 div = document.createElement('div');
85 observer = new WebKitMutationObserver(function(m) { 85 observer = new MutationObserver(function(m) {
86 mutations = m; 86 mutations = m;
87 }); 87 });
88 88
89 observer.observe(div, { childList: true, characterData: true }); 89 observer.observe(div, { childList: true, characterData: true });
90 div.setAttribute('foo', 'bar'); 90 div.setAttribute('foo', 'bar');
91 setTimeout(finish, 0); 91 setTimeout(finish, 0);
92 } 92 }
93 93
94 function finish() { 94 function finish() {
95 shouldBe('mutations', 'null'); 95 shouldBe('mutations', 'null');
96 observer.disconnect(); 96 observer.disconnect();
97 debug(''); 97 debug('');
98 runNextTest(); 98 runNextTest();
99 } 99 }
100 100
101 start(); 101 start();
102 } 102 }
103 103
104 function testMultipleRegistration() { 104 function testMultipleRegistration() {
105 var div; 105 var div;
106 var observer; 106 var observer;
107 107
108 function start() { 108 function start() {
109 debug('Testing that re-observing the same node with the same observer ha s the effect of resetting the options.'); 109 debug('Testing that re-observing the same node with the same observer ha s the effect of resetting the options.');
110 110
111 calls = 0; 111 calls = 0;
112 mutations = null; 112 mutations = null;
113 div = document.createElement('div'); 113 div = document.createElement('div');
114 observer = new WebKitMutationObserver(function(m) { 114 observer = new MutationObserver(function(m) {
115 mutations = m; 115 mutations = m;
116 calls++; 116 calls++;
117 }); 117 });
118 118
119 observer.observe(div, { attributes: true, characterData: true }); 119 observer.observe(div, { attributes: true, characterData: true });
120 observer.observe(div, { attributes: true }); 120 observer.observe(div, { attributes: true });
121 div.setAttribute('foo', 'bar'); 121 div.setAttribute('foo', 'bar');
122 setTimeout(checkDisconnectAndMutate, 0); 122 setTimeout(checkDisconnectAndMutate, 0);
123 } 123 }
124 124
(...skipping 21 matching lines...) Expand all
146 146
147 function testMultipleObservers() { 147 function testMultipleObservers() {
148 var div; 148 var div;
149 var observer; 149 var observer;
150 var observer2; 150 var observer2;
151 151
152 function start() { 152 function start() {
153 debug('Testing that multiple observers can be registered to a given node and both receive mutations.'); 153 debug('Testing that multiple observers can be registered to a given node and both receive mutations.');
154 mutations = null; 154 mutations = null;
155 div = document.createElement('div'); 155 div = document.createElement('div');
156 observer = new WebKitMutationObserver(function(m) { 156 observer = new MutationObserver(function(m) {
157 mutations = m; 157 mutations = m;
158 }); 158 });
159 observer2 = new WebKitMutationObserver(function(m) { 159 observer2 = new MutationObserver(function(m) {
160 mutations2 = m; 160 mutations2 = m;
161 }); 161 });
162 observer.observe(div, { attributes: true }); 162 observer.observe(div, { attributes: true });
163 observer2.observe(div, { attributes: true }); 163 observer2.observe(div, { attributes: true });
164 div.setAttribute('foo', 'bar'); 164 div.setAttribute('foo', 'bar');
165 setTimeout(finish, 0); 165 setTimeout(finish, 0);
166 } 166 }
167 167
168 function finish() { 168 function finish() {
169 shouldBe('mutations.length', '1'); 169 shouldBe('mutations.length', '1');
(...skipping 12 matching lines...) Expand all
182 } 182 }
183 183
184 function testNamespaceURI() { 184 function testNamespaceURI() {
185 var div; 185 var div;
186 var observer; 186 var observer;
187 187
188 function start() { 188 function start() {
189 debug('Testing that "attributeNamespace" value is delivered properly.'); 189 debug('Testing that "attributeNamespace" value is delivered properly.');
190 mutations = null; 190 mutations = null;
191 div = document.createElement('div'); 191 div = document.createElement('div');
192 observer = new WebKitMutationObserver(function(m) { 192 observer = new MutationObserver(function(m) {
193 mutations = m; 193 mutations = m;
194 }); 194 });
195 195
196 observer.observe(div, { attributes: true, childList: true }); 196 observer.observe(div, { attributes: true, childList: true });
197 div.setAttributeNS('http://www.foo.com/bar', 'foo', 'bar'); 197 div.setAttributeNS('http://www.foo.com/bar', 'foo', 'bar');
198 setTimeout(finish, 0); 198 setTimeout(finish, 0);
199 } 199 }
200 200
201 function finish() { 201 function finish() {
202 shouldBe('mutations.length', '1'); 202 shouldBe('mutations.length', '1');
(...skipping 11 matching lines...) Expand all
214 function testPropertyAccess() { 214 function testPropertyAccess() {
215 var img, a; 215 var img, a;
216 var observer; 216 var observer;
217 217
218 function start() { 218 function start() {
219 debug('Testing that modifications to node properties which delegate to a ttribute storage deliver mutations.'); 219 debug('Testing that modifications to node properties which delegate to a ttribute storage deliver mutations.');
220 mutations = null; 220 mutations = null;
221 img = document.createElement('img'); 221 img = document.createElement('img');
222 a = document.createElement('a'); 222 a = document.createElement('a');
223 223
224 observer = new WebKitMutationObserver(function(m) { 224 observer = new MutationObserver(function(m) {
225 mutations = m; 225 mutations = m;
226 }); 226 });
227 227
228 observer.observe(img, { attributes: true }); 228 observer.observe(img, { attributes: true });
229 observer.observe(a, { attributes: true }); 229 observer.observe(a, { attributes: true });
230 230
231 img.src = 'baz.png'; 231 img.src = 'baz.png';
232 a.href = 'foo.html'; 232 a.href = 'foo.html';
233 233
234 setTimeout(finish, 0); 234 setTimeout(finish, 0);
(...skipping 20 matching lines...) Expand all
255 255
256 function start() { 256 function start() {
257 debug('Testing mutation records are enqueued for attributes before DOMSu btreeModified is dispatched.'); 257 debug('Testing mutation records are enqueued for attributes before DOMSu btreeModified is dispatched.');
258 258
259 mutations = null; 259 mutations = null;
260 div = document.body.appendChild(document.createElement('div')); 260 div = document.body.appendChild(document.createElement('div'));
261 div2 = document.body.appendChild(document.createElement('div')); 261 div2 = document.body.appendChild(document.createElement('div'));
262 262
263 subDiv = div.appendChild(document.createElement('div')); 263 subDiv = div.appendChild(document.createElement('div'));
264 264
265 observer = new WebKitMutationObserver(function(m) { 265 observer = new MutationObserver(function(m) {
266 mutations = m; 266 mutations = m;
267 }); 267 });
268 268
269 listener = function(e) { 269 listener = function(e) {
270 div2.setAttribute('baz', 'bat'); 270 div2.setAttribute('baz', 'bat');
271 } 271 }
272 272
273 div.addEventListener('DOMSubtreeModified', listener); 273 div.addEventListener('DOMSubtreeModified', listener);
274 observer.observe(subDiv, { attributes: true }); 274 observer.observe(subDiv, { attributes: true });
275 observer.observe(div2, { attributes: true }); 275 observer.observe(div2, { attributes: true });
(...skipping 22 matching lines...) Expand all
298 function testOldValue() { 298 function testOldValue() {
299 var div; 299 var div;
300 var observer; 300 var observer;
301 301
302 function start() { 302 function start() {
303 debug('Testing basic oldValue delivery.'); 303 debug('Testing basic oldValue delivery.');
304 mutations = null; 304 mutations = null;
305 div = document.createElement('div'); 305 div = document.createElement('div');
306 div.setAttribute('bar', 'boo'); 306 div.setAttribute('bar', 'boo');
307 307
308 observer = new WebKitMutationObserver(function(mutations) { 308 observer = new MutationObserver(function(mutations) {
309 window.mutations = mutations; 309 window.mutations = mutations;
310 }); 310 });
311 observer.observe(div, { attributes: true, attributeOldValue: true }); 311 observer.observe(div, { attributes: true, attributeOldValue: true });
312 div.setAttribute('foo', 'bar'); 312 div.setAttribute('foo', 'bar');
313 div.setAttribute('foo', 'baz'); 313 div.setAttribute('foo', 'baz');
314 div.removeAttribute('bar'); 314 div.removeAttribute('bar');
315 div.removeAttribute('non-existant'); 315 div.removeAttribute('non-existant');
316 setTimeout(finish, 0); 316 setTimeout(finish, 0);
317 } 317 }
318 318
(...skipping 20 matching lines...) Expand all
339 var div; 339 var div;
340 var observerWithOldValue; 340 var observerWithOldValue;
341 var observer; 341 var observer;
342 342
343 function start() { 343 function start() {
344 debug('Testing that oldValue is delivered as requested (or not).'); 344 debug('Testing that oldValue is delivered as requested (or not).');
345 mutationsWithOldValue = null; 345 mutationsWithOldValue = null;
346 mutations = null; 346 mutations = null;
347 div = document.createElement('div'); 347 div = document.createElement('div');
348 div.setAttribute('foo', 'bar'); 348 div.setAttribute('foo', 'bar');
349 observerWithOldValue = new WebKitMutationObserver(function(mutations) { 349 observerWithOldValue = new MutationObserver(function(mutations) {
350 window.mutationsWithOldValue = mutations; 350 window.mutationsWithOldValue = mutations;
351 }); 351 });
352 observer = new WebKitMutationObserver(function(mutations) { 352 observer = new MutationObserver(function(mutations) {
353 window.mutations = mutations; 353 window.mutations = mutations;
354 }); 354 });
355 observerWithOldValue.observe(div, { attributes: true, attributeOldValue: true }); 355 observerWithOldValue.observe(div, { attributes: true, attributeOldValue: true });
356 observer.observe(div, { attributes: true }); 356 observer.observe(div, { attributes: true });
357 div.setAttribute('foo', 'baz'); 357 div.setAttribute('foo', 'baz');
358 setTimeout(finish, 0); 358 setTimeout(finish, 0);
359 } 359 }
360 360
361 function finish() { 361 function finish() {
362 shouldBe('mutationsWithOldValue.length', '1'); 362 shouldBe('mutationsWithOldValue.length', '1');
(...skipping 17 matching lines...) Expand all
380 var div; 380 var div;
381 var span; 381 var span;
382 var observer; 382 var observer;
383 383
384 function start() { 384 function start() {
385 debug('An observer with multiple observations will get attributeOldValue if any entries request it.'); 385 debug('An observer with multiple observations will get attributeOldValue if any entries request it.');
386 mutations = null; 386 mutations = null;
387 div = document.createElement('div'); 387 div = document.createElement('div');
388 span = div.appendChild(document.createElement('span')); 388 span = div.appendChild(document.createElement('span'));
389 span.setAttribute('foo', 'bar'); 389 span.setAttribute('foo', 'bar');
390 observer = new WebKitMutationObserver(function(mutations) { 390 observer = new MutationObserver(function(mutations) {
391 window.mutations = mutations; 391 window.mutations = mutations;
392 }); 392 });
393 observer.observe(div, { attributes: true, attributeOldValue: true, subtr ee: true }); 393 observer.observe(div, { attributes: true, attributeOldValue: true, subtr ee: true });
394 observer.observe(span, { attributes: true }); 394 observer.observe(span, { attributes: true });
395 span.setAttribute('foo', 'baz'); 395 span.setAttribute('foo', 'baz');
396 setTimeout(finish, 0); 396 setTimeout(finish, 0);
397 } 397 }
398 398
399 function finish() { 399 function finish() {
400 shouldBe('mutations.length', '1'); 400 shouldBe('mutations.length', '1');
401 shouldBe('mutations[0].type', '"attributes"'); 401 shouldBe('mutations[0].type', '"attributes"');
402 shouldBe('mutations[0].attributeName', '"foo"'); 402 shouldBe('mutations[0].attributeName', '"foo"');
403 shouldBe('mutations[0].oldValue', '"bar"'); 403 shouldBe('mutations[0].oldValue', '"bar"');
404 observer.disconnect(); 404 observer.disconnect();
405 debug(''); 405 debug('');
406 runNextTest(); 406 runNextTest();
407 } 407 }
408 408
409 start(); 409 start();
410 } 410 }
411 411
412 function testIDLAttribute() { 412 function testIDLAttribute() {
413 var div; 413 var div;
414 var observer; 414 var observer;
415 415
416 function start() { 416 function start() {
417 debug('Testing setting an attribute via reflected IDL attribute.'); 417 debug('Testing setting an attribute via reflected IDL attribute.');
418 mutations = null; 418 mutations = null;
419 div = document.createElement('div'); 419 div = document.createElement('div');
420 observer = new WebKitMutationObserver(function(mutations) { 420 observer = new MutationObserver(function(mutations) {
421 window.mutations = mutations; 421 window.mutations = mutations;
422 }); 422 });
423 observer.observe(div, { attributes: true, attributeOldValue: true }); 423 observer.observe(div, { attributes: true, attributeOldValue: true });
424 div.id = 'foo'; 424 div.id = 'foo';
425 div.id = 'bar'; 425 div.id = 'bar';
426 div.id = null; 426 div.id = null;
427 setTimeout(finish, 0); 427 setTimeout(finish, 0);
428 } 428 }
429 429
430 function finish() { 430 function finish() {
(...skipping 16 matching lines...) Expand all
447 } 447 }
448 448
449 function testAttributeFilter() { 449 function testAttributeFilter() {
450 var div, path; 450 var div, path;
451 var observer; 451 var observer;
452 452
453 function start() { 453 function start() {
454 debug('Testing that attributeFilter works as expected and observes case with HTML elements.'); 454 debug('Testing that attributeFilter works as expected and observes case with HTML elements.');
455 455
456 mutations = null; 456 mutations = null;
457 observer = new WebKitMutationObserver(function(m) { 457 observer = new MutationObserver(function(m) {
458 mutations = m; 458 mutations = m;
459 }); 459 });
460 460
461 div = document.createElement('div'); 461 div = document.createElement('div');
462 observer.observe(div, { attributes: true, attributeFilter: ['foo', 'bar' , 'booM'] }); 462 observer.observe(div, { attributes: true, attributeFilter: ['foo', 'bar' , 'booM'] });
463 div.setAttribute('foo', 'foo'); 463 div.setAttribute('foo', 'foo');
464 div.setAttribute('bar', 'bar'); 464 div.setAttribute('bar', 'bar');
465 div.setAttribute('baz', 'baz'); 465 div.setAttribute('baz', 'baz');
466 div.setAttribute('BOOm', 'boom'); 466 div.setAttribute('BOOm', 'boom');
467 467
(...skipping 19 matching lines...) Expand all
487 } 487 }
488 488
489 function testAttributeFilterSubtree() { 489 function testAttributeFilterSubtree() {
490 var div, div2, div3; 490 var div, div2, div3;
491 var observer; 491 var observer;
492 492
493 function start() { 493 function start() {
494 debug('Testing the behavior of attributeFilter when the same observer ob serves at multiple nodes in a subtree with different filter options.'); 494 debug('Testing the behavior of attributeFilter when the same observer ob serves at multiple nodes in a subtree with different filter options.');
495 495
496 mutations = null; 496 mutations = null;
497 observer = new WebKitMutationObserver(function(m) { 497 observer = new MutationObserver(function(m) {
498 mutations = m; 498 mutations = m;
499 }); 499 });
500 500
501 div = document.createElement('div'); 501 div = document.createElement('div');
502 div2 = div.appendChild(document.createElement('div')); 502 div2 = div.appendChild(document.createElement('div'));
503 div3 = div2.appendChild(document.createElement('div')); 503 div3 = div2.appendChild(document.createElement('div'));
504 504
505 observer.observe(div, { attributes: true, subtree: true, attributeFilter : ['foo', 'bar'] }); 505 observer.observe(div, { attributes: true, subtree: true, attributeFilter : ['foo', 'bar'] });
506 observer.observe(div2, { attributes: true, subtree: true, attributeFilte r: ['bar', 'bat'] }); 506 observer.observe(div2, { attributes: true, subtree: true, attributeFilte r: ['bar', 'bat'] });
507 507
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 } 558 }
559 559
560 function testAttributeFilterNonHTMLElement() { 560 function testAttributeFilterNonHTMLElement() {
561 var path; 561 var path;
562 var observer; 562 var observer;
563 563
564 function start() { 564 function start() {
565 debug('Testing that setting an attributeFilter filters out namespaced at tributes.'); 565 debug('Testing that setting an attributeFilter filters out namespaced at tributes.');
566 566
567 mutations = null; 567 mutations = null;
568 observer = new WebKitMutationObserver(function(m) { 568 observer = new MutationObserver(function(m) {
569 mutations = m; 569 mutations = m;
570 }); 570 });
571 571
572 path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); 572 path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
573 observer.observe(path, { attributes: true, attributeFilter: ['pathLength '] }); 573 observer.observe(path, { attributes: true, attributeFilter: ['pathLength '] });
574 path.setAttributeNS('http://www.w3.org/2000/svg', 'pathLength', '200'); 574 path.setAttributeNS('http://www.w3.org/2000/svg', 'pathLength', '200');
575 575
576 setTimeout(finish, 0); 576 setTimeout(finish, 0);
577 } 577 }
578 578
(...skipping 11 matching lines...) Expand all
590 590
591 function testAttributeFilterNonHTMLDocument() { 591 function testAttributeFilterNonHTMLDocument() {
592 var svgDoc, div, path; 592 var svgDoc, div, path;
593 var observer; 593 var observer;
594 594
595 function start() { 595 function start() {
596 debug('Testing that attributeFilter respects case with non-HTML elements .'); 596 debug('Testing that attributeFilter respects case with non-HTML elements .');
597 597
598 svgDoc = document.implementation.createDocument('http://www.w3.org/2000/ svg', 'svg', 'svg'); 598 svgDoc = document.implementation.createDocument('http://www.w3.org/2000/ svg', 'svg', 'svg');
599 mutations = null; 599 mutations = null;
600 observer = new WebKitMutationObserver(function(m) { 600 observer = new MutationObserver(function(m) {
601 mutations = m; 601 mutations = m;
602 }); 602 });
603 603
604 div = svgDoc.createElement('div'); 604 div = svgDoc.createElement('div');
605 observer.observe(div, { attributes: true, attributeFilter: ['ID', 'id', 'booM'] }); 605 observer.observe(div, { attributes: true, attributeFilter: ['ID', 'id', 'booM'] });
606 div.setAttribute('ID', 'ID'); 606 div.setAttribute('ID', 'ID');
607 div.setAttribute('id', 'id'); 607 div.setAttribute('id', 'id');
608 div.setAttribute('baz', 'baz'); 608 div.setAttribute('baz', 'baz');
609 div.setAttribute('booM', 'boom'); 609 div.setAttribute('booM', 'boom');
610 div.setAttribute('BOOm', 'boom'); 610 div.setAttribute('BOOm', 'boom');
(...skipping 24 matching lines...) Expand all
635 } 635 }
636 636
637 function testStyleAttributePropertyAccess() { 637 function testStyleAttributePropertyAccess() {
638 var div, path; 638 var div, path;
639 var observer; 639 var observer;
640 640
641 function start() { 641 function start() {
642 debug('Testing that modifying an elements style property dispatches Muta tion Records.'); 642 debug('Testing that modifying an elements style property dispatches Muta tion Records.');
643 643
644 mutations = null; 644 mutations = null;
645 observer = new WebKitMutationObserver(function(m) { 645 observer = new MutationObserver(function(m) {
646 mutations = m; 646 mutations = m;
647 }); 647 });
648 648
649 div = document.createElement('div'); 649 div = document.createElement('div');
650 div.setAttribute('style', 'color: yellow; width: 100px;'); 650 div.setAttribute('style', 'color: yellow; width: 100px;');
651 observer.observe(div, { attributes: true }); 651 observer.observe(div, { attributes: true });
652 div.style.color = 'red'; 652 div.style.color = 'red';
653 div.style.width = '200px'; 653 div.style.width = '200px';
654 div.style.color = 'blue'; 654 div.style.color = 'blue';
655 655
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 } 687 }
688 688
689 function testStyleAttributePropertyAccessOldValue() { 689 function testStyleAttributePropertyAccessOldValue() {
690 var div, path; 690 var div, path;
691 var observer; 691 var observer;
692 692
693 function start() { 693 function start() {
694 debug('Testing that modifying an elements style property dispatches Muta tion Records with correct oldValues.'); 694 debug('Testing that modifying an elements style property dispatches Muta tion Records with correct oldValues.');
695 695
696 mutations = null; 696 mutations = null;
697 observer = new WebKitMutationObserver(function(m) { 697 observer = new MutationObserver(function(m) {
698 mutations = m; 698 mutations = m;
699 }); 699 });
700 700
701 div = document.createElement('div'); 701 div = document.createElement('div');
702 div.setAttribute('style', 'color: yellow; width: 100px;'); 702 div.setAttribute('style', 'color: yellow; width: 100px;');
703 observer.observe(div, { attributes: true, attributeOldValue: true }); 703 observer.observe(div, { attributes: true, attributeOldValue: true });
704 div.style.color = 'red'; 704 div.style.color = 'red';
705 div.style.width = '200px'; 705 div.style.width = '200px';
706 div.style.color = 'blue'; 706 div.style.color = 'blue';
707 707
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 } 739 }
740 740
741 function testStyleAttributePropertyAccessIgnoreNoop() { 741 function testStyleAttributePropertyAccessIgnoreNoop() {
742 var div, path; 742 var div, path;
743 var observer; 743 var observer;
744 744
745 function start() { 745 function start() {
746 debug('Testing that a no-op style property mutation does not create Muta tion Records.'); 746 debug('Testing that a no-op style property mutation does not create Muta tion Records.');
747 747
748 mutations = null; 748 mutations = null;
749 observer = new WebKitMutationObserver(function(m) { 749 observer = new MutationObserver(function(m) {
750 mutations = m; 750 mutations = m;
751 }); 751 });
752 752
753 div = document.createElement('div'); 753 div = document.createElement('div');
754 div.setAttribute('style', 'color: yellow; width: 100px;'); 754 div.setAttribute('style', 'color: yellow; width: 100px;');
755 observer.observe(div, { attributes: true }); 755 observer.observe(div, { attributes: true });
756 div.style.removeProperty('height'); 756 div.style.removeProperty('height');
757 757
758 setTimeout(finish, 0); 758 setTimeout(finish, 0);
759 } 759 }
760 760
761 function finish() { 761 function finish() {
762 shouldBe('mutations', 'null'); 762 shouldBe('mutations', 'null');
763 763
764 observer.disconnect(); 764 observer.disconnect();
765 debug(''); 765 debug('');
766 runNextTest(); 766 runNextTest();
767 } 767 }
768 768
769 start(); 769 start();
770 } 770 }
771 771
772 function testMutateThroughAttrNodeValue() { 772 function testMutateThroughAttrNodeValue() {
773 var observer; 773 var observer;
774 774
775 function start() { 775 function start() {
776 debug('Test that mutating an attribute through an attr node delivers mut ation records'); 776 debug('Test that mutating an attribute through an attr node delivers mut ation records');
777 777
778 mutations = null; 778 mutations = null;
779 observer = new WebKitMutationObserver(function(mutations) { 779 observer = new MutationObserver(function(mutations) {
780 window.mutations = mutations; 780 window.mutations = mutations;
781 }); 781 });
782 782
783 div = document.createElement('div'); 783 div = document.createElement('div');
784 div.setAttribute('data-test', 'foo'); 784 div.setAttribute('data-test', 'foo');
785 observer.observe(div, { attributes: true, attributeOldValue: true }); 785 observer.observe(div, { attributes: true, attributeOldValue: true });
786 div.attributes['data-test'].value = 'bar'; 786 div.attributes['data-test'].value = 'bar';
787 787
788 setTimeout(finish, 0); 788 setTimeout(finish, 0);
789 } 789 }
(...skipping 13 matching lines...) Expand all
803 start(); 803 start();
804 } 804 }
805 805
806 function testMutateThroughAttrNodeChild() { 806 function testMutateThroughAttrNodeChild() {
807 var observer; 807 var observer;
808 808
809 function start() { 809 function start() {
810 debug('Test that mutating an attribute by attaching a child to an attr n ode delivers mutation records'); 810 debug('Test that mutating an attribute by attaching a child to an attr n ode delivers mutation records');
811 811
812 mutations = null; 812 mutations = null;
813 observer = new WebKitMutationObserver(function(mutations) { 813 observer = new MutationObserver(function(mutations) {
814 window.mutations = mutations; 814 window.mutations = mutations;
815 }); 815 });
816 816
817 div = document.createElement('div'); 817 div = document.createElement('div');
818 div.setAttribute('data-test', 'foo'); 818 div.setAttribute('data-test', 'foo');
819 observer.observe(div, { attributes: true, attributeOldValue: true }); 819 observer.observe(div, { attributes: true, attributeOldValue: true });
820 div.attributes['data-test'].appendChild(document.createTextNode('bar')); 820 div.attributes['data-test'].appendChild(document.createTextNode('bar'));
821 821
822 setTimeout(finish, 0); 822 setTimeout(finish, 0);
823 } 823 }
(...skipping 13 matching lines...) Expand all
837 start(); 837 start();
838 } 838 }
839 839
840 function testSetAndRemoveAttributeNode() { 840 function testSetAndRemoveAttributeNode() {
841 var observer; 841 var observer;
842 842
843 function start() { 843 function start() {
844 debug('Test that mutating via setAttributeNode delivers mutation records '); 844 debug('Test that mutating via setAttributeNode delivers mutation records ');
845 845
846 mutations = null; 846 mutations = null;
847 observer = new WebKitMutationObserver(function(mutations) { 847 observer = new MutationObserver(function(mutations) {
848 window.mutations = mutations; 848 window.mutations = mutations;
849 }); 849 });
850 850
851 div = document.createElement('div'); 851 div = document.createElement('div');
852 div.id = 'myId'; 852 div.id = 'myId';
853 div.setAttribute('data-test', 'foo'); 853 div.setAttribute('data-test', 'foo');
854 observer.observe(div, { attributes: true, attributeOldValue: true }); 854 observer.observe(div, { attributes: true, attributeOldValue: true });
855 var attr = document.createAttribute('data-test'); 855 var attr = document.createAttribute('data-test');
856 attr.value = 'bar'; 856 attr.value = 'bar';
857 div.setAttributeNode(attr); 857 div.setAttributeNode(attr);
(...skipping 28 matching lines...) Expand all
886 start(); 886 start();
887 } 887 }
888 888
889 function testMixedNodeAndElementOperations() { 889 function testMixedNodeAndElementOperations() {
890 var observer; 890 var observer;
891 891
892 function start() { 892 function start() {
893 debug('Test that setAttribute on an attribute with an existing Attr deli vers mutation records'); 893 debug('Test that setAttribute on an attribute with an existing Attr deli vers mutation records');
894 894
895 mutations = null; 895 mutations = null;
896 observer = new WebKitMutationObserver(function(mutations) { 896 observer = new MutationObserver(function(mutations) {
897 window.mutations = mutations; 897 window.mutations = mutations;
898 }); 898 });
899 899
900 div = document.createElement('div'); 900 div = document.createElement('div');
901 var attr = document.createAttribute('data-test'); 901 var attr = document.createAttribute('data-test');
902 attr.value = 'foo'; 902 attr.value = 'foo';
903 div.setAttributeNode(attr); 903 div.setAttributeNode(attr);
904 observer.observe(div, { attributes: true, attributeOldValue: true }); 904 observer.observe(div, { attributes: true, attributeOldValue: true });
905 div.setAttribute('data-test', 'bar'); 905 div.setAttribute('data-test', 'bar');
906 906
(...skipping 15 matching lines...) Expand all
922 start(); 922 start();
923 } 923 }
924 924
925 function testNamedNodeMapOperations() { 925 function testNamedNodeMapOperations() {
926 var observer; 926 var observer;
927 927
928 function start() { 928 function start() {
929 debug('Test that setNamedItem and removeNamedItem deliver mutation recor ds'); 929 debug('Test that setNamedItem and removeNamedItem deliver mutation recor ds');
930 930
931 mutations = null; 931 mutations = null;
932 observer = new WebKitMutationObserver(function(mutations) { 932 observer = new MutationObserver(function(mutations) {
933 window.mutations = mutations; 933 window.mutations = mutations;
934 }); 934 });
935 935
936 div = document.createElement('div'); 936 div = document.createElement('div');
937 div.setAttribute('data-test', 'foo'); 937 div.setAttribute('data-test', 'foo');
938 observer.observe(div, { attributes: true, attributeOldValue: true }); 938 observer.observe(div, { attributes: true, attributeOldValue: true });
939 var attr = document.createAttribute('data-test'); 939 var attr = document.createAttribute('data-test');
940 attr.value = 'bar'; 940 attr.value = 'bar';
941 div.attributes.setNamedItem(attr); 941 div.attributes.setNamedItem(attr);
942 div.attributes.removeNamedItem('data-test'); 942 div.attributes.removeNamedItem('data-test');
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 tests[testIndex++](); 995 tests[testIndex++]();
996 else 996 else
997 finishJSTest(); 997 finishJSTest();
998 } 998 }
999 999
1000 description('Test WebKitMutationObserver.observe on attributes'); 1000 description('Test WebKitMutationObserver.observe on attributes');
1001 1001
1002 runNextTest(); 1002 runNextTest();
1003 </script> 1003 </script>
1004 <script src="../../js/resources/js-test-post.js"></script> 1004 <script src="../../js/resources/js-test-post.js"></script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698