blob: 694cfb2a0eecd87e719bdd947db0804ee1de1e82 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<style>
.a1 .b1::before { background-color: green; content: "X" }
.a2 .b2::after { background-color: green; content: "X" }
.a3 .b3::first-line { background-color: green }
.a4 .b4::first-letter { background-color: green }
/* workaround for issue 351322 */
.b3::first-line { background-color: transparent }
</style>
<div id="t1">
<div class="b1" id="r1"> &lt; Background of 'X' should be green</div>
<span></span><span></span><span></span><span></span><span></span><span></span>
</div>
<div id="t2">
<div class="b2" id="r2">Background of 'X' should be green &gt; </div>
<span></span><span></span><span></span><span></span><span></span><span></span>
</div>
<div id="t3">
<div class="b3" id="r3">Background should be green</div>
<span></span><span></span><span></span><span></span><span></span><span></span>
</div>
<div id="t4">
<div class="b4" id="r4">Background of first letter should be green</div>
<span></span><span></span><span></span><span></span><span></span><span></span>
</div>
<script>
description("Change classes affecting pseudo elements")
function forceLayout() {
document.body.offsetLeft;
}
document.body.offsetTop; // force style recalc.
var transparent = 'rgba(0, 0, 0, 0)';
var green = 'rgb(0, 128, 0)';
var t1 = document.getElementById("t1");
var r1 = document.getElementById("r1");
shouldBe("getComputedStyle(r1, '::before').backgroundColor", "transparent");
forceLayout();
t1.className = "a1";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "2");
shouldBe("getComputedStyle(r1, '::before').backgroundColor", "green");
var t2 = document.getElementById("t2");
var r2 = document.getElementById("r2");
shouldBe("getComputedStyle(r2, '::after').backgroundColor", "transparent");
forceLayout();
t2.className = "a2";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "2");
shouldBe("getComputedStyle(r2, '::after').backgroundColor", "green");
var t3 = document.getElementById("t3");
var r3 = document.getElementById("r3");
shouldBe("getComputedStyle(r3, '::first-line').backgroundColor", "transparent");
forceLayout();
t3.className = "a3";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "9");
shouldBe("getComputedStyle(r3, '::first-line').backgroundColor", "green");
var t4 = document.getElementById("t4");
var r4 = document.getElementById("r4");
shouldBe("getComputedStyle(r4, '::first-letter').backgroundColor", "transparent");
forceLayout();
t4.className = "a4";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "9");
shouldBe("getComputedStyle(r4, '::first-letter').backgroundColor", "green");
</script>