Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / dom / MutationObserver / delivery-order.html
blob21f10a2b69530b9948ab275d575319d2b9b331a1
1 <!DOCTYPE html>
2 <script src="../../../resources/js-test.js"></script>
3 <script>
4 window.jsTestIsAsync = true;
6 description('Test that MutationObservers are delivered to in order of creation.');
7 function finish() {
8 shouldBe('order.length', '10');
9 shouldBe('order[0]', '0');
10 shouldBe('order[1]', '1');
11 shouldBe('order[2]', '2');
12 shouldBe('order[3]', '3');
13 shouldBe('order[4]', '4');
14 shouldBe('order[5]', '5');
15 shouldBe('order[6]', '6');
16 shouldBe('order[7]', '7');
17 shouldBe('order[8]', '8');
18 shouldBe('order[9]', '9');
19 finishJSTest();
22 var order = [];
23 var observers = [];
25 function setUpOrdering(num) {
26 observers.push(new MutationObserver(function(mutations) {
27 order.push(num);
28 }));
31 for (var i = 0; i < 10; ++i) {
32 setUpOrdering(i);
35 var div = document.createElement('div');
36 observers[3].observe(div, {attributes: true});
37 observers[2].observe(div, {characterData: true, subtree: true});
38 observers[1].observe(div, {attributes: true});
39 observers[7].observe(div, {childList: true});
40 observers[4].observe(div, {attributes: true});
41 observers[9].observe(div, {attributes: true});
42 observers[0].observe(div, {childList: true});
43 observers[5].observe(div, {attributes: true});
44 observers[6].observe(div, {characterData: true, subtree: true});
45 observers[8].observe(div, {attributes: true});
46 div.setAttribute('foo', 'bar');
47 div.appendChild(document.createTextNode('hello'));
48 div.firstChild.textContent = 'goodbye';
49 setTimeout(finish, 0);
50 </script>