blob: abe776201e6b6bafc3371542dc677ab821de145f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>IsInputPending: pointer locked elements may detect pending input</title>
</title>
<p>
This test should be run under <code>--enable-blink-features=ExperimentalIsInputPending</code>.
</p>
<p>
Verify that input is detected with and without pointer locking for each frame, and that sibling and child frames cannot observe pending input.
</p>
</head>
<p id="text-detected" style="color: green; display: none">Input detected</p>
<p id="text-not-detected" style="color: red">Input not detected</p>
<p><button id="pointer-locker">Lock pointer</button></p>
<script>
const NUM_CHILD_FRAMES = 2;
const PERIOD_MS = 20;
const iipOptions = {includeContinuous: true};
const detectedText = document.querySelector('#text-detected');
const notDetectedText = document.querySelector('#text-not-detected');
setInterval(() => {
for (const end = performance.now() + PERIOD_MS; performance.now() < end;) {}
const detected = navigator.scheduling.isInputPending(iipOptions);
detectedText.style.display = detected ? '' : 'none';
notDetectedText.style.display = detected ? 'none' : '';
}, PERIOD_MS);
document.querySelector('#pointer-locker').addEventListener('click', e => {
e.target.requestPointerLock();
});
if (window.top === window.self) {
for (let i = 0; i < NUM_CHILD_FRAMES; i++) {
// Add child frames if we're not already one.
const subframe = document.createElement('iframe');
subframe.width = 640;
subframe.height = 240;
subframe.src = location.href;
document.body.appendChild(subframe);
}
}
</script>
</html>