blob: b6011e3a56e54a920186532574f0c91dfbb8d0df [file] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<style>
*::before { box-sizing: border-box; }
#target::before { color: rgb(255, 0, 0); }
#target::after { color: rgb(0, 128, 0); }
.a::before { color: rgb(1, 2, 3); }
.b::before { color: rgb(4, 5, 6); }
.with-content::before { content: "x"; }
#parent { color: rgb(7, 8, 9); }
</style>
</head>
<body>
<div id="target">target</div>
<div id="plain">plain</div>
<div id="toggle" class="a">toggle</div>
<div id="parent"><span id="child">child</span></div>
<script>
description("getComputedStyle() returns the matched style for ::before and ::after when none of the matching rules set 'content'.");
document.body.offsetTop;
debug("Rules without 'content'");
shouldBeEqualToString("getComputedStyle(target, '::before').color", "rgb(255, 0, 0)");
shouldBeEqualToString("getComputedStyle(target, '::after').color", "rgb(0, 128, 0)");
shouldBeEqualToString("getComputedStyle(target, '::before').content", "none");
debug("");
debug("Universal rule without 'content'");
shouldBeEqualToString("getComputedStyle(target, '::before').boxSizing", "border-box");
shouldBeEqualToString("getComputedStyle(plain, '::before').boxSizing", "border-box");
shouldBeEqualToString("getComputedStyle(plain, '::after').boxSizing", "content-box");
debug("");
debug("Switching between rules without 'content'");
shouldBeEqualToString("getComputedStyle(toggle, '::before').color", "rgb(1, 2, 3)");
toggle.className = "b";
document.body.offsetTop;
shouldBeEqualToString("getComputedStyle(toggle, '::before').color", "rgb(4, 5, 6)");
toggle.className = "a";
shouldBeEqualToString("getComputedStyle(toggle, '::before').color", "rgb(1, 2, 3)");
debug("");
debug("Adding 'content' to a pseudo-element that was previously skipped");
toggle.className = "a with-content";
document.body.offsetTop;
shouldBeEqualToString("getComputedStyle(toggle, '::before').content", '"x"');
shouldBeEqualToString("getComputedStyle(toggle, '::before').color", "rgb(1, 2, 3)");
toggle.className = "b";
shouldBeEqualToString("getComputedStyle(toggle, '::before').content", "none");
shouldBeEqualToString("getComputedStyle(toggle, '::before').color", "rgb(4, 5, 6)");
debug("");
debug("Inherited values");
shouldBeEqualToString("getComputedStyle(child, '::before').color", "rgb(7, 8, 9)");
document.getElementById("parent").style.color = "rgb(10, 11, 12)";
shouldBeEqualToString("getComputedStyle(child, '::before').color", "rgb(10, 11, 12)");
</script>
</body>
</html>