Home | History | Annotate | Download | only in ManualTests
      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>
     94