--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/WebCore/manual-tests/arrow-key-events.html Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,93 @@
+<body>
+<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=3387">bug 3387</a>:
+Redundant keydown, keypress, keyup events sent for arrow keys.</p>
+
+<p>Try pressing arrow keys, PgUp/PgDown/Home/End, Esc, or function keys.
+The test passes if the box below doesn't turn red.<p>
+
+<div id="result" style="width:100px; height:100px; background-color:blue;"></div>
+
+<script>
+
+ var console_messages = document.createElement("ol");
+ document.body.appendChild(console_messages);
+
+ window.onkeydown = registerWindow;
+ window.onkeypress = registerWindow;
+ window.onkeyup = registerWindow;
+
+ document.onkeydown = registerDocument;
+ document.onkeypress = registerDocument;
+ document.onkeyup = registerDocument;
+
+ document.body.onkeydown = registerBody;
+ document.body.onkeypress = registerBody;
+ document.body.onkeyup = registerBody;
+
+ document.documentElement.onkeydown = registerDocumentElement;
+ document.documentElement.onkeypress = registerDocumentElement;
+ document.documentElement.onkeyup = registerDocumentElement;
+
+ var bodyKeyDownCount = 0;
+ var documentElementKeyDownCount = 0;
+ var windowKeyDownCount = 0;
+ var documentKeyDownCount = 0;
+
+ function log(message)
+ {
+ var item = document.createElement("li");
+ item.appendChild(document.createTextNode(message));
+ item.style.fontSize = '8px';
+ console_messages.appendChild(item);
+ }
+
+ function registerBody(e)
+ {
+ if ((e.type == "keydown" && ++bodyKeyDownCount != 1)
+ || (e.type == "keyup" && --bodyKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log("body: " + e.type);
+ return true;
+ }
+
+ function registerDocumentElement(e)
+ {
+ if ((e.type == "keydown" && ++documentElementKeyDownCount != 1)
+ || (e.type == "keyup" && --documentElementKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log(" documentElement: " + e.type);
+ return true;
+ }
+
+ function registerDocument(e)
+ {
+ if ((e.type == "keydown" && ++documentKeyDownCount != 1)
+ || (e.type == "keyup" && --documentKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log(" document: " + e.type);
+ return true;
+ }
+
+ function registerWindow(e)
+ {
+ if ((e.type == "keydown" && ++windowKeyDownCount != 1)
+ || (e.type == "keyup" && --windowKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log(" window: " + e.type);
+ return true;
+ }
+
+</script>
+</body>