blob: 5db525b07b5ca89aaa53b6a6573855699a02f7e2 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<p tabindex="1">This tests re-opening the select element popup after closing it by bluring the focus.
WebKit should re-open the popup intead of hitting a debug assert.<br>
To manually test, after the popup which opened as this test is dismissed (click elsewhere to dismiss it if not).
Clicking on the select element should then open the popup menu.</p>
<select>
<option>Click here</option>
<option>You should see this</option>
</select>
<pre id="result"></pre>
<script>
const select = document.querySelector('select');
if (window.testRunner) {
testRunner.waitUntilDone();
testRunner.dumpAsText();
} else {
let count = 0;
select.addEventListener('mousedown', () => {
if (count++)
return;
setTimeout(() => document.querySelector('p').focus(), 0);
});
}
function log(text) {
document.getElementById('result').textContent += text + '\n';
}
function clickOnSelectElement() {
const event = document.createEvent("MouseEvent");
event.initMouseEvent("mousedown", true, true, document.defaultView, 1, select.offsetLeft + 5, select.offsetTop + 5, select.offsetLeft + 5, select.offsetTop + 5, false, false, false, false, 0, document);
select.dispatchEvent(event);
}
function roundTripToUIProcess() {
return new Promise((resolve) => {
testRunner.runUIScript(`uiController.uiScriptComplete()`, resolve);
});
}
window.onload = async () => {
clickOnSelectElement();
if (!window.testRunner)
return;
await roundTripToUIProcess();
document.querySelector('p').focus();
log(internals.isSelectPopupVisible(select) ? 'FAIL - popup was open after moving the focus' : 'PASS - popup closed by blur');
clickOnSelectElement();
log(internals.isSelectPopupVisible(select) ? 'PASS - popup opened after closed by blur' : 'FAIL - popup failed to open for the second time');
await roundTripToUIProcess();
document.querySelector('p').focus();
testRunner.notifyDone();
}
</script>
</body>
</html>