<html>
    <script>
        function startTest() {
            if (window.testRunner) {
                testRunner.waitUntilDone();
                testRunner.setBackingScaleFactor(3, finishTest);
            }
        }
        
        function finishTest() {
            setTimeout(function() { testRunner.notifyDone(); }, 0);
        }
        </script>
    </head>
    <body onload="startTest();">
        <div>This test passes if the broken image icon appears high-resolution in HiDPI and if the outline is of the appropriate size.</div>
        <img src="not-there.png"></img>
    </body>
</html>
