<html>
<script>
    function startTest() {
        if (window.testRunner) {
            testRunner.waitUntilDone();
            testRunner.setBackingScaleFactor(2, finishTest);
        }
    }
    
    function finishTest() {
        var div = document.getElementById("div");
        div.focus();
        setTimeout(function() { testRunner.notifyDone(); }, 0);
    }
    </script>
</head>
<body onload="startTest();">
    <div id="div" style="width:300px; height:150px; border:1px solid black;" tabindex=1></div>
</body>
</html>
