// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Common testing utilities.
class TestUtils {
/**
* 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;
}
/**
* Returns a promise which gets resolved when ChromeVox speaks the given
* string.
* @param {string} textStringToWaitFor
* @return {!Promise}
*/
static waitForSpeech(textStringToWaitFor) {
return new Promise(resolve => {
ChromeVox.tts.speak = textString => {
if (textString === textStringToWaitFor) {
resolve();
}
};
});
}
}