blob: 1911ee72ee58b52a703023dc6374c6ad7871eb20 [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>
function setAttribute(name, value)
{
var node = document.getElementById("node");
node.setAttribute(name, value);
}
function removeAttribute(name)
{
var node = document.getElementById("node");
node.removeAttribute(name);
}
function test()
{
var targetNode;
InspectorTest.runTestSuite([
function testDumpInitial(next)
{
function callback(node)
{
targetNode = node;
InspectorTest.addResult("========= Original ========");
InspectorTest.dumpElementsTree(targetNode);
next();
}
InspectorTest.selectNodeWithId("node", callback);
},
function testAttributeUpdated(next)
{
function callback()
{
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
InspectorTest.addResult("===== On attribute set =====");
InspectorTest.dumpElementsTree(targetNode);
next();
}
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
InspectorTest.evaluateInPage("setAttribute('name', 'value')");
},
function testAttributeSameValueNotUpdated(next)
{
function callback()
{
InspectorTest.addResult("===== On attribute modified (should be 'newValue') =====");
InspectorTest.dumpElementsTree(targetNode);
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
next();
}
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
// Setting the same property value should not result in the AttrModified event.
InspectorTest.evaluateInPage("setAttribute('name', 'value')");
InspectorTest.evaluateInPage("setAttribute('name', 'value')");
InspectorTest.evaluateInPage("setAttribute('name', 'newValue')");
},
function testAttributeRemoved(next)
{
function callback()
{
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrRemoved, callback);
InspectorTest.addResult("=== On attribute removed ===");
InspectorTest.dumpElementsTree(targetNode);
next();
}
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrRemoved, callback);
InspectorTest.evaluateInPage("removeAttribute('name')");
},
function testSetAttributeValue(next)
{
function callback()
{
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
InspectorTest.addResult("=== Set attribute value ===");
InspectorTest.dumpElementsTree(targetNode);
next();
}
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
targetNode.setAttributeValue("foo", "bar");
},
function testSetAttributeText(next)
{
function callback()
{
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrRemoved, callback);
InspectorTest.addResult("=== Set attribute as text ===");
InspectorTest.dumpElementsTree(targetNode);
next();
}
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrRemoved, callback);
targetNode.setAttribute("foo", "foo2='baz2' foo3='baz3'");
},
function testRemoveAttributeAsText(next)
{
function callback()
{
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrRemoved, callback);
InspectorTest.addResult("=== Remove attribute as text ===");
InspectorTest.dumpElementsTree(targetNode);
next();
}
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrRemoved, callback);
targetNode.setAttribute("foo3", "");
},
function testSetMalformedAttributeText(next)
{
function callback(error)
{
InspectorTest.addResult("Error: " + error);
WebInspector.domAgent.removeEventListener(WebInspector.DOMAgent.Events.AttrModified, callback);
InspectorTest.addResult("=== Set malformed attribute as text ===");
InspectorTest.dumpElementsTree(targetNode);
next();
}
targetNode.setAttribute("foo2", "foo2='missingquote", callback);
}
]);
}
</script>
</head>
<body onload="runTest()">
<p>
Tests that elements panel updates dom tree structure upon setting attribute.
</p>
<div id="node"></div>
</body>
</html>