Need a way to include WebKitAdditions code in WebKit API headers
[WebKit-https.git] / ManualTests / arrow-key-events.html
1 <body>
2 <p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=3387">bug 3387</a>:
3 Redundant keydown, keypress, keyup events sent for arrow keys.</p>
4
5 <p>Try pressing arrow keys, PgUp/PgDown/Home/End, Esc, or function keys. 
6 The test passes if the box below doesn't turn red.<p>
7
8 <div id="result" style="width:100px; height:100px; background-color:blue;"></div>
9
10 <script>
11
12     var console_messages = document.createElement("ol");
13     document.body.appendChild(console_messages);
14     
15     window.onkeydown = registerWindow;
16     window.onkeypress = registerWindow;
17     window.onkeyup = registerWindow;
18
19     document.onkeydown = registerDocument;
20     document.onkeypress = registerDocument;
21     document.onkeyup = registerDocument;
22
23     document.body.onkeydown = registerBody;
24     document.body.onkeypress = registerBody;
25     document.body.onkeyup = registerBody;
26
27     document.documentElement.onkeydown = registerDocumentElement;
28     document.documentElement.onkeypress = registerDocumentElement;
29     document.documentElement.onkeyup = registerDocumentElement;
30
31     var bodyKeyDownCount = 0;
32     var documentElementKeyDownCount = 0;
33     var windowKeyDownCount = 0;
34     var documentKeyDownCount = 0;
35
36     function log(message)
37     {
38         var item = document.createElement("li");
39         item.appendChild(document.createTextNode(message));
40         item.style.fontSize = '8px';
41         console_messages.appendChild(item);
42     }
43
44     function registerBody(e)
45     {
46         if ((e.type == "keydown" && ++bodyKeyDownCount != 1)
47                 || (e.type == "keyup" && --bodyKeyDownCount != 0))
48             document.getElementById("result").style.backgroundColor = "red";
49
50         if (!e)
51             e = window.event;
52         log("body: " + e.type);
53         return true;
54     }
55
56     function registerDocumentElement(e)
57     {
58         if ((e.type == "keydown" && ++documentElementKeyDownCount != 1)
59                 || (e.type == "keyup" && --documentElementKeyDownCount != 0))
60             document.getElementById("result").style.backgroundColor = "red";
61
62         if (!e)
63             e = window.event;
64         log(" documentElement: " + e.type);
65         return true;
66     }
67
68     function registerDocument(e)
69     {
70         if ((e.type == "keydown" && ++documentKeyDownCount != 1)
71                 || (e.type == "keyup" && --documentKeyDownCount != 0))
72             document.getElementById("result").style.backgroundColor = "red";
73
74         if (!e)
75             e = window.event;
76         log("  document: " + e.type);
77         return true;
78     }
79
80     function registerWindow(e)
81     {
82         if ((e.type == "keydown" && ++windowKeyDownCount != 1)
83                 || (e.type == "keyup" && --windowKeyDownCount != 0))
84             document.getElementById("result").style.backgroundColor = "red";
85
86         if (!e)
87             e = window.event;
88         log("   window: " + e.type);
89         return true;
90     }
91
92 </script>
93 </body>