| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <link rel="help" href="http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardE
vent-key" /> | 2 <script src="../../resources/testharness.js"></script> |
| 3 <script src="../../resources/js-test.js"></script>- | 3 <script src="../../resources/testharnessreport.js"></script> |
| 4 <textarea id="textarea"></textarea> | |
| 5 <script> | 4 <script> |
| 6 description('Tests KeyboardEvent.key attribute'); | 5 // Note: This test is only testing synthetic DomKey for eventSender, for real |
| 7 var textarea = document.getElementById('textarea'); | 6 // DomKey generated on each platform please refer to individual tests. |
| 8 textarea.addEventListener('keydown', recordKeyEvent, false); | 7 // e.g. platform_key_map_win_unittest.cc, web_input_event_builders_mac_unittest.
mm |
| 9 textarea.addEventListener('keyup', recordKeyEvent, false); | 8 test(function() { |
| 10 textarea.addEventListener('keypress', recordKeyEvent, false); | 9 if (!window.eventSender) { |
| 11 textarea.focus(); | 10 document.write('This test requires eventSender'); |
| 11 return; |
| 12 } |
| 12 | 13 |
| 13 var lastKeyboardDownEvent, lastKeyboardPressEvent, lastKeyboardUpEvent; | 14 var lastKeyDown, lastKeyPress, lastKeyUp; |
| 15 function recordKeyEvent(event) { |
| 16 if (event.type === "keydown") |
| 17 lastKeyDown = event; |
| 18 else if (event.type === "keypress") |
| 19 lastKeyPress = event; |
| 20 else if (event.type === "keyup") |
| 21 lastKeyUp = event; |
| 22 } |
| 23 document.addEventListener('keydown', recordKeyEvent, false); |
| 24 document.addEventListener('keypress', recordKeyEvent, false); |
| 25 document.addEventListener('keyup', recordKeyEvent, false); |
| 14 | 26 |
| 15 function recordKeyEvent(ev) { | 27 |
| 16 if (window.eventSender) { | 28 function testDomKey(keyString, expectedDomKey, shouldTestKeyPress, modifiers
) { |
| 17 if (ev.type === "keydown") | 29 lastKeyDown = null; |
| 18 lastKeyboardDownEvent = ev; | 30 lastKeyPress = null; |
| 19 else if (ev.type === "keyup") | 31 lastKeyUp = null; |
| 20 lastKeyboardUpEvent = ev; | 32 eventSender.keyDown(keyString, modifiers); |
| 21 else if (ev.type === "keypress") | 33 assert_equals(lastKeyDown.key, expectedDomKey); |
| 22 lastKeyboardPressEvent = ev; | 34 assert_equals(lastKeyUp.key, expectedDomKey); |
| 23 } else { | 35 if (shouldTestKeyPress) |
| 24 debug('Type=' + ev.type + ',' + 'key=' + ev.key); | 36 assert_equals(lastKeyPress.key, expectedDomKey); |
| 25 } | 37 } |
| 26 } | 38 // Alpha&Numeric Keys |
| 39 testDomKey('A', 'A', true, ['shiftKey']); |
| 40 testDomKey('g', 'g', true); |
| 41 testDomKey('h', 'h', true); |
| 42 testDomKey('1', '1', true); |
| 43 testDomKey('(', '(', true, ['shiftKey']); |
| 27 | 44 |
| 28 if (window.eventSender) { | 45 // Modifier Keys |
| 29 debug('Modifier Keys'); | 46 testDomKey('leftControl', 'Control', false); |
| 30 eventSender.keyDown('leftControl'); | 47 testDomKey('rightControl', 'Control', false); |
| 31 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'Control\''); | 48 testDomKey('leftShift', 'Shift', false); |
| 32 eventSender.keyDown('rightControl'); | 49 testDomKey('rightShift', 'Shift', false); |
| 33 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Control\''); | 50 testDomKey('leftAlt', 'Alt', false); |
| 34 eventSender.keyDown('leftShift'); | 51 testDomKey('rightAlt', 'Alt', false); |
| 35 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Shift\''); | 52 testDomKey('numLock', 'NumLock', false); |
| 36 eventSender.keyDown('rightShift'); | |
| 37 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Shift\''); | |
| 38 eventSender.keyDown('leftAlt'); | |
| 39 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Alt\''); | |
| 40 eventSender.keyDown('rightAlt'); | |
| 41 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'AltGraph\''); | |
| 42 eventSender.keyDown('numLock'); | |
| 43 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'NumLock\''); | |
| 44 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'NumLock\''); | |
| 45 | 53 |
| 46 debug('Whitespace Keys'); | 54 // Whitespace Keys |
| 47 eventSender.keyDown('\n'); | 55 testDomKey('\n', 'Enter', true); |
| 48 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Enter\''); | 56 testDomKey('\t', 'Tab', false); |
| 49 eventSender.keyDown('\t'); | |
| 50 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Tab\''); | |
| 51 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'Tab\''); | |
| 52 | 57 |
| 53 debug('Navigation keys'); | 58 // Navigation keys |
| 54 eventSender.keyDown('rightArrow'); | 59 testDomKey('rightArrow', 'ArrowRight', false); |
| 55 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'ArrowRight\''); | 60 testDomKey('downArrow', 'ArrowDown', false); |
| 56 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'ArrowRight\''); | 61 testDomKey('leftArrow', 'ArrowLeft', false); |
| 57 eventSender.keyDown('downArrow'); | 62 testDomKey('upArrow', 'ArrowUp', false); |
| 58 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'ArrowDown\''); | 63 testDomKey('home', 'Home', false); |
| 59 eventSender.keyDown('leftArrow'); | 64 testDomKey('end', 'End', false); |
| 60 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'ArrowLeft\''); | 65 testDomKey('pageUp', 'PageUp', false); |
| 61 eventSender.keyDown('upArrow'); | 66 testDomKey('pageDown', 'PageDown', false); |
| 62 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'ArrowUp\''); | |
| 63 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'ArrowUp\''); | |
| 64 eventSender.keyDown('home'); | |
| 65 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Home\''); | |
| 66 eventSender.keyDown('end'); | |
| 67 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'End\''); | |
| 68 eventSender.keyDown('pageUp'); | |
| 69 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'PageUp\''); | |
| 70 eventSender.keyDown('pageDown'); | |
| 71 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'PageDown\''); | |
| 72 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'PageDown\''); | |
| 73 | 67 |
| 74 debug('Editing Keys'); | 68 // Editing Keys |
| 75 eventSender.keyDown('backspace'); | 69 testDomKey('backspace', 'Backspace', false); |
| 76 shouldEvaluateTo('lastKeyboardDownEvent.code', '\'Backspace\''); | 70 testDomKey('insert', 'Insert', false); |
| 77 eventSender.keyDown('insert'); | 71 testDomKey('delete', 'Delete', false); |
| 78 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Insert\''); | |
| 79 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'Insert\''); | |
| 80 eventSender.keyDown('delete'); | |
| 81 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Delete\''); | |
| 82 | 72 |
| 83 debug('Device Keys'); | 73 // Device Keys |
| 84 eventSender.keyDown('printScreen'); | 74 testDomKey('printScreen', 'PrintScreen', false); |
| 85 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'PrintScreen\''); | |
| 86 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'PrintScreen\''); | |
| 87 | 75 |
| 88 debug('General Purpose Function Section'); | 76 // General Purpose Function Section |
| 89 eventSender.keyDown('F1'); | 77 testDomKey('F1', 'F1', false); |
| 90 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'F1\''); | 78 testDomKey('F6', 'F6', false); |
| 91 eventSender.keyDown('F6'); | 79 testDomKey('F12', 'F12', false); |
| 92 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'F6\''); | |
| 93 eventSender.keyDown('F12'); | |
| 94 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'F12\''); | |
| 95 | 80 |
| 96 debug('UI Keys'); | 81 // UI Keys |
| 97 eventSender.keyDown('escape'); | 82 testDomKey('escape', 'Escape', false); |
| 98 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'Escape\''); | 83 testDomKey('menu', 'ContextMenu', false); |
| 99 shouldEvaluateTo('lastKeyboardUpEvent.key', '\'Escape\''); | 84 }, 'Testing synthetic DomKey for eventSender.'); |
| 100 eventSender.keyDown('menu'); | |
| 101 shouldEvaluateTo('lastKeyboardDownEvent.key', '\'MediaApps\''); | |
| 102 } | |
| 103 </script> | 85 </script> |
| OLD | NEW |