Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-document.html |
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-document.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-document.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4bcd3da25dd5ae2998fdb4d0d1ee9645a894df2a |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-document.html |
@@ -0,0 +1,167 @@ |
+<!DOCTYPE HTML> |
+<meta charset=utf-8> |
+<title>MutationObservers: takeRecords</title> |
+<script src="../../../../resources/testharness.js"></script> |
+<script src="../../../../resources/testharnessreport.js"></script> |
+<script src="mutationobservers.js"></script> |
+<h1>MutationObservers: document mutations</h1> |
+<div id="log"></div> |
+ |
+<script id='s001'> |
+ var setupTest = async_test("setup test"); |
+ var insertionTest = async_test("parser insertion mutations"); |
+ var insertionTest2 = async_test("parser script insertion mutation"); |
+ var testCounter = 0; |
+ |
+ function masterMO(sequence, obs) { |
+ testCounter++; |
+ if (testCounter == 1) { |
+ insertionTest.step( |
+ function () { |
+ checkRecords(document, sequence, |
+ [{type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("n00") ]; |
+ }, |
+ previousSibling: function () { |
+ return document.getElementById("s001"); |
+ }, |
+ target: document.body}, |
+ {type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("s002") ]; |
+ }, |
+ previousSibling: function () { |
+ return document.getElementById("n00"); |
+ }, |
+ target: document.body}, |
+ {type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("s002").firstChild ]; |
+ }, |
+ target: function () { |
+ return document.getElementById("s002"); |
+ }}]); |
+ }); |
+ } else if (testCounter == 2) { |
+ insertionTest2.step( |
+ function () { |
+ checkRecords(document, sequence, |
+ [{type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("inserted_script") ]; |
+ }, |
+ target: function () { |
+ return document.getElementById("n00"); |
+ }}, |
+ {type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("inserted_element") ]; |
+ }, |
+ previousSibling: function () { |
+ return document.getElementById("s002"); |
+ }, |
+ target: document.body} |
+ ]); |
+ }); |
+ } |
+ } |
+ var document_observer; |
+ var newElement; |
+ setupTest.step(function() { |
+ document_observer = new MutationObserver(masterMO); |
+ newElement = document.createElement("span"); |
+ document_observer.observe(document, {subtree:true,childList:true}); |
+ newElement.id = "inserted_element"; |
+ newElement.setAttribute("style", "display: none"); |
+ newElement.textContent = "my new span for n00"; |
+ }); |
+</script><p id='n00'></p><script id='s002'> |
+ var newScript = document.createElement("script"); |
+ setupTest.step(function() { |
+ newScript.textContent = "document.body.appendChild(newElement);"; |
+ newScript.id = "inserted_script"; |
+ document.getElementById("n00").appendChild(newScript); |
+ }); |
+ if (testCounter < 1) { |
+ insertionTest.step( |
+ function () { |
+ assert_unreached("document observer did not trigger"); |
+ }); |
+ } |
+</script><script id='s003'> |
+ setupTest.step(function() { |
+ document_observer.disconnect(); |
+ }); |
+ if (testCounter < 2) { |
+ insertionTest2.step( |
+ function () { |
+ assert_unreached("document observer did not trigger"); |
+ }); |
+ } |
+ insertionTest.done(); |
+ insertionTest2.done(); |
+</script> |
+ |
+<p id='n012'></p><div id='d01'> |
+<script id='s011'> |
+ var removalTest = async_test("removal of parent during parsing"); |
+ var d01 = document.getElementById("d01"); |
+ testCounter = 0; |
+ |
+ function removalMO(sequence, obs) { |
+ testCounter++; |
+ if (testCounter == 1) { |
+ removalTest.step( |
+ function () { |
+ checkRecords(document, sequence, |
+ [{type: "childList", |
+ removedNodes: function () { |
+ return [ d01 ]; |
+ }, |
+ previousSibling: function () { |
+ return document.getElementById("n012"); |
+ }, |
+ target: document.body}]); |
+ }); |
+ } else if (testCounter == 2) { |
+ removalTest.step( |
+ function () { |
+ checkRecords(document, sequence, |
+ [{type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("s012") ]; |
+ }, |
+ previousSibling: function () { |
+ return document.getElementById("n012"); |
+ }, |
+ target: document.body}, |
+ {type: "childList", |
+ addedNodes: function () { |
+ return [ document.getElementById("s012").firstChild ]; |
+ }, |
+ target: function () { |
+ return document.getElementById("s012"); |
+ }}]); |
+ }); |
+ } |
+ } |
+ var document2_observer; |
+ setupTest.step(function() { |
+ document2_observer = new MutationObserver(removalMO); |
+ document2_observer.observe(document, {subtree:true,childList:true}); |
+ d01.parentNode.removeChild(d01); |
+ }); |
+</script><p id='n01'></p></div><script id='s012'> |
+ setupTest.step(function() { |
+ document2_observer.disconnect(); |
+ }); |
+ if (testCounter < 2) { |
+ removalTest.step( |
+ function () { |
+ assert_unreached("document observer did not trigger"); |
+ }); |
+ } |
+ removalTest.done(); |
+ setupTest.done(); |
+</script> |