<!DOCTYPE html>
<script src="../../../resources/js-test.js"></script>
<style>
/* Rule to set childrenAffectedByDirectAdjacentRules() on #parent */
div + #x { color: orange }

/* Rule to cause subtree recalc on #c1 when className set to c1. */
.c1 * { background-color: green }

/* Rule to cause subtree recalc on div sibling of #c2 when className set to c2. */
.c2 + div * { background-color: green }

</style>
<div id="parent">
    <div id="c1">
        <span>This text should be green</span>
        <span>This text should be green</span>
    </div>
    <div>
        <span></span>
        <span></span>
    </div>
    <div id="c2">
        <span></span>
        <span></span>
    </div>
    <div>
        <span>This text should be green</span>
        <span>This text should be green</span>
    </div>
    <div>
        <span></span>
        <span></span>
    </div>
    <div id="x"></div>
</div>
<script>
description("A subtree invalidation should not invalidation sibling forest");

var transparent = "rgba(0, 0, 0, 0)";
var green = "rgb(0, 128, 0)";

var c1Spans = c1.querySelectorAll("span");
shouldBe("getComputedStyle(c1Spans[0]).backgroundColor", "transparent");
shouldBe("getComputedStyle(c1Spans[1]).backgroundColor", "transparent");

var c2Spans = document.querySelectorAll("#c2 + div span");
shouldBe("getComputedStyle(c2Spans[0]).backgroundColor", "transparent");
shouldBe("getComputedStyle(c2Spans[1]).backgroundColor", "transparent");

document.body.offsetTop; // force recalc

c1.className = "c1";

if (window.internals)
    shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "3");
shouldBe("getComputedStyle(c1Spans[0]).backgroundColor", "green");
shouldBe("getComputedStyle(c1Spans[1]).backgroundColor", "green");

document.body.offsetTop; // force recalc

c2.className = "c2";

if (window.internals)
    shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "3");
shouldBe("getComputedStyle(c2Spans[0]).backgroundColor", "green");
shouldBe("getComputedStyle(c2Spans[1]).backgroundColor", "green");

</script>
