<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
// Note: This test is only testing synthetic DomKey for eventSender, for real
// DomKey generated on each platform please refer to individual tests.
// e.g. platform_key_map_win_unittest.cc, web_input_event_builders_mac_unittest.mm
test(function() {
if (!window.eventSender) {
document.write('This test requires eventSender');
return;
}
var lastKeyDown, lastKeyPress, lastKeyUp;
function recordKeyEvent(event) {
if (event.type === "keydown")
lastKeyDown = event;
else if (event.type === "keypress")
lastKeyPress = event;
else if (event.type === "keyup")
lastKeyUp = event;
}
document.addEventListener('keydown', recordKeyEvent, false);
document.addEventListener('keypress', recordKeyEvent, false);
document.addEventListener('keyup', recordKeyEvent, false);
function testDomKey(keyString, expectedDomKey, shouldTestKeyPress, modifiers) {
lastKeyDown = null;
lastKeyPress = null;
lastKeyUp = null;
eventSender.keyDown(keyString, modifiers);
assert_equals(lastKeyDown.key, expectedDomKey);
assert_equals(lastKeyUp.key, expectedDomKey);
if (shouldTestKeyPress)
assert_equals(lastKeyPress.key, expectedDomKey);
}
// Alpha&Numeric Keys
testDomKey('A', 'A', true, ['shiftKey']);
testDomKey('g', 'g', true);
testDomKey('h', 'h', true);
testDomKey('1', '1', true);
testDomKey('(', '(', true, ['shiftKey']);
// Modifier Keys
testDomKey('ControlLeft', 'Control', false);
testDomKey('ControlRight', 'Control', false);
testDomKey('ShiftLeft', 'Shift', false);
testDomKey('ShiftRight', 'Shift', false);
testDomKey('AltLeft', 'Alt', false);
testDomKey('AltRight', 'Alt', false);
testDomKey('NumLock', 'NumLock', false);
// Whitespace Keys
testDomKey('Enter', 'Enter', true);
testDomKey('Tab', 'Tab', false);
// Navigation keys
testDomKey('ArrowRight', 'ArrowRight', false);
testDomKey('ArrowDown', 'ArrowDown', false);
testDomKey('ArrowLeft', 'ArrowLeft', false);
testDomKey('ArrowUp', 'ArrowUp', false);
testDomKey('Home', 'Home', false);
testDomKey('End', 'End', false);
testDomKey('PageUp', 'PageUp', false);
testDomKey('PageDown', 'PageDown', false);
// Editing Keys
testDomKey('Backspace', 'Backspace', false);
testDomKey('Insert', 'Insert', false);
testDomKey('Delete', 'Delete', false);
// Device Keys
testDomKey('PrintScreen', 'PrintScreen', false);
// General Purpose Function Section
testDomKey('F1', 'F1', false);
testDomKey('F6', 'F6', false);
testDomKey('F12', 'F12', false);
// UI Keys
testDomKey('Escape', 'Escape', false);
testDomKey('ContextMenu', 'ContextMenu', false);
}, 'Testing synthetic DomKey for eventSender.');
</script>