blob: fbf0f421234d297bc82c3869945da38008e37302 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style>
target { display:block; background-color: rgb(1, 2, 3); }
target:first-child { }
target:last-child { }
</style>
</head>
<body>
<div style="display:none">
<target id=target1></target>
<target id=target2></target>
<target id=target3></target>
<target id=target4></target>
</div>
<script>
function findRuleWithSelector(selector)
{
var styleSheets = document.styleSheets;
for (var styleSheetIndex = 0, styleSheetCount = styleSheets.length; styleSheetIndex < styleSheetCount; ++styleSheetIndex) {
var styleSheet = styleSheets[styleSheetIndex];
var rules = styleSheet.cssRules;
for (var ruleIndex = 0, ruleCount = rules.length; ruleIndex < ruleCount; ++ruleIndex) {
var rule = rules[ruleIndex];
if (rule.selectorText === selector)
return rule;
}
}
}
description("Test that changing an empty rule with CSSOM updates the elements correctly.");
debug('Before changing the rules');
shouldBe('window.getComputedStyle(document.getElementById("target1")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target2")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target3")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target4")).backgroundColor','"rgb(1, 2, 3)"');
debug('Changing the first-child rule');
findRuleWithSelector('target:first-child').style.backgroundColor = 'rgb(4, 5, 6)';
shouldBe('window.getComputedStyle(document.getElementById("target1")).backgroundColor','"rgb(4, 5, 6)"');
shouldBe('window.getComputedStyle(document.getElementById("target2")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target3")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target4")).backgroundColor','"rgb(1, 2, 3)"');
debug('Changing the last-child rule');
findRuleWithSelector('target:last-child').style.backgroundColor = 'rgb(7, 8, 9)';
shouldBe('window.getComputedStyle(document.getElementById("target1")).backgroundColor','"rgb(4, 5, 6)"');
shouldBe('window.getComputedStyle(document.getElementById("target2")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target3")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target4")).backgroundColor','"rgb(7, 8, 9)"');
debug('Emptying the first-child rule');
findRuleWithSelector('target:first-child').style.backgroundColor = '';
shouldBe('window.getComputedStyle(document.getElementById("target1")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target2")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target3")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target4")).backgroundColor','"rgb(7, 8, 9)"');
debug('Emptying the last-child rule');
findRuleWithSelector('target:last-child').style.backgroundColor = '';
shouldBe('window.getComputedStyle(document.getElementById("target1")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target2")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target3")).backgroundColor','"rgb(1, 2, 3)"');
shouldBe('window.getComputedStyle(document.getElementById("target4")).backgroundColor','"rgb(1, 2, 3)"');
</script>
<script src="../../resources/js-test-post.js"></script>
</body>