Added: trunk/LayoutTests/fast/innerHTML/identical-mutations-expected.txt (0 => 174828)
--- trunk/LayoutTests/fast/innerHTML/identical-mutations-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/innerHTML/identical-mutations-expected.txt 2014-10-17 19:16:51 UTC (rev 174828)
@@ -0,0 +1,1969 @@
+This test checks that setting an element's .innerHTML to an identical subtree correctly detaches the replaced nodes from the document, and that any references to that subtree continue to work as expected, with custom properties intact.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+Testing with subtree: <a><b>text here</b></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><i>text here</i></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><u>text here</u></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><div>text here</div></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><span>text here</span></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><canvas>text here</canvas></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><object>text here</object></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><a>text here</a></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><i>text here</i></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><u>text here</u></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><div>text here</div></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><span>text here</span></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><canvas>text here</canvas></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><object>text here</object></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <b><a>text here</a></b>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><a>text here</a></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><b>text here</b></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><u>text here</u></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><div>text here</div></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><span>text here</span></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><canvas>text here</canvas></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><object>text here</object></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <i><a>text here</a></i>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><a>text here</a></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><b>text here</b></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><i>text here</i></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><div>text here</div></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><span>text here</span></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><canvas>text here</canvas></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><object>text here</object></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <u><a>text here</a></u>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><a>text here</a></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><b>text here</b></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><i>text here</i></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><u>text here</u></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><span>text here</span></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><canvas>text here</canvas></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><object>text here</object></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <div><a>text here</a></div>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><a>text here</a></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><b>text here</b></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><i>text here</i></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><u>text here</u></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><div>text here</div></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><canvas>text here</canvas></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><object>text here</object></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <span><a>text here</a></span>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><a>text here</a></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><b>text here</b></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><i>text here</i></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><u>text here</u></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><div>text here</div></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><span>text here</span></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><object>text here</object></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <canvas><a>text here</a></canvas>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><a>text here</a></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><b>text here</b></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><i>text here</i></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><u>text here</u></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><div>text here</div></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><span>text here</span></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><canvas>text here</canvas></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <object><a>text here</a></object>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><b>text here</b></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><i>text here</i></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><u>text here</u></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><div>text here</div></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><span>text here</span></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><canvas>text here</canvas></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+
+Testing with subtree: <a><object>text here</object></a>
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is anchorPoint.firstChild
+PASS subtreeRoot.parentNode is anchorPoint
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is true
+
+Setting anchorPoint.innerHTML to identical DOM, subtree should become detached.
+
+PASS anchorPoint.innerHTML is htmlString
+PASS subtreeRoot is not anchorPoint.firstChild
+PASS subtreeRoot.parentNode is null
+PASS innerElement.parentNode is subtreeRoot
+PASS textNode.parentNode is innerElement
+PASS subtreeRoot.hasCustomProperty is true
+PASS innerElement.hasCustomProperty is true
+PASS textNode.hasCustomProperty is true
+PASS anchorPoint.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.hasCustomProperty is not true
+PASS anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty is not true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/innerHTML/identical-mutations.html (0 => 174828)
--- trunk/LayoutTests/fast/innerHTML/identical-mutations.html (rev 0)
+++ trunk/LayoutTests/fast/innerHTML/identical-mutations.html 2014-10-17 19:16:51 UTC (rev 174828)
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<script src=""
+</head>
+<body>
+<div id="anchor"></div>
+<script>
+
+description("This test checks that setting an element's .innerHTML to an identical subtree correctly detaches the replaced nodes from the document, and that any references to that subtree continue to work as expected, with custom properties intact.");
+
+function test(rootTagName, innerTagName)
+{
+ htmlString = "<" + rootTagName + "><" + innerTagName + ">text here</" + innerTagName + "></" + rootTagName + ">";
+
+ subtreeRoot = document.createElement(rootTagName);
+ innerElement = document.createElement(innerTagName);
+ subtreeRoot.appendChild(innerElement);
+ textNode = document.createTextNode("text here");
+ innerElement.appendChild(textNode);
+
+ subtreeRoot.hasCustomProperty = true;
+ innerElement.hasCustomProperty = true;
+ textNode.hasCustomProperty = true;
+
+ anchorPoint = document.getElementById("anchor");
+ anchorPoint.appendChild(subtreeRoot);
+
+ htmlescaped = escape(htmlString).replace(/%(..)/g,"&#x$1;");
+ debug("\nTesting with subtree: " + htmlescaped + "\n");
+
+ shouldBe("anchorPoint.innerHTML", "htmlString");
+
+ shouldBe("subtreeRoot", "anchorPoint.firstChild");
+ shouldBe("subtreeRoot.parentNode", "anchorPoint");
+ shouldBe("innerElement.parentNode", "subtreeRoot");
+ shouldBe("textNode.parentNode", "innerElement");
+ shouldBe("subtreeRoot.hasCustomProperty", "true");
+ shouldBe("innerElement.hasCustomProperty", "true");
+ shouldBe("textNode.hasCustomProperty", "true");
+ shouldBe("anchorPoint.firstChild.hasCustomProperty", "true");
+ shouldBe("anchorPoint.firstChild.firstChild.hasCustomProperty", "true");
+ shouldBe("anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty", "true");
+
+ debug("\nSetting anchorPoint.innerHTML to identical DOM, subtree should become detached.\n");
+ anchorPoint.innerHTML = htmlString;
+
+ shouldBe("anchorPoint.innerHTML", "htmlString");
+ shouldNotBe("subtreeRoot", "anchorPoint.firstChild");
+ shouldBe("subtreeRoot.parentNode", "null");
+ shouldBe("innerElement.parentNode", "subtreeRoot");
+ shouldBe("textNode.parentNode", "innerElement");
+ shouldBe("subtreeRoot.hasCustomProperty", "true");
+ shouldBe("innerElement.hasCustomProperty", "true");
+ shouldBe("textNode.hasCustomProperty", "true");
+ shouldNotBe("anchorPoint.firstChild.hasCustomProperty", "true");
+ shouldNotBe("anchorPoint.firstChild.firstChild.hasCustomProperty", "true");
+ shouldNotBe("anchorPoint.firstChild.firstChild.firstChild.hasCustomProperty", "true");
+
+ anchorPoint.innerHTML = '';
+}
+
+tags = [ 'a', 'b', 'i', 'u', 'div', 'span', 'canvas', 'object', 'a' ];
+
+for (var i = 0; i < tags.length; ++i) {
+ for (var j = 0; j < tags.length; ++j) {
+ // Skip doing <foo><foo>text</foo></foo> since the parser will
+ // do tree fixup in some cases and break the test function.
+ if (tags[i] == tags[j])
+ continue;
+ test(tags[i], tags[j]);
+ }
+}
+
+</script>
+<script src=""
+</body>
+</html>