blob: d045de48adc4b7e461f52f29c5eb35df8bf232ef [file] [log] [blame]
<html>
<head>
<script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function createDetachedDomTreeAndRunTest()
{
if (window.gc)
window.gc();
window.retaining_wrapper = document.createElement("div");
var t = document.createElement("div");
retaining_wrapper.appendChild(t);
t.appendChild(document.createElement("div"));
if (window.testRunner)
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 InspectorTest.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 / 3 entries" === node.name()) {
if (detachedDomTreeFound)
return InspectorTest.fail("second " + node.name());
detachedDomTreeFound = true;
InspectorTest.log("SUCCESS: found " + node.name());
checkDetachedDOMTreeNodes(node);
} else
return InspectorTest.fail("unexpected detached DOM tree: " + node.name());
}
}
InspectorTest.completeTest();
}
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 InspectorTest.fail("unexpected DOM wrapper: " + node.name());
}
if (divCount === 3)
InspectorTest.log("SUCCESS: found " + divCount + " DIVs in " + treeNode.name());
else
return InspectorTest.fail("unexpected DIV count: " + divCount);
}
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>