blob: 72a9f0fc3fb440e575240023d3a65546cf29e574 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<div id="target" style="margin: 1rem; width: 100px; height: 100px; border: solid 5px red;"></div>
<script src="../../resources/js-test.js"></script>
<script>
description(`This tests mouse events sets the correct modifier key states.<br>
To manually test, turn on CapsLock and press Alt key and move the mosue cursor to the red box below, and then double click it.`);
jsTestIsAsync = true;
const events = [];
function addEvent(event) { events.push(event) };
let firstMousemoveEvent = null;
const target = document.getElementById('target');
target.addEventListener('mousedown', addEvent);
target.addEventListener('mouseup', addEvent);
target.addEventListener('click', addEvent);
target.addEventListener('dblclick', (event) => {
addEvent(event);
verify();
});
var currentEvent;
function verify() {
const eventTypes = ['mousedown', 'mouseup', 'click', 'mousedown', 'mouseup', 'click', 'dblclick'];
for (let i = 0; i < events.length; i++) {
currentEvent = events[i];
shouldBeEqualToString('currentEvent.type', eventTypes[i]);
shouldBeFalse('currentEvent.getModifierState("Control")');
shouldBeTrue('currentEvent.getModifierState("Alt")');
shouldBeFalse('currentEvent.getModifierState("Shift")');
shouldBeFalse('currentEvent.getModifierState("Meta")');
shouldBeFalse('currentEvent.getModifierState("AltGraph")');
shouldBeTrue('currentEvent.getModifierState("CapsLock")');
}
finishJSTest();
}
if (window.eventSender) {
eventSender.leapForward(1000); // drain dblclick timer
eventSender.mouseMoveTo(1, 1);
eventSender.mouseMoveTo(target.offsetLeft + target.offsetWidth / 2, target.offsetTop + target.offsetHeight / 2);
eventSender.mouseDown(0, ['altKey', 'capsLockKey']);
eventSender.mouseUp(0, ['altKey', 'capsLockKey']);
eventSender.mouseDown(0, ['altKey', 'capsLockKey']);
eventSender.mouseUp(0, ['altKey', 'capsLockKey']);
} else if (window.testRunner) {
testFailed('This test requires eventSender');
finishJSTest();
}
</script>
</body>
</html>