<html>
<head>
<script>
function init() {
   if (window.eventSender) {
      testRunner.dumpAsText();
      
      eventSender.mouseMoveTo(1,1);
      eventSender.enableDOMUIEventLogging(document);
      
      eventSender.mouseMoveTo(100,100);
      eventSender.mouseDown();
      eventSender.mouseUp();
      eventSender.keyDown("a", "");
      eventSender.keyDown("b", ["ctrlKey"]);
      eventSender.keyDown("d", ["shiftKey"]);
      eventSender.keyDown("e", ["altKey", "metaKey"]);
      
      eventSender.mouseMoveTo(400,150);
      eventSender.mouseDown();
      eventSender.mouseUp();
      
      eventSender.mouseDown();
      eventSender.mouseMoveTo(1,1);
      eventSender.mouseUp();
   }
}
</script>
</head>
<body onload="init()">
   <div id="clicktest" style="width: 300px; height: 200px; background-color: #8ad; text-align: center; padding: 50px;">Test</div>
   
   <p>This tests that DOMEvents are correctly handed to the ObjC API. See bug <a href="https://bugs.webkit.org/show_bug.cgi?id=9181">9181</a>.</p>
</body>
</html>
