blob: 7e88d0dbc60f7f9f18eb0ce77783357f9107d647 [file] [log] [blame]
<!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>