From cf0ea11ebe5801798d0390f7747b056110f74ed9 Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Thu, 6 Sep 2018 15:45:30 -0400 Subject: [PATCH] HTML: Add test for document.open() and MutationObserver (#12879) For https://github.com/whatwg/html/issues/3818. --- .../mutation-observer.window.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 html/webappapis/dynamic-markup-insertion/opening-the-input-stream/mutation-observer.window.js diff --git a/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/mutation-observer.window.js b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/mutation-observer.window.js new file mode 100644 index 00000000000000..34e73146a9d8e4 --- /dev/null +++ b/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/mutation-observer.window.js @@ -0,0 +1,19 @@ +async_test(t => { + const frame = document.body.appendChild(document.createElement("iframe")); + t.add_cleanup(() => { frame.remove(); }); + const originalHTMLElement = frame.contentDocument.documentElement; + assert_equals(originalHTMLElement.localName, "html"); + const observer = new frame.contentWindow.MutationObserver(t.step_func_done(records => { + // Even though we passed `subtree: true` to observer.observe, due to the + // fact that "replace all" algorithm removes children with the "suppress + // observers flag" set, we still only get the html element as the sole + // removed node. + assert_equals(records.length, 1); + assert_equals(records[0].type, "childList"); + assert_equals(records[0].target, frame.contentDocument); + assert_array_equals(records[0].addedNodes, []); + assert_array_equals(records[0].removedNodes, [originalHTMLElement]); + })); + observer.observe(frame.contentDocument, { childList: true, subtree: true }); + assert_equals(frame.contentDocument.open(), frame.contentDocument); +}, "document.open() should inform mutation observer of node removal");