blob: 98f5342feac1f63d19bde2af2add20c2c381e449 [file] [log] [blame]
<html>
<head>
<style>
.red div:first-child {
background-color: red;
}
div[foo="bar"] + div {
background-color: blue;
}
</style>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>
function modifyStyleAttribute()
{
document.getElementById("container").setAttribute("style", "color: #daC0DE; border: 1px solid black;");
}
function modifyCSSText()
{
document.getElementById("container").style.cssText = "color: #C0FFEE";
}
function modifyParsedAttributes()
{
var style = document.getElementById("container").style;
style.border = "2px dashed green";
style.borderWidth = "3px";
}
function modifyContainerClass()
{
document.getElementById("container").className = "red";
}
function modifyChildAttr()
{
document.getElementById("child").setAttribute("foo", "bar");
}
function test()
{
InspectorTest.runTestSuite([
function testInit(next)
{
InspectorTest.selectNodeAndWaitForStyles("container", next);
},
function testSetStyleAttribute(next)
{
waitAndDumpAttributeAndStyles(next);
InspectorTest.evaluateInPage("modifyStyleAttribute()");
},
function testSetStyleCSSText(next)
{
waitAndDumpAttributeAndStyles(next);
InspectorTest.evaluateInPage("modifyCSSText()");
},
function testSetViaParsedAttributes(next)
{
waitAndDumpAttributeAndStyles(next);
InspectorTest.evaluateInPage("modifyParsedAttributes()");
},
function testSetViaAncestorClass(next)
{
InspectorTest.selectNodeAndWaitForStyles("child", callback);
function callback()
{
waitAndDumpAttributeAndStyles(next, "child");
InspectorTest.evaluateInPage("modifyContainerClass()");
}
},
function testSetViaSiblingAttr(next)
{
InspectorTest.selectNodeAndWaitForStyles("childSibling", callback);
function callback()
{
waitAndDumpAttributeAndStyles(next, "childSibling");
InspectorTest.evaluateInPage("modifyChildAttr()");
}
}
]);
function waitAndDumpAttributeAndStyles(next, id)
{
id = id || "container";
function callback()
{
dumpAttributeAndStyles(id);
next();
}
InspectorTest.waitForStyles(id, callback);
}
function dumpAttributeAndStyles(id)
{
var treeElement = findNodeTreeElement(id);
if (!treeElement) {
InspectorTest.addResult("'" + id + "' tree element not found");
return;
}
InspectorTest.addResult(treeElement.listItemElement.textContent.replace(/\u200b/g, ""));
InspectorTest.dumpSelectedElementStyles(true);
}
function findNodeTreeElement(id)
{
WebInspector.panels.elements.treeOutline._updateModifiedNodes();
var expandedNode = InspectorTest.expandedNodeWithId(id);
if (!expandedNode) {
InspectorTest.addResult("'" + id + "' node not found");
InspectorTest.completeTest();
}
return WebInspector.panels.elements.treeOutline.findTreeElement(expandedNode);
}
}
</script>
</head>
<body onload="runTest()">
<p>
Tests that changes to an inline style and ancestor/sibling className from JavaScript are reflected in the Styles pane and Elements tree.
</p>
<div id="container" style="font-weight:bold"><div id="child"></div><div id="childSibling"></div></div>
</body>
</html>