blob: 50c122b9584a1cd53cf7b97d8efd1263350ed047 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<style>
.select::selection {
background-color: red;
}
.t1 .select::selection,
.t2 .select::selection:window-inactive {
background-color: green;
}
</style>
<div id="t1">
<div>
<div class="select">
1
<span></span>
<span></span>
</div>
<div></div>
</div>
</div>
<div id="t2">
<div>
<div class="select">
2
<span></span>
<span></span>
</div>
<div></div>
</div>
</div>
<script>
description("Style invalidation for ::selection");
var red = "rgb(255, 0, 0)";
var green = "rgb(0, 128, 0)";
function setSelection(textNode) {
var range = document.createRange();
range.setStart(textNode, 0);
range.setEnd(textNode, 1);
window.getSelection().addRange(range);
}
var select = document.querySelectorAll(".select");
setSelection(select[0].firstChild);
shouldBe("getComputedStyle(select[0], '::selection').backgroundColor", "red");
document.body.offsetTop; // Force recalc.
t1.className = "t1";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1");
shouldBe("getComputedStyle(select[0], '::selection').backgroundColor", "green");
shouldBeDefined(window.testRunner);
testRunner.setWindowIsKey(false);
setSelection(select[1].firstChild);
shouldBe("getComputedStyle(select[1], '::selection').backgroundColor", "red");
document.body.offsetTop; // Force recalc.
t2.className = "t2";
if (window.internals)
shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1");
shouldBe("getComputedStyle(select[1], '::selection').backgroundColor", "green");
</script>