blob: 10b47ab6737bd00b8941d9994c5fb29b208a2f4f [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<style>
#sibling, #child { background-color: green }
custom-one:not(:defined) #child,
custom-two:not(:defined) + #sibling {
background-color: red
}
</style>
<custom-one>
<div></div>
<div id="child"></div>
</custom-one>
<custom-two>
<div></div>
<div></div>
</custom-two>
<div id="sibling"></div>
<script>
const RED = "rgb(255, 0, 0)";
const GREEN = "rgb(0, 128, 0)";
test(() => {
// Initially :not(:defined).
assert_equals(getComputedStyle(child).backgroundColor, RED);
assert_equals(getComputedStyle(sibling).backgroundColor, RED);
document.body.offsetTop; // force recalc
customElements.define("custom-one", class extends HTMLElement {});
if (window.internals)
assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 1);
assert_equals(getComputedStyle(child).backgroundColor, GREEN);
document.body.offsetTop; // force recalc
customElements.define("custom-two", class extends HTMLElement {});
if (window.internals)
assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 1);
assert_equals(getComputedStyle(sibling).backgroundColor, GREEN);
}, "Use invalidation sets for :defined pseudo class.")
</script>