<html>
<style>
.test {
    width: 200px;
    height: 200px;
    position: relative;
}
.box {
    width: 100px;
    height: 100px;
    background: green;
    position: absolute;
}
.none {
    touch-action:none;
}

.red {
    background: red;
}
</style>
<script>
window.onload = function () {
    if (window.testRunner)
        testRunner.dumpAsText();

    results.innerText = "before\n";

    if (window.internals)
        results.innerText += internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_EVENT_REGION | internals.LAYER_TREE_INCLUDES_ROOT_LAYER_PROPERTIES);

    results.innerText += "mutation 1\n";
    document.body.offsetLeft;
    mutation1.classList.add("none");

    if (window.internals)
        results.innerText += internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_EVENT_REGION | internals.LAYER_TREE_INCLUDES_ROOT_LAYER_PROPERTIES);

    results.innerText += "mutation 2\n";
    document.body.offsetLeft;
    mutation2.setAttribute("style", "top:50px;left:50px;")

    if (window.internals)
        results.innerText += internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_EVENT_REGION | internals.LAYER_TREE_INCLUDES_ROOT_LAYER_PROPERTIES);
}
</script>
<body>
<div class="test">
    <div id="mutation1" class="box red"></div>
</div>
<div class="test">
    <div class="box red none"></div>
    <div id="mutation2" class="box" style="top:-25px;left:-25px;"></div>
</div>
<pre id="results"></pre>
</body>
</html>
