<html> 
<head> 
<script type="text/javascript"> 
function test() {
    if (window.testRunner)
        testRunner.dumpAsText();

    var element = document.documentElement;
    var showAlert = function() {
        alert('Click OK button.');
    };
 
    if (element.addEventListener)
        element.addEventListener('dragenter', showAlert, false);
    else
        element.attachEvent('ondragenter', showAlert);
}
</script> 
 
</head>
<body onload="test()">
    <p>Do the following and see if Webkit crashes.</p>
    <ul>
      <li>Drag the image</li> 
      <li>Click the OK button on the alert box</li> 
    </ul>
    <img id="dragimage" src="resources/drag-image.png" width="32px" height="32px"> 
</body>
</html> 
