Commit 8f9d8f11 authored by David Tseng's avatar David Tseng Committed by Commit Bot

Add a test for pass through mode

Test: browser_tests --gtest_filter=ChromeVox*KeyboardHandler*.*
Change-Id: Ide1ec47e01e44c8bb635335883e01d68cff50b79
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2104263
Commit-Queue: David Tseng <dtseng@chromium.org>
Reviewed-by: default avatarSara Kato <sarakato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#750580}
parent f65594d3
......@@ -3,7 +3,9 @@
// found in the LICENSE file.
// Include test fixture.
GEN_INCLUDE(['../testing/chromevox_next_e2e_test_base.js']);
GEN_INCLUDE([
'../testing/chromevox_next_e2e_test_base.js', '../testing/assert_additions.js'
]);
/**
* Test fixture for ChromeVox KeyboardHandler.
......@@ -13,6 +15,17 @@ ChromeVoxBackgroundKeyboardHandlerTest = class extends ChromeVoxNextE2ETest {
setUp() {
window.keyboardHandler = new BackgroundKeyboardHandler();
}
createMockKeyEvent(keyCode, modifiers) {
const keyEvent = {};
keyEvent.keyCode = keyCode;
for (const key in modifiers) {
keyEvent[key] = modifiers[key];
}
keyEvent.preventDefault = _ => {};
keyEvent.stopPropagation = _ => {};
return keyEvent;
}
};
......@@ -36,3 +49,73 @@ TEST_F(
assertEquals(1, keyboardHandler.eatenKeyDowns_.size);
});
});
TEST_F('ChromeVoxBackgroundKeyboardHandlerTest', 'PassThroughMode', function() {
this.runWithLoadedTree('<p>test</p>', function() {
assertUndefined(ChromeVox.passThroughMode);
assertEquals(0, keyboardHandler.passThroughKeyUpCount_);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
// Send the pass through command: Search+Shift+Escape.
const search = this.createMockKeyEvent(91, {metaKey: true});
keyboardHandler.onKeyDown(search);
assertEquals(1, keyboardHandler.eatenKeyDowns_.size);
assertUndefined(ChromeVox.passThroughMode);
assertEquals(0, keyboardHandler.passThroughKeyUpCount_);
const searchShift =
this.createMockKeyEvent(16, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShift);
assertEquals(2, keyboardHandler.eatenKeyDowns_.size);
assertEquals(0, keyboardHandler.passThroughKeyUpCount_);
assertUndefined(ChromeVox.passThroughMode);
const searchShiftEsc =
this.createMockKeyEvent(27, {metaKey: true, shiftKey: true});
keyboardHandler.onKeyDown(searchShiftEsc);
assertEquals(3, keyboardHandler.eatenKeyDowns_.size);
assertEquals(0, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
keyboardHandler.onKeyUp(searchShiftEsc);
assertEquals(2, keyboardHandler.eatenKeyDowns_.size);
assertEquals(1, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
keyboardHandler.onKeyUp(searchShift);
assertEquals(1, keyboardHandler.eatenKeyDowns_.size);
assertEquals(2, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
keyboardHandler.onKeyUp(search);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(3, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
// Now, the next series of key downs should be passed through.
// Try Search+Ctrl+M.
keyboardHandler.onKeyDown(search);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(3, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
const searchCtrl =
this.createMockKeyEvent(77, {metaKey: true, ctrlKey: true});
keyboardHandler.onKeyDown(searchCtrl);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(3, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
const searchCtrlM =
this.createMockKeyEvent(77, {metaKey: true, ctrlKey: true});
keyboardHandler.onKeyDown(searchCtrlM);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(3, keyboardHandler.passThroughKeyUpCount_);
assertTrue(ChromeVox.passThroughMode);
keyboardHandler.onKeyUp(searchCtrlM);
assertEquals(0, keyboardHandler.eatenKeyDowns_.size);
assertEquals(0, keyboardHandler.passThroughKeyUpCount_);
assertFalse(ChromeVox.passThroughMode);
});
});
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