<!DOCTYPE html>
<!--
The html/js to help testing keyboard events. It
- receives keyboard 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_resolve;
let x_pressed;
let prevent_default = true;
function processResult() {
if (x_pressed && x_pressed_resolve) {
x_pressed_resolve(container().innerHTML);
}
}
async function getKeyEventReport() {
await new Promise(resolve => {
x_pressed_resolve = resolve;
processResult();
});
return container().innerHTML;
}
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';
}
if (prevent_default) {
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;
} else if (e.code == 'KeyD') {
// Disable prevent default behavior.
prevent_default = false;
}
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>