<!DOCTYPE html>
<title>Test Context Menu Key, Shift+F10 with Modifiers</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<a href="#" id="anchor">Anchor</a>
<script>
test(function() {
assert_not_equals(window.eventSender, undefined, 'This test requires eventSender.');
var contextMenuFired = false;
var anchor = document.getElementById('anchor');
anchor.addEventListener('contextmenu', () => contextMenuFired = true);
function testContextMenuEvent(key, modifiers, shouldFire) {
contextMenuFired = false;
anchor.focus();
eventSender.keyDown(key, modifiers);
// Esc key to hide context menu
eventSender.keyDown("Escape");
assert_equals(contextMenuFired, shouldFire, `${key}+${modifiers} opens Context Menu:${shouldFire}.`);
}
testContextMenuEvent('ContextMenu', [], true);
testContextMenuEvent('ContextMenu', ['numLockOn'], true);
testContextMenuEvent('ContextMenu', ['capsLockOn'], true);
testContextMenuEvent('ContextMenu', ['altKey'], false);
testContextMenuEvent('ContextMenu', ['ctrlKey'], false);
testContextMenuEvent('ContextMenu', ['shiftKey'], false);
testContextMenuEvent('F10', ['shiftKey'], true);
testContextMenuEvent('F10', ['shiftKey', 'numLockOn'], true);
testContextMenuEvent('F10', ['shiftKey', 'capsLockOn'], true);
testContextMenuEvent('F10', ['shiftKey', 'altKey'], false);
testContextMenuEvent('F10', ['shiftKey', 'ctrlKey'], false);
}, 'Context Menu keys should allow NumLock/CapsLock/etc but not other modifiers.');
</script>