<!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.displayAndTrackRepaints();

            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>
                <div id="ucp" class="green"></div>
            </div>
        </section>
    </div>
</body>
</html>
