Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-disconnect.html |
diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-disconnect.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-disconnect.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ab7e083677abdc2defb99f858bf8428084185103 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/nodes/MutationObserver-disconnect.html |
@@ -0,0 +1,48 @@ |
+<!DOCTYPE HTML> |
+<meta charset=utf-8> |
+<title>MutationObservers: disconnect</title> |
+<script src="../../../../resources/testharness.js"></script> |
+<script src="../../../../resources/testharnessreport.js"></script> |
+<h1>MutationObservers: disconnect</h1> |
+<div id="log"></div> |
+<section style="display: none"> |
+<p id='n00'></p> |
+</section> |
+<script> |
+var n00 = document.getElementById('n00'); |
+var parentTest = async_test("subtree mutations"); |
+function masterMO(sequence, obs) { |
+ parentTest.step(function() { |
+ assert_equals(sequence.length, 4, "mutation records must match"); |
+ }); |
+ parentTest.done(); |
+} |
+parentTest.step(function() { |
+ (new MutationObserver(masterMO)).observe(n00.parentNode, {"subtree": true, "attributes": true}); |
+}); |
+ |
+var disconnectTest = async_test("disconnect discarded some mutations"); |
+function observerCallback(sequence, obs) { |
+ disconnectTest.step(function() { |
+ assert_equals(sequence.length, 1); |
+ assert_equals(sequence[0].type, "attributes"); |
+ assert_equals(sequence[0].attributeName, "id"); |
+ assert_equals(sequence[0].oldValue, "latest"); |
+ disconnectTest.done(); |
+ }); |
+} |
+ |
+var observer; |
+disconnectTest.step(function() { |
+ observer = new MutationObserver(observerCallback); |
+ observer.observe(n00, {"attributes": true}); |
+ n00.id = "foo"; |
+ n00.id = "bar"; |
+ observer.disconnect(); |
+ observer.observe(n00, {"attributes": true, "attributeOldValue": true}); |
+ n00.id = "latest"; |
+ observer.disconnect(); |
+ observer.observe(n00, {"attributes": true, "attributeOldValue": true}); |
+ n00.id = "n0000"; |
+}); |
+</script> |