Commit aa6549e5 authored by Akihiro Ota's avatar Akihiro Ota Committed by Commit Bot

Move createMockKeyEvent to TestUtils.

Move method to a utilitiy file, since it doesn't need to be defined
on the ChromeVox Next testing class.

Bug: N/A
Change-Id: I504be13fbaeb1012671102155b460d3cea256515
AX-Relnotes: N/A
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2461947
Commit-Queue: Akihiro Ota <akihiroota@chromium.org>
Reviewed-by: default avatarDavid Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815878}
parent d2d922cf
......@@ -45,22 +45,23 @@ TEST_F('ChromeVoxBackgroundKeyboardHandlerTest', 'PassThroughMode', function() {
assertEquals(0, keyboardHandler.passedThroughKeyDowns_.size);
// Send the pass through command: Search+Shift+Escape.
const search = this.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
const search =
TestUtils.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
keyboardHandler.onKeyDown(search);
assertEquals(1, keyboardHandler.eatenKeyDowns_.size);
assertEquals(0, keyboardHandler.passedThroughKeyDowns_.size);
assertEquals('no_pass_through', keyboardHandler.passThroughState_);
assertUndefined(ChromeVox.passThroughMode);
const searchShift =
this.createMockKeyEvent(KeyCode.SHIFT, {metaKey: true, shiftKey: true});
const searchShift = TestUtils.createMockKeyEvent(
KeyCode.SHIFT, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShift);
assertEquals(2, keyboardHandler.eatenKeyDowns_.size);
assertEquals(0, keyboardHandler.passedThroughKeyDowns_.size);
assertEquals('no_pass_through', keyboardHandler.passThroughState_);
assertUndefined(ChromeVox.passThroughMode);
const searchShiftEsc = this.createMockKeyEvent(
const searchShiftEsc = TestUtils.createMockKeyEvent(
KeyCode.ESCAPE, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShiftEsc);
assertEquals(3, keyboardHandler.eatenKeyDowns_.size);
......@@ -97,7 +98,7 @@ TEST_F('ChromeVoxBackgroundKeyboardHandlerTest', 'PassThroughMode', function() {
assertEquals('pending_shortcut_keyups', keyboardHandler.passThroughState_);
assertTrue(ChromeVox.passThroughMode);
const searchCtrl = this.createMockKeyEvent(
const searchCtrl = TestUtils.createMockKeyEvent(
KeyCode.CONTROL, {metaKey: true, ctrlKey: true});
keyboardHandler.onKeyDown(searchCtrl);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
......@@ -106,7 +107,7 @@ TEST_F('ChromeVoxBackgroundKeyboardHandlerTest', 'PassThroughMode', function() {
assertTrue(ChromeVox.passThroughMode);
const searchCtrlM =
this.createMockKeyEvent(KeyCode.M, {metaKey: true, ctrlKey: true});
TestUtils.createMockKeyEvent(KeyCode.M, {metaKey: true, ctrlKey: true});
keyboardHandler.onKeyDown(searchCtrlM);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(3, keyboardHandler.passedThroughKeyDowns_.size);
......@@ -144,17 +145,18 @@ TEST_F(
// Send some random keys; ensure the pass through state variables never
// change.
const search = this.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
const search =
TestUtils.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
keyboardHandler.onKeyDown(search);
assertNoPassThrough();
const searchShift = this.createMockKeyEvent(
const searchShift = TestUtils.createMockKeyEvent(
KeyCode.SHIFT, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShift);
assertNoPassThrough();
const searchShiftM =
this.createMockKeyEvent(KeyCode.M, {metaKey: true, shiftKey: true});
const searchShiftM = TestUtils.createMockKeyEvent(
KeyCode.M, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShiftM);
assertNoPassThrough();
......@@ -167,15 +169,15 @@ TEST_F(
keyboardHandler.onKeyUp(search);
assertNoPassThrough();
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.A));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.A));
assertNoPassThrough();
keyboardHandler.onKeyDown(
this.createMockKeyEvent(KeyCode.A, {altKey: true}));
TestUtils.createMockKeyEvent(KeyCode.A, {altKey: true}));
assertNoPassThrough();
keyboardHandler.onKeyUp(
this.createMockKeyEvent(KeyCode.A, {altKey: true}));
TestUtils.createMockKeyEvent(KeyCode.A, {altKey: true}));
assertNoPassThrough();
});
});
......@@ -185,23 +187,24 @@ TEST_F(
function() {
this.runWithLoadedTree('<p>test</p>', function() {
// Send a few key downs.
const search = this.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
const search =
TestUtils.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
keyboardHandler.onKeyDown(search);
assertEquals(1, keyboardHandler.eatenKeyDowns_.size);
const searchShift = this.createMockKeyEvent(
const searchShift = TestUtils.createMockKeyEvent(
KeyCode.SHIFT, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShift);
assertEquals(2, keyboardHandler.eatenKeyDowns_.size);
const searchShiftM =
this.createMockKeyEvent(KeyCode.M, {metaKey: true, shiftKey: true});
const searchShiftM = TestUtils.createMockKeyEvent(
KeyCode.M, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShiftM);
assertEquals(3, keyboardHandler.eatenKeyDowns_.size);
// Now, send a key down, but no modifiers set, which is impossible to
// actually press. This key is not eaten.
const m = this.createMockKeyEvent(KeyCode.M, {});
const m = TestUtils.createMockKeyEvent(KeyCode.M, {});
keyboardHandler.onKeyDown(m);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
......@@ -220,26 +223,27 @@ TEST_F(
ChromeVox.passThroughMode = true;
// Send a few key downs (which are passed through).
const search = this.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
const search =
TestUtils.createMockKeyEvent(KeyCode.SEARCH, {metaKey: true});
keyboardHandler.onKeyDown(search);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(1, keyboardHandler.passedThroughKeyDowns_.size);
const searchShift = this.createMockKeyEvent(
const searchShift = TestUtils.createMockKeyEvent(
KeyCode.SHIFT, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShift);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(2, keyboardHandler.passedThroughKeyDowns_.size);
const searchShiftM =
this.createMockKeyEvent(KeyCode.M, {metaKey: true, shiftKey: true});
const searchShiftM = TestUtils.createMockKeyEvent(
KeyCode.M, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShiftM);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(3, keyboardHandler.passedThroughKeyDowns_.size);
// Now, send a key down, but no modifiers set, which is impossible to
// actually press. This is passed through, so the count resets to 1.
const m = this.createMockKeyEvent(KeyCode.M, {});
const m = TestUtils.createMockKeyEvent(KeyCode.M, {});
keyboardHandler.onKeyDown(m);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(1, keyboardHandler.passedThroughKeyDowns_.size);
......
......@@ -69,7 +69,8 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'ActionUnitTest', function() {
const keySequenceActionOne = UserActionMonitor.Action.fromActionInfo(
{type: 'key_sequence', value: {keys: {keyCode: [KeyCode.SPACE]}}});
const keySequenceActionTwo = new UserActionMonitor.Action(
'key_sequence', new KeySequence(this.createMockKeyEvent(KeyCode.A)));
'key_sequence',
new KeySequence(TestUtils.createMockKeyEvent(KeyCode.A)));
const gestureActionOne = UserActionMonitor.Action.fromActionInfo(
{type: 'gesture', value: 'swipeUp1'});
const gestureActionTwo =
......@@ -146,7 +147,7 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'Errors', function() {
try {
monitor.onKeySequence(
new KeySequence(this.createMockKeyEvent(KeyCode.SPACE)));
new KeySequence(TestUtils.createMockKeyEvent(KeyCode.SPACE)));
assertTrue(false); // Shouldn't execute.
} catch (error) {
assertEquals(
......@@ -227,14 +228,14 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'SingleKey', function() {
const onFinished = () => finished = true;
ChromeVoxState.instance.createUserActionMonitor(actions, onFinished);
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.LEFT));
keyboardHandler.onKeyUp(this.createMockKeyEvent(KeyCode.LEFT));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.LEFT));
keyboardHandler.onKeyUp(TestUtils.createMockKeyEvent(KeyCode.LEFT));
assertFalse(finished);
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.RIGHT));
keyboardHandler.onKeyUp(this.createMockKeyEvent(KeyCode.RIGHT));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.RIGHT));
keyboardHandler.onKeyUp(TestUtils.createMockKeyEvent(KeyCode.RIGHT));
assertFalse(finished);
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.SPACE));
keyboardHandler.onKeyUp(this.createMockKeyEvent(KeyCode.SPACE));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.SPACE));
keyboardHandler.onKeyUp(TestUtils.createMockKeyEvent(KeyCode.SPACE));
assertTrue(finished);
});
});
......@@ -252,21 +253,21 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'MultipleKeys', function() {
const onFinished = () => finished = true;
ChromeVoxState.instance.createUserActionMonitor(actions, onFinished);
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.O));
keyboardHandler.onKeyUp(this.createMockKeyEvent(KeyCode.O));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.O));
keyboardHandler.onKeyUp(TestUtils.createMockKeyEvent(KeyCode.O));
assertFalse(finished);
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.B));
keyboardHandler.onKeyUp(this.createMockKeyEvent(KeyCode.B));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.B));
keyboardHandler.onKeyUp(TestUtils.createMockKeyEvent(KeyCode.B));
assertFalse(finished);
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.SEARCH));
keyboardHandler.onKeyUp(this.createMockKeyEvent(KeyCode.SEARCH));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.SEARCH));
keyboardHandler.onKeyUp(TestUtils.createMockKeyEvent(KeyCode.SEARCH));
assertFalse(finished);
keyboardHandler.onKeyDown(
this.createMockKeyEvent(KeyCode.O, {searchKeyHeld: true}));
TestUtils.createMockKeyEvent(KeyCode.O, {searchKeyHeld: true}));
assertFalse(finished);
keyboardHandler.onKeyUp(
this.createMockKeyEvent(KeyCode.O, {searchKeyHeld: true}));
keyboardHandler.onKeyDown(this.createMockKeyEvent(KeyCode.B));
TestUtils.createMockKeyEvent(KeyCode.O, {searchKeyHeld: true}));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(KeyCode.B));
assertTrue(finished);
});
});
......@@ -294,10 +295,10 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'MultipleKeySequences', function() {
];
const onFinished = () => finished = true;
const altShiftLSequence = new KeySequence(
this.createMockKeyEvent(KeyCode.L, {altKey: true, shiftKey: true}));
const altShiftSSequence = new KeySequence(
this.createMockKeyEvent(KeyCode.S, {altKey: true, shiftKey: true}));
const altShiftLSequence = new KeySequence(TestUtils.createMockKeyEvent(
KeyCode.L, {altKey: true, shiftKey: true}));
const altShiftSSequence = new KeySequence(TestUtils.createMockKeyEvent(
KeyCode.S, {altKey: true, shiftKey: true}));
let monitor;
mockFeedback
.call(() => {
......@@ -340,13 +341,13 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'BlockCommands', function() {
const onFinished = () => finished = true;
const nextObject =
this.createMockKeyEvent(KeyCode.RIGHT, {searchKeyHeld: true});
TestUtils.createMockKeyEvent(KeyCode.RIGHT, {searchKeyHeld: true});
const nextLine =
this.createMockKeyEvent(KeyCode.DOWN, {searchKeyHeld: true});
TestUtils.createMockKeyEvent(KeyCode.DOWN, {searchKeyHeld: true});
const previousObject =
this.createMockKeyEvent(KeyCode.LEFT, {searchKeyHeld: true});
TestUtils.createMockKeyEvent(KeyCode.LEFT, {searchKeyHeld: true});
const previousLine =
this.createMockKeyEvent(KeyCode.UP, {searchKeyHeld: true});
TestUtils.createMockKeyEvent(KeyCode.UP, {searchKeyHeld: true});
ChromeVoxState.instance.createUserActionMonitor(actions, onFinished);
mockFeedback.expectSpeech('Start')
......@@ -402,15 +403,15 @@ TEST_F('ChromeVoxUserActionMonitorTest', 'CloseChromeVox', function() {
assertFalse(closed);
assertFalse(finished);
keyboardHandler.onKeyDown(
this.createMockKeyEvent(KeyCode.CONTROL, {ctrlKey: true}));
TestUtils.createMockKeyEvent(KeyCode.CONTROL, {ctrlKey: true}));
assertFalse(closed);
assertFalse(finished);
keyboardHandler.onKeyDown(
this.createMockKeyEvent(KeyCode.ALT, {ctrlKey: true, altKey: true}));
keyboardHandler.onKeyDown(TestUtils.createMockKeyEvent(
KeyCode.ALT, {ctrlKey: true, altKey: true}));
assertFalse(closed);
assertFalse(finished);
keyboardHandler.onKeyDown(
this.createMockKeyEvent(KeyCode.Z, {ctrlKey: true, altKey: true}));
TestUtils.createMockKeyEvent(KeyCode.Z, {ctrlKey: true, altKey: true}));
assertTrue(closed);
// |finished| remains false since we didn't press the expected key sequence.
assertFalse(finished);
......
......@@ -500,7 +500,7 @@ TEST_F('ChromeVoxTutorialTest', 'QuickOrientationLessonTest', function() {
return ChromeVoxState.instance.getCurrentRange().start.node;
};
const simulateKeyPress = (keyCode, opt_modifiers) => {
const keyEvent = this.createMockKeyEvent(keyCode, opt_modifiers);
const keyEvent = TestUtils.createMockKeyEvent(keyCode, opt_modifiers);
keyboardHandler.onKeyDown(keyEvent);
keyboardHandler.onKeyUp(keyEvent);
};
......
......@@ -41,6 +41,31 @@ class TestUtils {
}
return stringified.replace(/^[^\/]+\/\*!?/, '').replace(/\*\/[^\/]+$/, '');
}
/**
* Create a mock event object.
* @param {number} keyCode
* @param {{altGraphKey: boolean=,
* altKey: boolean=,
* ctrlKey: boolean=,
* metaKey: boolean=,
* searchKeyHeld: boolean=,
* shiftKey: boolean=,
* stickyMode: boolean=,
* prefixKey: boolean=}=} opt_modifiers
* @return {Object} The mock event.
*/
static createMockKeyEvent(keyCode, opt_modifiers) {
const modifiers = opt_modifiers === undefined ? {} : opt_modifiers;
const keyEvent = {};
keyEvent.keyCode = keyCode;
for (const key in modifiers) {
keyEvent[key] = modifiers[key];
}
keyEvent.preventDefault = _ => {};
keyEvent.stopPropagation = _ => {};
return keyEvent;
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment