| 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>
|
|
|