Index: chrome/test/data/fullscreen_keyboardlock.html |
diff --git a/chrome/test/data/fullscreen_keyboardlock.html b/chrome/test/data/fullscreen_keyboardlock.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7e88d0dbc60f7f9f18eb0ce77783357f9107d647 |
--- /dev/null |
+++ b/chrome/test/data/fullscreen_keyboardlock.html |
@@ -0,0 +1,102 @@ |
+<!DOCTYPE html> |
+<!-- |
+ The html/js to help testing keyboard events. It |
+ - receives keybord events and preventDefault(), |
+ - writes the key codes to /html/body/div[@id='container'], |
+ - sends the key codes to window.domAutomationController once KeyX is received. |
+--> |
+<html> |
+ <head> |
+ <title>Fullscreen Keyboard Lock Test</title> |
+ <script> |
+ let x_pressed = false; |
+ let report_called = false; |
+ |
+ function processResult() { |
+ if (x_pressed && report_called) { |
+ window.domAutomationController.send(container().innerHTML); |
+ } |
+ } |
+ |
+ function getKeyEventReport() { |
+ report_called = true; |
+ processResult(); |
+ } |
+ |
+ function isMacOSFullscreenShortcut(e) { |
+ return e.metaKey && |
+ e.ctrlKey && |
+ !e.altKey && |
+ !e.shiftKey && |
+ e.code == "KeyF"; |
+ } |
+ |
+ function isF11FullscreenShortcut(e) { |
+ return !e.metaKey && |
+ !e.ctrlKey && |
+ !e.altKey && |
+ !e.shiftKey && |
+ e.code == "F11"; |
+ } |
+ |
+ function isBrowserFullscreenShortcut(e) { |
+ return isMacOSFullscreenShortcut(e) || |
+ isF11FullscreenShortcut(e); |
+ } |
+ |
+ function container() { |
+ return document.getElementById('container'); |
+ } |
+ |
+ function consumeEvent(type, e) { |
+ if (type == 'keydown' && |
+ !e.code.startsWith("Control") && |
+ !e.code.startsWith("Shift") && |
+ !e.code.startsWith("Alt") && |
+ !e.code.startsWith("Meta")) { |
+ container().innerHTML += |
+ e.code + |
+ ' ctrl:' + e.getModifierState('Control') + |
+ ' shift:' + e.getModifierState('Shift') + |
+ ' alt:' + e.getModifierState('Alt') + |
+ ' meta:' + e.getModifierState('Meta') + '\n'; |
+ } |
+ e.preventDefault(); |
+ } |
+ |
+ function init() { |
+ document.addEventListener('keydown', (e) => { |
+ // The web content triggers fullscreen on the "S" key down event. |
+ if (e.code == 'KeyS') { |
+ container().webkitRequestFullscreen(); |
+ } else if (isBrowserFullscreenShortcut(e)) { |
+ // Web page can consume fullscreen shortcut when the page is in |
+ // window mode, but it's not expected in test cases. |
+ return; |
+ } |
+ consumeEvent('keydown', e); |
+ }); |
+ |
+ document.addEventListener('keyup', (e) => { |
+ if (isBrowserFullscreenShortcut(e)) { |
+ return; |
+ } |
+ consumeEvent('keyup', e); |
+ |
+ if (e.code == 'KeyX') { |
+ x_pressed = true; |
+ processResult(); |
+ } |
+ }); |
+ |
+ document.addEventListener('keypress', (e) => { |
+ consumeEvent('keypress', e); |
+ }); |
+ } |
+ </script> |
+ </head> |
+ <body onload='init()'> |
+ <div id='container'> |
+ </div> |
+ </body> |
+</html> |