blob: 6f5475e34aa8a8531e4fef7d3c74de4958369392 [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../resources/inspector-test.js"></script>
<script>
function test()
{
let suite = InspectorTest.createAsyncSuite("DOM.DisconnectTreeOnMainResourceChange");
suite.addTestCase({
name: "CheckLazyInitializationOfDOMTree",
description: "Check that DOMTree instances are created lazily.",
test(resolve, reject) {
let instances = WI.domManager.retainedObjectsWithPrototype(WI.DOMTree);
InspectorTest.expectThat(instances.size === 0, "There should not be a DOMTree listening to DOMTreeManager events initially.");
InspectorTest.log("DOMTree instance count: " + instances.size);
resolve();
}
});
suite.addTestCase({
name: "CheckDOMTreeCountAfterUsingGetter",
description: "Check that the count of connected DOMTrees is correct after initializing them.",
test(resolve, reject) {
let mainFrame = WI.networkManager.mainFrame;
mainFrame.domTree; // Force creation of the root DOM tree.
let instances = WI.domManager.retainedObjectsWithPrototype(WI.DOMTree);
InspectorTest.expectThat(instances.size === 1, "There should be a one DOMTree listening to DOMTreeManager events after creation.");
InspectorTest.log("DOMTree instance count: " + instances.size);
// Force creation of child DOM trees.
let childrenLevel1 = Array.from(mainFrame.childFrameCollection);
childrenLevel1[0].domTree;
let childrenLevel2 = Array.from(childrenLevel1[0].childFrameCollection);
childrenLevel2[0].domTree;
let childrenLevel3 = Array.from(childrenLevel2[0].childFrameCollection);
childrenLevel3[0].domTree;
instances = WI.domManager.retainedObjectsWithPrototype(WI.DOMTree);
InspectorTest.expectThat(instances.size === 4, "There should be four DOMTrees listening to DOMTreeManager events after touching each Frame.");
InspectorTest.log("DOMTree instance count: " + instances.size);
resolve();
}
});
suite.addTestCase({
name: "CheckDOMTreeCountAfterReloading",
description: "Check that the count of connected DOMTrees is correct after a reload.",
test(resolve, reject) {
WI.Frame.awaitEvent(WI.Frame.Event.MainResourceDidChange)
.then((event) => {
let instances = WI.domManager.retainedObjectsWithPrototype(WI.DOMTree);
InspectorTest.expectThat(instances.size === 0, "There should not be any DOMTrees listening to DOMTreeManager events after a main frame navigation.");
InspectorTest.log("DOMTree instance count: " + instances.size);
})
.then(resolve, reject);
InspectorTest.reloadPage();
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Testing that DOMTrees are not retained by DOMTreeManager across main frame navigations.</p>
<iframe src="resources/nested-frame-2-deep.html"/>
</body>
</html>