<!DOCTYPE html>
<html>
<head>
<style>

body {
    margin: 0;
}

.progress {
    position:fixed;
    box-shadow:0 0 10px rgba(119,182,255,0.7);
}

#div1 {
background-color:#269;
background-image:linear-gradient(white 4px, transparent 4px),
                 linear-gradient(90deg, white 4px, transparent 4px);
background-size:200px 150px, 200px 150px;
background-position:-4px -4px, -4px -4px;
height: 52800px;
width: 100%;
}

.shadow {
    box-shadow: inset 0 1px 2px rgba(27,31,35,0.075),0 0 0 0.2em rgba(3,102,214,0.3);
}

</style>
<script>

function scaleFactorIsSet()
{
    window.scrollTo(0,52500);

    setTimeout(function () {
        window.scrollTo(0,0);
        if (window.testRunner)
            setTimeout(function () { testRunner.notifyDone();}, 0);
    }, 1);
}

function doTest()
{
    if (window.testRunner) {
        testRunner.waitUntilDone();
        testRunner.setBackingScaleFactor(2, scaleFactorIsSet);
    }
}
</script>
</head>
<body onload="doTest()">
<div class="progress"></div>
<div id="div1"></div>
<div class="shadow"></div>
</div>
</body>
</html>
