blob: bf67005fb522d90db4503f3734fa13c4b419e53c [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let documentNode;
let suite = InspectorTest.createAsyncSuite("CSS.nodeLayoutFlagsChanged.Rendered");
function addTestCase({name, description, selector, setup, domNodeHandler})
{
suite.addTestCase({
name,
description,
setup,
async test() {
let nodeId = await documentNode.querySelector(selector);
let domNode = WI.domManager.nodeForId(nodeId);
InspectorTest.assert(domNode, `Should find DOM Node for selector '${selector}'.`);
await domNodeHandler(domNode);
},
});
}
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Existing.Direct.Display.None",
description: "Test that existing nodes with `display: none` are not rendered.",
selector: "#direct-display-none",
async domNodeHandler(domNode) {
InspectorTest.expectFalse(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render existing nodes with `display: none`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Existing.Direct.Display.Block",
description: "Test that existing nodes with `display: block` are rendered.",
selector: "#direct-display-block",
async domNodeHandler(domNode) {
InspectorTest.expectTrue(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render existing nodes with `display: block`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Existing.Parent.Display.None",
description: "Test that existing nodes that have a parent with `display: none` are not rendered.",
selector: "#parent-display-none",
async domNodeHandler(domNode) {
InspectorTest.expectFalse(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render existing nodes that have a parent with `display: none`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Existing.Parent.Display.Block",
description: "Test that existing nodes that have a parent with with `display: block` are rendered.",
selector: "#parent-display-block",
async domNodeHandler(domNode) {
InspectorTest.expectTrue(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render existing nodes that have a parent with `display: block`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.New.Direct.Display.None",
description: "Test that new nodes with `display: none` are not rendered.",
selector: "#new-direct-display-none",
async setup() {
await InspectorTest.evaluateInPage(`document.body.insertAdjacentHTML("beforeend", "<div id='new-direct-display-none' style='display: none'></div>")`);
},
async domNodeHandler(domNode) {
InspectorTest.expectFalse(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render new nodes with `display: none`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.New.Direct.Display.Block",
description: "Test that new nodes with `display: block` are rendered.",
selector: "#new-direct-display-block",
async setup() {
await InspectorTest.evaluateInPage(`document.body.insertAdjacentHTML("beforeend", "<div id='new-direct-display-block' style='display: block'></div>")`);
},
async domNodeHandler(domNode) {
InspectorTest.expectTrue(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render new nodes with `display: block`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.New.Direct.Display.None",
description: "Test that new nodes that have a parent with `display: none` are not rendered.",
selector: "#new-direct-display-none",
async setup() {
await InspectorTest.evaluateInPage(`document.body.insertAdjacentHTML("beforeend", "<div style='display: none'><div id='new-direct-display-none'></div></div>")`);
},
async domNodeHandler(domNode) {
InspectorTest.expectFalse(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render new nodes that have a parent with `display: none`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.New.Direct.Display.Block",
description: "Test that new nodes that have a parent with `display: block` are rendered.",
selector: "#new-direct-display-block",
async setup() {
await InspectorTest.evaluateInPage(`document.body.insertAdjacentHTML("beforeend", "<div style='display: block'><div id='new-direct-display-block'></div></div>")`);
},
async domNodeHandler(domNode) {
InspectorTest.expectTrue(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render new nodes that have a parent with `display: block`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Change.Direct.Display.None",
description: "Test that nodes changed to `display: block` are rendered.",
selector: "#direct-display-block",
async domNodeHandler(domNode) {
InspectorTest.assert(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render existing nodes with `display: block`.");
InspectorTest.log("Changing to `display: none`...");
await Promise.all([
domNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged),
domNode.setAttributeValue("style", "display: none"),
]);
InspectorTest.expectFalse(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render nodes changed to `display: none`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Change.Direct.Display.Block",
description: "Test that nodes changed to `display: none` are not rendered.",
selector: "#direct-display-none",
async domNodeHandler(domNode) {
InspectorTest.assert(!domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render existing nodes with `display: none`.");
InspectorTest.log("Changing to `display: block`...");
await Promise.all([
domNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged),
domNode.setAttributeValue("style", "display: block"),
]);
InspectorTest.expectTrue(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render nodes changed to `display: block`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Change.Parent.Display.None",
description: "Test that nodes that have a parent changed to `display: block` are rendered.",
selector: "#parent-display-block",
async domNodeHandler(domNode) {
InspectorTest.assert(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render existing nodes that have a parent with `display: block`.");
InspectorTest.log("Changing to `display: none`...");
await Promise.all([
domNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged),
domNode.parentNode.setAttributeValue("style", "display: none"),
]);
InspectorTest.expectFalse(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render nodes that have a parent changed to `display: none`.");
},
});
addTestCase({
name: "CSS.nodeLayoutFlagsChanged.Rendered.Change.Parent.Display.Block",
description: "Test that nodes that have a parent changed to `display: none` are not rendered.",
selector: "#parent-display-none",
async domNodeHandler(domNode) {
InspectorTest.assert(!domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should not render existing nodes that have a parent with `display: none`.");
InspectorTest.log("Changing to `display: block`...");
await Promise.all([
domNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged),
domNode.parentNode.setAttributeValue("style", "display: block"),
]);
InspectorTest.expectTrue(domNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.Rendered), "Should render nodes that have a parent changed to `display: block`.");
},
});
WI.domManager.requestDocument().then((doc) => {
documentNode = doc;
suite.runTestCasesAndFinish();
});
}
</script>
</head>
<body onload="runTest()">
<p>Tests for the CSS.nodeLayoutFlagsChanged event with the Rendered enum.</p>
<div id="direct-display-none" style="display: none"></div>
<div id="direct-display-block" style="display: block"></div>
<div style="display: none"><div id="parent-display-none"></div></div>
<div style="display: block"><div id="parent-display-block"></div></div>
</body>
</html>