<html>
<style>
.container {
    background-color: blue;
    width: 200px;
    height: 600px;
    position: absolute;
}
.inert {
    background-color: yellow;
        width: 100px;
    height: 100px;
    position: relative;
}
.target {
    background-color: red;
    width: 100px;
    height: 100px;
    position: relative;
}
:focus ~ .target {
    background-color: green;
}
:focus ~ .inert > .target {
    background-color: green;
}
.child {
    width: 50px;
    height: 50px;
}
</style>
<div class=container>
    <!--Style change due to to UA style sheet.-->
    <div class=target tabindex=1 id=focusTarget>
    </div>
    <div class=target>
    </div>
    <div class=inert>
    </div>
    <div class=target>
        <div class="inert child">
        </div>
    </div>
    <div class=inert>
        <div class="target child">
        </div>
    </div>
</div>
<pre id=log></pre>

<script>
function testStyleChangeType(selector, expectedType)
{
    let pass = true;
    const elements = document.querySelectorAll(selector);
    for (var i = 0; i < elements.length; ++i) {
        const type = window.internals.styleChangeType(elements[i]);
        if (type != expectedType) {
            log.textContent += `FAIL ${selector} styleChangeType was ${type} expected ${expectedType}\n`;
            pass = false;
        }
    }
    if (pass)
        log.textContent += "PASS\n";
}

window.onload = function () {
    if (!window.testRunner)
        return;
    testRunner.dumpAsText();

    document.body.offsetLeft;
    focusTarget.focus();

    testStyleChangeType(".target", "InlineStyleChange");
    testStyleChangeType(".container", "NoStyleChange");
    testStyleChangeType(".inert", "NoStyleChange");

    document.body.offsetLeft;
    focusTarget.blur();

    testStyleChangeType(".target", "InlineStyleChange");
    testStyleChangeType(".container", "NoStyleChange");
    testStyleChangeType(".inert", "NoStyleChange");
};
</script>
