| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> | |
| <script> | |
| customElements.define("test-element", class TestElement extends HTMLElement { | |
| connectedCallback() { | |
| let shadowRoot = this.attachShadow({ | |
| mode: "open", | |
| slotAssignment: this.id.substring(0, this.id.indexOf("-")), | |
| }); | |
| this._slotElement = shadowRoot.appendChild(document.createElement("slot")); | |
| this._slotElement.name = "test-slot"; | |
| } | |
| assign(...nodes) { | |
| this._slotElement.assign(...nodes); | |
| } | |
| }); | |
| function test() | |
| { | |
| let suite = InspectorTest.createAsyncSuite("CSS.nodeLayoutFlagsChanged.SlotAssigned"); | |
| function addTestCase({name, selector, domNodeHandler}) | |
| { | |
| suite.addTestCase({ | |
| name, | |
| async test() { | |
| let documentNode = await WI.domManager.requestDocument(); | |
| let childNodeId = await documentNode.querySelector(selector + "-child"); | |
| let childNode = WI.domManager.nodeForId(childNodeId); | |
| InspectorTest.assert(childNode, `Should find DOM Node for selector '${selector}-child'.`); | |
| await domNodeHandler(childNode); | |
| }, | |
| }); | |
| } | |
| addTestCase({ | |
| name: "CSS.nodeLayoutFlagsChanged.SlotAssigned.Named.Empty", | |
| selector: "#named-empty", | |
| async domNodeHandler(childNode) { | |
| InspectorTest.expectFalse(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should not be slotted."); | |
| InspectorTest.log("Adding slot..."); | |
| await Promise.all([ | |
| childNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged), | |
| InspectorTest.evaluateInPage(`document.querySelector("#named-empty-child").slot = "test-slot"`), | |
| ]); | |
| InspectorTest.expectTrue(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should be slotted."); | |
| }, | |
| }); | |
| addTestCase({ | |
| name: "CSS.nodeLayoutFlagsChanged.SlotAssigned.Named.Filled", | |
| selector: "#named-filled", | |
| async domNodeHandler(childNode) { | |
| InspectorTest.expectTrue(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should be slotted."); | |
| InspectorTest.log("Removing slot..."); | |
| await Promise.all([ | |
| childNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged), | |
| InspectorTest.evaluateInPage(`document.querySelector("#named-filled-child").slot = "invalid-slot"`), | |
| ]); | |
| InspectorTest.expectFalse(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should not be slotted."); | |
| }, | |
| }); | |
| addTestCase({ | |
| name: "CSS.nodeLayoutFlagsChanged.SlotAssigned.Manual.Empty", | |
| selector: "#manual-empty", | |
| async domNodeHandler(childNode) { | |
| InspectorTest.expectFalse(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should not be slotted."); | |
| InspectorTest.log("Adding assigned node..."); | |
| await Promise.all([ | |
| childNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged), | |
| InspectorTest.evaluateInPage(`document.querySelector("#manual-empty").assign(document.querySelector("#manual-empty-child"))`), | |
| ]); | |
| InspectorTest.expectTrue(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should be slotted."); | |
| }, | |
| }); | |
| addTestCase({ | |
| name: "CSS.nodeLayoutFlagsChanged.SlotAssigned.Manual.Filled", | |
| selector: "#manual-filled", | |
| async domNodeHandler(childNode) { | |
| InspectorTest.expectTrue(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should be slotted."); | |
| InspectorTest.log("Removing assigned node..."); | |
| await Promise.all([ | |
| childNode.awaitEvent(WI.DOMNode.Event.LayoutFlagsChanged), | |
| InspectorTest.evaluateInPage(`document.querySelector("#manual-filled").assign()`), | |
| ]); | |
| InspectorTest.expectFalse(childNode.layoutFlags.includes(WI.DOMNode.LayoutFlag.SlotAssigned), "Should not be slotted."); | |
| }, | |
| }); | |
| suite.runTestCasesAndFinish(); | |
| } | |
| </script> | |
| </head> | |
| <body onload="runTest()"> | |
| <test-element id="named-empty"> | |
| <span slot="invalid-slot" id="named-empty-child"></span> | |
| </test-element> | |
| <test-element id="named-filled"> | |
| <span slot="test-slot" id="named-filled-child"></span> | |
| </test-element> | |
| <test-element id="manual-empty"> | |
| <span slot="test-slot" id="manual-empty-child"></span> | |
| </test-element> | |
| <test-element id="manual-filled"> | |
| <span slot="invalid-slot" id="manual-filled-child"></span> | |
| </test-element> | |
| <script> | |
| document.querySelector("#manual-filled").assign(document.querySelector("#manual-filled-child")); | |
| </script> | |
| </body> | |
| </html> |