| <html> |
| <head> |
| <script type="text/javascript" src="../../http/tests/inspector-protocol/resources/protocol-test.js"></script> |
| <script> |
| function createDetachedDomTreeAndRunTest() |
| { |
| window.retaining_wrapper = document.createElement("div"); |
| var t = document.createElement("div"); |
| retaining_wrapper.appendChild(t); |
| t.appendChild(document.createElement("div")); |
| |
| runTest(); |
| } |
| |
| function test() |
| { |
| InspectorTest.importScript("../../../../inspector-protocol/heap-profiler/resources/heap-snapshot-common.js"); |
| |
| function checkHeapSnapshot(snapshot) { |
| var node; |
| for (var it = snapshot._allNodes(); it.hasNext(); it.next()) { |
| if (it.node.name() === "(Detached DOM trees)") { |
| node = it.node; |
| break; |
| } |
| } |
| if (node) |
| InspectorTest.log("SUCCESS: found " + node.name()); |
| else |
| return fail("cannot find detached DOM trees root"); |
| |
| var detachedDOMTreeRE = /^Detached DOM tree/; |
| var detachedDomTreeFound = false; |
| for (var iter = node.edges(); iter.hasNext(); iter.next()) { |
| var node = iter.edge.node(); |
| if (detachedDOMTreeRE.test(node.className())) { |
| if ("Detached DOM tree / 4 entries" === node.name()) { |
| if (detachedDomTreeFound) |
| return fail("second " + node.name()); |
| detachedDomTreeFound = true; |
| InspectorTest.log("SUCCESS: found " + node.name()); |
| checkDetachedDOMTreeNodes(node); |
| } else |
| return fail("unexpected detached DOM tree: " + node.name()); |
| } |
| } |
| } |
| |
| function checkDetachedDOMTreeNodes(treeNode) |
| { |
| var divCount = 0; |
| for (var iter = treeNode.edges(); iter.hasNext(); iter.next()) { |
| var node = iter.edge.node(); |
| if (node.name() === "HTMLDivElement") |
| ++divCount; |
| else |
| return fail("unexpected DOM wrapper: " + node.name()); |
| } |
| if (divCount === 3) |
| InspectorTest.log("SUCCESS: found " + divCount + " DIVs in " + treeNode.name()); |
| else |
| return fail("unexpected DIV count: " + divCount); |
| |
| } |
| |
| function fail(message) { |
| InspectorTest.log("FAIL: " + message); |
| InspectorTest.completeTest(); |
| } |
| |
| InspectorTest.takeHeapSnapshot(checkHeapSnapshot); |
| } |
| </script> |
| </head> |
| <body onload="createDetachedDomTreeAndRunTest()"> |
| <p>Test that all nodes from the detached DOM tree will get into one group in the heap snapshot. <a href="https://bugs.webkit.org/show_bug.cgi?id=107819">Bug 107819.</p> |
| </body> |
| </html> |