<head>
    <meta name="viewport" content="width=device-width">
    <title>This tests that an element clips its backdrop according to the border-radius property and correctly updates the clipping when the border-radius property changes to 0.</title>
    <style>

    svg {
        position: absolute;
        top: 0px;
        left: 0px;
        width: 200px;
        height: 200px;
        background-color: lightgray;
    }

    .backdrop {
        position: absolute;
        top: 20px;
        left: 20px;
        width: 160px;
        height: 160px;
        background-color: rgba(255, 255, 255, 0.5);
        border-radius: 20px;
        -webkit-backdrop-filter: invert(100%);
    }

    .changed {
        border-radius: 0;
    }

    </style>
</head>
<svg viewbox="0 0 2 2">
    <rect fill="black" x="0" y="0" width="1" height="1"></rect>
    <rect fill="black" x="1" y="1" width="1" height="1"></rect>
</svg>
<div class="backdrop"></div>
<script type="text/javascript">
    
    if (window.testRunner)
        testRunner.waitUntilDone();

    window.requestAnimationFrame(function() {
        document.querySelector(".backdrop").classList.add("changed");
        if (window.testRunner)
            testRunner.notifyDone();
    });
    
</script>