<html>
<head>
<script>
if (window.testRunner)
     testRunner.dumpEditingCallbacks();
</script>

<script>

function runTest() {
    if (window.testRunner) {
        window.testRunner.setWindowIsKey(false);
        window.testRunner.setMainFrameIsFirstResponder(false);
    }
    var s = window.getSelection();
    var e = document.getElementById("selectme");
    
    s.setBaseAndExtent(e, 0, e, 1);
}

</script>

<title>Selection tint when WebView is not focused</title> 
</head>
<body>
<p>This tests that the selection tint is grey when the WebView is not focused (using the pixel output from DumpRenderTree).</p>

<div id="selectme">This text should be selected.</div>

<script>runTest();</script>
</body>
</html>
