<!--
Calculating collapsed borders for big tables is expensive, so we cache them and recalculate when needed.
Here we change tbody border color, expect that cache is invalidated and paint produces expected image.
-->
<html>
    <head>
        <title></title>
        <link rel="stylesheet" href="resources/cached.css">
        <script type="text/javascript">
            function test() {
                document.body.offsetTop;
                if (window.testRunner)
                    testRunner.displayAndTrackRepaints();
                document.getElementById("tbody").style.borderColor = "yellow";
            }
        </script>
    </head>
    <body onload="test()">
        <table style="border-collapse:collapse; border:1px solid blue">
            <tbody style="border:4px solid pink" id="tbody">
                <tr>
                    <td style="border:2px solid lime"/>
                    <td/>
                </tr>
                <tr>
                    <td/>
                    <td/>
                </tr>
            </tbody>
            <tbody>
                <tr>
                    <td/>
                    <td/>
                </tr>
            </tbody>
        </table>
    </body>
</html>

