<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="resources/default.css">
    <style>
        #outer {
            position: relative;
            overflow: hidden;
            height: 200px;
        }

        section {
            padding: 192px 0 0 0;
            width: 200px;
        }

        div {
            height: 190px;
        }

        .innerWrapper {
            overflow: hidden;
        }

        .red {
            background-color: red;
        }

        .green {
            background-color: green;
        }
    </style>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText(true);
            testRunner.waitUntilDone();
        }

        function repaintTest()
        {
            window.location.hash = "#ucp";
            if (window.testRunner)
                testRunner.notifyDone();
        }

        function runRepaintTest()
        {
            document.getElementById("outer").scrollTop = 1000;

            if (window.testRunner)
                testRunner.display();

            setTimeout(repaintTest, 0);
        }
        window.addEventListener("load", runRepaintTest, false);
    </script>
</head>
<body>
    <!-- Bug 71550 - REGRESSION (r93614): Content remains despite parent element being scrolled off page using javascript. -->
    <!-- For the test to pass you should not see any RED, only green -->
    <div id="outer">
        <section>
            <div class="innerWrapper">
                <div class="red"></div>
                <table id="ucp" class="green"><td style="height: 190px"></td></table>
            </div>
        </section>
    </div>
</body>
</html>
