<html>
<head>
    <title>Test for http://bugs.webkit.org/show_bug.cgi?id=15994</title>
    <style type="text/css">
        div {
            overflow: hidden;
        }
        div, span {
            height: 100px;
            width: 100px;
            display: block;
        }
        span.blue {
            padding: 100px 0 0 0;
            background: blue;
        }
    </style>
    <script type="text/javascript">
        if (window.testRunner)
            testRunner.waitUntilDone();
        function runTest()
        {
            document.getElementById('t1').removeAttribute("class");
            document.getElementById('t2').setAttribute("class", "blue");
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</head>
<body onload="setTimeout(runTest, 0)">
    <div style="background: green;"><span id="t1" class="blue">&nbsp;</span></div>
    <div style="position: relative; margin: -100px 0 0 100px; background: red;"><span id="t2">&nbsp;</span></div>
</body>
</html>
