| <!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> |