blob: 84435c812dc0a168692d38e817110d09fda5b98a [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<style>
:-webkit-any(.a1) { background-color: green }
.a2 :-webkit-any(.b2) { background-color: green }
.a3 :-webkit-any(.b3, .c3) { background-color: green }
.a4 :-webkit-any(:not(.b4), .c4) { background-color: green }
:-webkit-any(.a5, .b5) ~ .c5 .d5 { background-color: green }
</style>
<div id="t1">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div id="t2">
<span></span>
<span></span>
<span></span>
<span class="b2"></span>
</div>
<div id="t3">
<span></span>
<span></span>
<span class="b3"></span>
<span class="c3"></span>
</div>
<div id="t4">
<span></span>
<span class="b4"></span>
<span class="b4"></span>
<span class="c4"></span>
</div>
<div>
<span id="t5"></span>
<span class="c5">
<span class="d5"></span>
</span>
</div>
<script>
description("Check that targeted class invalidation works with :-webkit-any selectors.");
var transparent = "rgba(0, 0, 0, 0)";
var green = "rgb(0, 128, 0)";
var t1 = document.getElementById("t1");
var b2 = document.querySelector("#t2 .b2");
var b3 = document.querySelector("#t3 .b3");
var c3 = document.querySelector("#t3 .c3");
var spans4 = document.querySelectorAll("#t4 span");
var d5 = document.querySelector("#t5 ~ .c5 .d5");
shouldBe("getComputedStyle(t1, null).backgroundColor", "transparent");
shouldBe("getComputedStyle(b2, null).backgroundColor", "transparent");
shouldBe("getComputedStyle(b3, null).backgroundColor", "transparent");
shouldBe("getComputedStyle(c3, null).backgroundColor", "transparent");
for (var i=0; i<4; i++)
shouldBe("getComputedStyle(spans4[i], null).backgroundColor", "transparent");
shouldBe("getComputedStyle(d5, null).backgroundColor", "transparent");
document.body.offsetLeft; // force style recalc.
t1.className = "a1";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1");
shouldBe("getComputedStyle(t1, null).backgroundColor", "green");
document.body.offsetLeft; // force style recalc.
document.getElementById("t2").className = "a2";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1");
shouldBe("getComputedStyle(b2, null).backgroundColor", "green");
document.body.offsetLeft; // force style recalc.
document.getElementById("t3").className = "a3";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "2");
shouldBe("getComputedStyle(b3, null).backgroundColor", "green");
shouldBe("getComputedStyle(c3, null).backgroundColor", "green");
document.body.offsetLeft; // force style recalc.
document.getElementById("t4").className = "a4";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "5");
shouldBe("getComputedStyle(spans4[0], null).backgroundColor", "green");
shouldBe("getComputedStyle(spans4[1], null).backgroundColor", "transparent");
shouldBe("getComputedStyle(spans4[2], null).backgroundColor", "transparent");
shouldBe("getComputedStyle(spans4[3], null).backgroundColor", "green");
document.body.offsetLeft; // force style recalc.
document.getElementById("t5").className = "a5";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1");
shouldBe("getComputedStyle(d5, null).backgroundColor", "green");
</script>