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