blob: c021286bd1252ec8de32c354c8ef9d340a0da1e6 [file] [log] [blame]
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<container>
<subcontainer>
<target>Text</target>
</subcontainer>
</container>
<script>
var target = document.querySelector("target");
var container = document.querySelector("container");
var subcontainer = document.querySelector("subcontainer");
test(() => {
target.offsetLeft;
internals.startTrackingStyleRecalcs();
assert_equals(getComputedStyle(target).backgroundColor, "rgba(0, 0, 0, 0)", "getComputedStyle color is correct");
assert_equals(internals.styleRecalcCount(), 0, "getComputedStyle didn't trigger style resolution");
}, "No style resolution when style is valid.");
test(() => {
target.offsetLeft;
internals.startTrackingStyleRecalcs();
container.style.backgroundColor = "blue";
assert_equals(getComputedStyle(target).backgroundColor, "rgba(0, 0, 0, 0)", "getComputedStyle color is correct");
assert_equals(internals.styleRecalcCount(), 0, "getComputedStyle didn't trigger style resolution");
}, "No style resolution when parent style is invalid and querying non-inherited property.");
test(() => {
target.style.backgroundColor = "inherit";
target.offsetLeft;
internals.startTrackingStyleRecalcs();
container.style.backgroundColor = "red";
assert_equals(getComputedStyle(target).backgroundColor, "rgba(0, 0, 0, 0)", "getComputedStyle color is correct");
assert_equals(internals.styleRecalcCount(), 0, "getComputedStyle didn't trigger style resolution");
}, "This still works with 'inherit'");
test(() => {
target.style.backgroundColor = "inherit";
subcontainer.style.backgroundColor = "inherit";
target.offsetLeft;
internals.startTrackingStyleRecalcs();
container.style.backgroundColor = "green";
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 128, 0)", "getComputedStyle color is correct");
assert_equals(internals.styleRecalcCount(), 1, "getComputedStyle did trigger style resolution");
}, "Explicit 'inherit' chain triggers style resolution");
</script>