WebCore/manual-tests/arrow-key-events.html
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     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>