appium-android-driver
Version:
Android UiAutomator and Chrome support for Appium
120 lines (105 loc) • 3.23 kB
JavaScript
/* eslint-disable @typescript-eslint/no-unused-vars */
import _ from 'lodash';
import {errors} from 'appium/driver';
import {UNICODE_IME, EMPTY_IME} from 'io.appium.settings';
/**
* @this {import('../driver').AndroidDriver}
* @returns {Promise<boolean>}
*/
export async function hideKeyboard() {
return await /** @type {import('appium-adb').ADB} */ (this.adb).hideKeyboard();
}
/**
* @this {import('../driver').AndroidDriver}
* @returns {Promise<boolean>}
*/
export async function isKeyboardShown() {
const {isKeyboardShown} = await /** @type {import('appium-adb').ADB} */ (
this.adb
).isSoftKeyboardPresent();
return isKeyboardShown;
}
/**
* @this {import('../driver').AndroidDriver}
* @param {string|string[]} keys
* @returns {Promise<void>}
*/
export async function keys(keys) {
// Protocol sends an array; rethink approach
keys = _.isArray(keys) ? keys.join('') : keys;
await this.doSendKeys({
text: keys,
replace: false,
});
}
/**
* @this {import('../driver').AndroidDriver}
* @param {import('./types').SendKeysOpts} params
* @returns {Promise<void>}
*/
export async function doSendKeys(params) {
throw new errors.NotImplementedError('Not implemented');
}
/**
* @this {import('../driver').AndroidDriver}
* @param {string|number} keycode
* @param {number} [metastate]
* @returns {Promise<void>}
*/
export async function keyevent(keycode, metastate) {
// TODO deprecate keyevent; currently wd only implements keyevent
this.log.warn('keyevent will be deprecated use pressKeyCode');
return await this.pressKeyCode(keycode, metastate);
}
/**
* @this {import('../driver').AndroidDriver}
* @param {string|number} keycode
* @param {number} [metastate]
* @returns {Promise<void>}
*/
export async function pressKeyCode(keycode, metastate) {
throw new errors.NotImplementedError('Not implemented');
}
/**
* @this {import('../driver').AndroidDriver}
* @param {string|number} keycode
* @param {number} [metastate]
* @returns {Promise<void>}
*/
export async function longPressKeyCode(keycode, metastate) {
throw new errors.NotImplementedError('Not implemented');
}
/**
* @this {import('../driver').AndroidDriver}
* @param {string | number} action
* @returns {Promise<void>}
*/
export async function mobilePerformEditorAction(action) {
await this.settingsApp.performEditorAction(action);
}
// #region Internal Helpers
/**
* @deprecated
* @this {import('../driver').AndroidDriver}
* @returns {Promise<string?>}
*/
export async function initUnicodeKeyboard() {
this.log.debug('Enabling Unicode keyboard support');
// get the default IME so we can return back to it later if we want
const defaultIME = await this.adb.defaultIME();
this.log.debug(`Unsetting previous IME ${defaultIME}`);
this.log.debug(`Setting IME to '${UNICODE_IME}'`);
await this.adb.enableIME(UNICODE_IME);
await this.adb.setIME(UNICODE_IME);
return defaultIME;
}
/**
* @this {import('../driver').AndroidDriver}
* @returns {Promise<void>}
*/
export async function hideKeyboardCompletely() {
this.log.debug(`Hiding the on-screen keyboard by setting IME to '${EMPTY_IME}'`);
await this.adb.enableIME(EMPTY_IME);
await this.adb.setIME(EMPTY_IME);
}
// #endregion