OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <!-- |
| 3 The html/js to help testing keyboard events. It |
| 4 - receives keybord events and preventDefault(), |
| 5 - writes the key codes to /html/body/div[@id='container'], |
| 6 - sends the key codes to window.domAutomationController once KeyX is received. |
| 7 --> |
| 8 <html> |
| 9 <head> |
| 10 <title>Fullscreen Keyboard Lock Test</title> |
| 11 <script> |
| 12 let done = false; |
| 13 function getKeyEventReport() { |
| 14 return new Promise((resolve, reject) => { |
| 15 const register = () => { |
| 16 window.setTimeout(() => { |
| 17 if (done) { |
| 18 resolve(); |
| 19 } else { |
| 20 register(); |
| 21 } |
| 22 }, 100); |
| 23 }; |
| 24 register(); |
| 25 }).then(() => { |
| 26 window.domAutomationController.send(container().innerHTML); |
| 27 }); |
| 28 }; |
| 29 |
| 30 function isMacOSFullscreenShortcut(e) { |
| 31 return e.metaKey && |
| 32 e.ctrlKey && |
| 33 !e.altKey && |
| 34 !e.shiftKey && |
| 35 e.code == "KeyF"; |
| 36 } |
| 37 |
| 38 function isF11FullscreenShortcut(e) { |
| 39 return !e.metaKey && |
| 40 !e.ctrlKey && |
| 41 !e.altKey && |
| 42 !e.shiftKey && |
| 43 e.code == "F11"; |
| 44 } |
| 45 |
| 46 function isBrowserFullscreenShortcut(e) { |
| 47 return isMacOSFullscreenShortcut(e) || |
| 48 isF11FullscreenShortcut(e); |
| 49 } |
| 50 |
| 51 function container() { |
| 52 return document.getElementById('container'); |
| 53 } |
| 54 |
| 55 function consumeEvent(type, e) { |
| 56 if (type == 'keydown' && |
| 57 !e.code.startsWith("Control") && |
| 58 !e.code.startsWith("Shift") && |
| 59 !e.code.startsWith("Alt") && |
| 60 !e.code.startsWith("Meta")) { |
| 61 container().innerHTML += |
| 62 e.code + |
| 63 ' ctrl:' + e.getModifierState('Control') + |
| 64 ' shift:' + e.getModifierState('Shift') + |
| 65 ' alt:' + e.getModifierState('Alt') + |
| 66 ' meta:' + e.getModifierState('Meta') + '\n'; |
| 67 } |
| 68 e.preventDefault(); |
| 69 } |
| 70 |
| 71 function init() { |
| 72 document.addEventListener('keydown', (e) => { |
| 73 // The web content triggers fullscreen on the "S" key down event. |
| 74 if (e.code == 'KeyS') { |
| 75 container().webkitRequestFullscreen(); |
| 76 } else if (isBrowserFullscreenShortcut(e)) { |
| 77 // Web page can consume fullscreen shortcut when the page is in |
| 78 // window mode, but it's not expected in test cases. |
| 79 return; |
| 80 } |
| 81 consumeEvent('keydown', e); |
| 82 }); |
| 83 |
| 84 document.addEventListener('keyup', (e) => { |
| 85 if (isBrowserFullscreenShortcut(e)) { |
| 86 return; |
| 87 } |
| 88 consumeEvent('keyup', e); |
| 89 |
| 90 if (e.code == 'KeyX') { |
| 91 done = true; |
| 92 } |
| 93 }); |
| 94 |
| 95 document.addEventListener('keypress', (e) => { |
| 96 consumeEvent('keypress', e); |
| 97 }); |
| 98 } |
| 99 </script> |
| 100 </head> |
| 101 <body onload='init()'> |
| 102 <div id='container'> |
| 103 </div> |
| 104 </body> |
| 105 </html> |
OLD | NEW |