<!DOCTYPE HTML>
<head>
    <!-- This test will check if the isolation flag is properly computed when we remove a subtree having blending elements and the root of this subtree creates a stacking context. -->
    <link rel="stylesheet" href="resources/blending-style.css">
    <style>
        div {
            /* This forces render layers, avoiding normal flow only issues */
            position: relative;
         }
        .leaf {
            background-color: #ff00ff;
            left:-25px;
        }
        #toremove {
            background-color: #ffff44;
        }
    </style>
</head>
<body>
    <div class="isolating lime box">
        <div class="yellow box" style="left: 50px;">
            <div id="toremove" class="isolating box">
                <div class="leaf box difference"></div>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        if (window.testRunner)
            window.testRunner.waitUntilDone();

        function change() {
            var toremove = document.getElementById("toremove");
            toremove.parentNode.removeChild(toremove);

            if (window.testRunner)
                window.testRunner.notifyDone();
        }

        window.setTimeout("change()", 10);
    </script>
</body>
