blob: ea20920fa52b5b717ad7b2699879bd3a5ce62941 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function createTestNode(id) {
let node = document.body.appendChild(document.createElement("div"));
node.id = id;
node.setAttributeNS("http://example.com", "attribute:existing", 42);
}
function test() {
let documentNode = null;
let suite = InspectorTest.createAsyncSuite("DOM.attributeModified");
suite.addTestCase({
name: "DOM.attributeModified.WithNamespace",
description: "Check that the attributeModified event sends the full attribute name, including the namespace.",
async test() {
const id = "with-namespace";
InspectorTest.log("Creating test node...");
await InspectorTest.evaluateInPage(`createTestNode("${id}")`);
let testNodeId = await documentNode.querySelector("#" + id);
let testNode = WI.domManager.nodeForId(testNodeId);
InspectorTest.assert(testNode, "Missing test node for id " + testNodeId);
function logAttributes() {
let attributes = {};
for (let attribute of testNode.attributes())
attributes[attribute.name] = attribute.value;
InspectorTest.json(attributes);
InspectorTest.log("");
}
logAttributes();
InspectorTest.log("Adding attribute with namespace...");
await Promise.all([
testNode.awaitEvent(WI.DOMNode.Event.AttributeModified),
InspectorTest.evaluateInPage(`document.getElementById("${id}").setAttributeNS("http://example.com", "attribute:new", 1)`)
]);
logAttributes();
InspectorTest.log("Replacing attribute with namespace...");
await Promise.all([
testNode.awaitEvent(WI.DOMNode.Event.AttributeModified),
InspectorTest.evaluateInPage(`document.getElementById("${id}").setAttributeNS("http://example.com", "attribute:new", 2)`)
]);
logAttributes();
InspectorTest.log("Replacing attribute without namespace...");
await Promise.all([
testNode.awaitEvent(WI.DOMNode.Event.AttributeModified),
InspectorTest.evaluateInPage(`document.getElementById("${id}").setAttribute("attribute:new", "3")`)
]);
logAttributes();
},
});
WI.domManager.requestDocument((root) => {
documentNode = root;
suite.runTestCasesAndFinish();
});
}
</script>
</head>
<body onload="runTest()">
<p>Tests for the DOM.attributeModified event.</p>
</body>
</html>