<html>
<head>
<script>
if (window.testRunner) {
     testRunner.dumpAsText();
     internals.settings.setSmartInsertDeleteEnabled(false);
     internals.settings.setSelectTrailingWhitespaceEnabled(true);
     testRunner.waitUntilDone();
}

function startTest() {
     if (window.testRunner) {
          // The IFRAME has loaded with an image in it. Double click
          // in any of the space around the image in the IFRAME.
          // (The image is 76 x 103 pixels big).
          eventSender.mouseMoveTo(150, 150);
          eventSender.mouseDown();
          eventSender.mouseUp();
          eventSender.mouseDown();
          eventSender.mouseUp();

          // As long as didn't crash, we passed.
          document.body.innerHTML = "PASS";
          testRunner.notifyDone();
     }
}
</script>
</head>
<body onload="startTest()">

<iframe src="../resources/abe.png" style="width: 300px; height: 300px"></iframe>

<p>
Double-click in the white space around the image -- should not crash or access invalid memory.
<a href="https://bugs.webkit.org/show_bug.cgi?id=25335">BUG 25335</a>.
</p> 

</body>
</html>
