appium-adb 14.1.2 → 14.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/lib/tools/aab-utils.d.ts +5 -4
- package/build/lib/tools/aab-utils.d.ts.map +1 -1
- package/build/lib/tools/aab-utils.js +13 -11
- package/build/lib/tools/aab-utils.js.map +1 -1
- package/build/lib/tools/android-manifest.d.ts +26 -30
- package/build/lib/tools/android-manifest.d.ts.map +1 -1
- package/build/lib/tools/android-manifest.js +33 -47
- package/build/lib/tools/android-manifest.js.map +1 -1
- package/build/lib/tools/apks-utils.d.ts +25 -29
- package/build/lib/tools/apks-utils.d.ts.map +1 -1
- package/build/lib/tools/apks-utils.js +41 -52
- package/build/lib/tools/apks-utils.js.map +1 -1
- package/build/lib/tools/fs-commands.d.ts +25 -30
- package/build/lib/tools/fs-commands.d.ts.map +1 -1
- package/build/lib/tools/fs-commands.js +19 -26
- package/build/lib/tools/fs-commands.js.map +1 -1
- package/build/lib/tools/general-commands.d.ts +36 -58
- package/build/lib/tools/general-commands.d.ts.map +1 -1
- package/build/lib/tools/general-commands.js +41 -47
- package/build/lib/tools/general-commands.js.map +1 -1
- package/build/lib/tools/keyboard-commands.d.ts +27 -36
- package/build/lib/tools/keyboard-commands.d.ts.map +1 -1
- package/build/lib/tools/keyboard-commands.js +24 -34
- package/build/lib/tools/keyboard-commands.js.map +1 -1
- package/build/lib/tools/lockmgmt.d.ts +25 -36
- package/build/lib/tools/lockmgmt.d.ts.map +1 -1
- package/build/lib/tools/lockmgmt.js +34 -38
- package/build/lib/tools/lockmgmt.js.map +1 -1
- package/build/lib/tools/logcat-commands.d.ts +11 -30
- package/build/lib/tools/logcat-commands.d.ts.map +1 -1
- package/build/lib/tools/logcat-commands.js +16 -17
- package/build/lib/tools/logcat-commands.js.map +1 -1
- package/build/lib/tools/network-commands.d.ts +24 -31
- package/build/lib/tools/network-commands.d.ts.map +1 -1
- package/build/lib/tools/network-commands.js +14 -24
- package/build/lib/tools/network-commands.js.map +1 -1
- package/lib/tools/{aab-utils.js → aab-utils.ts} +24 -15
- package/lib/tools/{android-manifest.js → android-manifest.ts} +66 -59
- package/lib/tools/{apks-utils.js → apks-utils.ts} +76 -68
- package/lib/tools/{fs-commands.js → fs-commands.ts} +41 -35
- package/lib/tools/{general-commands.js → general-commands.ts} +71 -68
- package/lib/tools/{keyboard-commands.js → keyboard-commands.ts} +42 -49
- package/lib/tools/{lockmgmt.js → lockmgmt.ts} +71 -56
- package/lib/tools/{logcat-commands.js → logcat-commands.ts} +24 -22
- package/lib/tools/{network-commands.js → network-commands.ts} +42 -34
- package/package.json +1 -1
|
@@ -24,14 +24,15 @@ const KEYCODE_BACK = 4;
|
|
|
24
24
|
* Hides software keyboard if it is visible.
|
|
25
25
|
* Noop if the keyboard is already hidden.
|
|
26
26
|
*
|
|
27
|
-
* @
|
|
28
|
-
* @param {number} [timeoutMs=1000] For how long to wait (in milliseconds)
|
|
27
|
+
* @param timeoutMs - For how long to wait (in milliseconds)
|
|
29
28
|
* until the keyboard is actually hidden.
|
|
30
|
-
* @returns
|
|
29
|
+
* @returns `false` if the keyboard was already hidden
|
|
31
30
|
* @throws {Error} If the keyboard cannot be hidden.
|
|
32
31
|
*/
|
|
33
32
|
async function hideKeyboard(timeoutMs = 1000) {
|
|
34
|
-
|
|
33
|
+
const keyboardState = await this.isSoftKeyboardPresent();
|
|
34
|
+
let { isKeyboardShown } = keyboardState;
|
|
35
|
+
const { canCloseKeyboard } = keyboardState;
|
|
35
36
|
if (!isKeyboardShown) {
|
|
36
37
|
logger_js_1.log.info('Keyboard has no UI; no closing necessary');
|
|
37
38
|
return false;
|
|
@@ -54,8 +55,7 @@ async function hideKeyboard(timeoutMs = 1000) {
|
|
|
54
55
|
/**
|
|
55
56
|
* Retrieve the state of the software keyboard on the device under test.
|
|
56
57
|
*
|
|
57
|
-
* @
|
|
58
|
-
* @return {Promise<import('./types').KeyboardState>} The keyboard state.
|
|
58
|
+
* @return The keyboard state.
|
|
59
59
|
*/
|
|
60
60
|
async function isSoftKeyboardPresent() {
|
|
61
61
|
try {
|
|
@@ -74,8 +74,7 @@ async function isSoftKeyboardPresent() {
|
|
|
74
74
|
/**
|
|
75
75
|
* Send the particular keycode to the device under test.
|
|
76
76
|
*
|
|
77
|
-
* @
|
|
78
|
-
* @param {string|number} keycode - The actual key code to be sent.
|
|
77
|
+
* @param keycode - The actual key code to be sent.
|
|
79
78
|
*/
|
|
80
79
|
async function keyevent(keycode) {
|
|
81
80
|
// keycode must be an int.
|
|
@@ -85,38 +84,35 @@ async function keyevent(keycode) {
|
|
|
85
84
|
/**
|
|
86
85
|
* Retrieve the list of available input methods (IMEs) for the device under test.
|
|
87
86
|
*
|
|
88
|
-
* @
|
|
89
|
-
* @return {Promise<string[]>} The list of IME names or an empty list.
|
|
87
|
+
* @return The list of IME names or an empty list.
|
|
90
88
|
*/
|
|
91
89
|
async function availableIMEs() {
|
|
92
90
|
try {
|
|
93
91
|
return getIMEListFromOutput(await this.shell(['ime', 'list', '-a']));
|
|
94
92
|
}
|
|
95
93
|
catch (e) {
|
|
96
|
-
const err =
|
|
94
|
+
const err = e;
|
|
97
95
|
throw new Error(`Error getting available IME's. Original error: ${err.message}`);
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
98
|
/**
|
|
101
99
|
* Retrieve the list of enabled input methods (IMEs) for the device under test.
|
|
102
100
|
*
|
|
103
|
-
* @
|
|
104
|
-
* @return {Promise<string[]>} The list of enabled IME names or an empty list.
|
|
101
|
+
* @return The list of enabled IME names or an empty list.
|
|
105
102
|
*/
|
|
106
103
|
async function enabledIMEs() {
|
|
107
104
|
try {
|
|
108
105
|
return getIMEListFromOutput(await this.shell(['ime', 'list']));
|
|
109
106
|
}
|
|
110
107
|
catch (e) {
|
|
111
|
-
const err =
|
|
108
|
+
const err = e;
|
|
112
109
|
throw new Error(`Error getting enabled IME's. Original error: ${err.message}`);
|
|
113
110
|
}
|
|
114
111
|
}
|
|
115
112
|
/**
|
|
116
113
|
* Enable the particular input method on the device under test.
|
|
117
114
|
*
|
|
118
|
-
* @
|
|
119
|
-
* @param {string} imeId - One of existing IME ids.
|
|
115
|
+
* @param imeId - One of existing IME ids.
|
|
120
116
|
*/
|
|
121
117
|
async function enableIME(imeId) {
|
|
122
118
|
await this.shell(['ime', 'enable', imeId]);
|
|
@@ -124,8 +120,7 @@ async function enableIME(imeId) {
|
|
|
124
120
|
/**
|
|
125
121
|
* Disable the particular input method on the device under test.
|
|
126
122
|
*
|
|
127
|
-
* @
|
|
128
|
-
* @param {string} imeId - One of existing IME ids.
|
|
123
|
+
* @param imeId - One of existing IME ids.
|
|
129
124
|
*/
|
|
130
125
|
async function disableIME(imeId) {
|
|
131
126
|
await this.shell(['ime', 'disable', imeId]);
|
|
@@ -133,8 +128,7 @@ async function disableIME(imeId) {
|
|
|
133
128
|
/**
|
|
134
129
|
* Set the particular input method on the device under test.
|
|
135
130
|
*
|
|
136
|
-
* @
|
|
137
|
-
* @param {string} imeId - One of existing IME ids.
|
|
131
|
+
* @param imeId - One of existing IME ids.
|
|
138
132
|
*/
|
|
139
133
|
async function setIME(imeId) {
|
|
140
134
|
await this.shell(['ime', 'set', imeId]);
|
|
@@ -142,19 +136,18 @@ async function setIME(imeId) {
|
|
|
142
136
|
/**
|
|
143
137
|
* Get the default input method on the device under test.
|
|
144
138
|
*
|
|
145
|
-
* @
|
|
146
|
-
* @return {Promise<string|null>} The name of the default input method
|
|
139
|
+
* @return The name of the default input method
|
|
147
140
|
*/
|
|
148
141
|
async function defaultIME() {
|
|
149
142
|
try {
|
|
150
|
-
|
|
143
|
+
const engine = await this.getSetting('secure', 'default_input_method');
|
|
151
144
|
if (engine === 'null') {
|
|
152
145
|
return null;
|
|
153
146
|
}
|
|
154
147
|
return engine.trim();
|
|
155
148
|
}
|
|
156
149
|
catch (e) {
|
|
157
|
-
const err =
|
|
150
|
+
const err = e;
|
|
158
151
|
throw new Error(`Error getting default IME. Original error: ${err.message}`);
|
|
159
152
|
}
|
|
160
153
|
}
|
|
@@ -163,8 +156,7 @@ async function defaultIME() {
|
|
|
163
156
|
* The text gets properly escaped before being passed to ADB.
|
|
164
157
|
* Noop if the text is empty.
|
|
165
158
|
*
|
|
166
|
-
* @
|
|
167
|
-
* @param {string|number} text - The actual text to be sent.
|
|
159
|
+
* @param text - The actual text to be sent.
|
|
168
160
|
* @throws {Error} If it is impossible to escape the given string
|
|
169
161
|
*/
|
|
170
162
|
async function inputText(text) {
|
|
@@ -189,14 +181,13 @@ async function inputText(text) {
|
|
|
189
181
|
* Executes the given function with the given input method context
|
|
190
182
|
* and then restores the IME to the original value
|
|
191
183
|
*
|
|
192
|
-
* @
|
|
193
|
-
* @param
|
|
194
|
-
* @
|
|
195
|
-
* @returns {Promise<any>} The result of the given function
|
|
184
|
+
* @param ime - Valid IME identifier
|
|
185
|
+
* @param fn - Function to execute
|
|
186
|
+
* @returns The result of the given function
|
|
196
187
|
*/
|
|
197
188
|
async function runInImeContext(ime, fn) {
|
|
198
189
|
// This is needed to properly apply new IME on some devices
|
|
199
|
-
const cycleImeState = async (
|
|
190
|
+
const cycleImeState = async (name) => {
|
|
200
191
|
try {
|
|
201
192
|
await this.disableIME(name);
|
|
202
193
|
await this.enableIME(name);
|
|
@@ -228,11 +219,10 @@ async function runInImeContext(ime, fn) {
|
|
|
228
219
|
}
|
|
229
220
|
// #region Private function
|
|
230
221
|
/**
|
|
231
|
-
* @param
|
|
232
|
-
* @returns
|
|
222
|
+
* @param stdout
|
|
223
|
+
* @returns
|
|
233
224
|
*/
|
|
234
225
|
function getIMEListFromOutput(stdout) {
|
|
235
|
-
/** @type {string[]} */
|
|
236
226
|
const engines = [];
|
|
237
227
|
for (const line of stdout.split('\n')) {
|
|
238
228
|
if (line.length > 0 && line[0] !== ' ') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-commands.js","sourceRoot":"","sources":["../../../lib/tools/keyboard-commands.
|
|
1
|
+
{"version":3,"file":"keyboard-commands.js","sourceRoot":"","sources":["../../../lib/tools/keyboard-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,29 @@
|
|
|
1
|
+
import type { ADB } from '../adb.js';
|
|
1
2
|
/**
|
|
2
3
|
* Check whether the device supports lock settings management with `locksettings`
|
|
3
4
|
* command line tool. This tool has been added to Android toolset since API 27 Oreo
|
|
4
5
|
*
|
|
5
|
-
* @
|
|
6
|
-
* @return {Promise<boolean>} True if the management is supported. The result is cached per ADB instance
|
|
6
|
+
* @return True if the management is supported. The result is cached per ADB instance
|
|
7
7
|
*/
|
|
8
|
-
export function isLockManagementSupported(this:
|
|
9
|
-
export class isLockManagementSupported {
|
|
10
|
-
_isLockManagementSupported: boolean;
|
|
11
|
-
}
|
|
8
|
+
export declare function isLockManagementSupported(this: ADB): Promise<boolean>;
|
|
12
9
|
/**
|
|
13
10
|
* Check whether the given credential is matches to the currently set one.
|
|
14
11
|
*
|
|
15
|
-
* @
|
|
16
|
-
* @param {string?} [credential=null] The credential value. It could be either
|
|
12
|
+
* @param credential - The credential value. It could be either
|
|
17
13
|
* pin, password or a pattern. A pattern is specified by a non-separated list
|
|
18
14
|
* of numbers that index the cell on the pattern in a 1-based manner in left
|
|
19
15
|
* to right and top to bottom order, i.e. the top-left cell is indexed with 1,
|
|
20
16
|
* whereas the bottom-right cell is indexed with 9. Example: 1234.
|
|
21
17
|
* null/empty value assumes the device has no lock currently set.
|
|
22
|
-
* @return
|
|
18
|
+
* @return True if the given credential matches to the device's one
|
|
23
19
|
* @throws {Error} If the verification faces an unexpected error
|
|
24
20
|
*/
|
|
25
|
-
export function verifyLockCredential(this:
|
|
21
|
+
export declare function verifyLockCredential(this: ADB, credential?: string | null): Promise<boolean>;
|
|
26
22
|
/**
|
|
27
23
|
* Clears current lock credentials. Usually it takes several seconds for a device to
|
|
28
24
|
* sync the credential state after this method returns.
|
|
29
25
|
*
|
|
30
|
-
* @
|
|
31
|
-
* @param {string?} [credential=null] The credential value. It could be either
|
|
26
|
+
* @param credential - The credential value. It could be either
|
|
32
27
|
* pin, password or a pattern. A pattern is specified by a non-separated list
|
|
33
28
|
* of numbers that index the cell on the pattern in a 1-based manner in left
|
|
34
29
|
* to right and top to bottom order, i.e. the top-left cell is indexed with 1,
|
|
@@ -36,58 +31,52 @@ export function verifyLockCredential(this: import("../adb.js").ADB, credential?:
|
|
|
36
31
|
* null/empty value assumes the device has no lock currently set.
|
|
37
32
|
* @throws {Error} If operation faces an unexpected error
|
|
38
33
|
*/
|
|
39
|
-
export function clearLockCredential(this:
|
|
34
|
+
export declare function clearLockCredential(this: ADB, credential?: string | null): Promise<void>;
|
|
40
35
|
/**
|
|
41
36
|
* Checks whether the device is locked with a credential (either pin or a password
|
|
42
37
|
* or a pattern).
|
|
43
38
|
*
|
|
44
|
-
* @
|
|
45
|
-
* @returns {Promise<boolean>} `true` if the device is locked
|
|
39
|
+
* @returns `true` if the device is locked
|
|
46
40
|
* @throws {Error} If operation faces an unexpected error
|
|
47
41
|
*/
|
|
48
|
-
export function isLockEnabled(this:
|
|
42
|
+
export declare function isLockEnabled(this: ADB): Promise<boolean>;
|
|
49
43
|
/**
|
|
50
44
|
* Sets the device lock.
|
|
51
45
|
*
|
|
52
|
-
* @
|
|
53
|
-
* @param
|
|
54
|
-
* @param {string} credential A non-empty credential value to be set.
|
|
46
|
+
* @param credentialType - One of: password, pin, pattern.
|
|
47
|
+
* @param credential - A non-empty credential value to be set.
|
|
55
48
|
* Make sure your new credential matches to the actual system security requirements,
|
|
56
49
|
* e.g. a minimum password length. A pattern is specified by a non-separated list
|
|
57
50
|
* of numbers that index the cell on the pattern in a 1-based manner in left
|
|
58
51
|
* to right and top to bottom order, i.e. the top-left cell is indexed with 1,
|
|
59
52
|
* whereas the bottom-right cell is indexed with 9. Example: 1234.
|
|
60
|
-
* @param
|
|
53
|
+
* @param oldCredential - An old credential string.
|
|
61
54
|
* It is only required to be set in case you need to change the current
|
|
62
55
|
* credential rather than to set a new one. Setting it to a wrong value will
|
|
63
56
|
* make this method to fail and throw an exception.
|
|
64
57
|
* @throws {Error} If there was a failure while verifying input arguments or setting
|
|
65
58
|
* the credential
|
|
66
59
|
*/
|
|
67
|
-
export function setLockCredential(this:
|
|
60
|
+
export declare function setLockCredential(this: ADB, credentialType: string, credential: string, oldCredential?: string | null): Promise<void>;
|
|
68
61
|
/**
|
|
69
62
|
* Retrieve the screen lock state of the device under test.
|
|
70
63
|
*
|
|
71
|
-
* @
|
|
72
|
-
* @return {Promise<boolean>} True if the device is locked.
|
|
64
|
+
* @return True if the device is locked.
|
|
73
65
|
*/
|
|
74
|
-
export function isScreenLocked(this:
|
|
66
|
+
export declare function isScreenLocked(this: ADB): Promise<boolean>;
|
|
75
67
|
/**
|
|
76
68
|
* Dismisses keyguard overlay.
|
|
77
|
-
* @this {import('../adb.js').ADB}
|
|
78
69
|
*/
|
|
79
|
-
export function dismissKeyguard(this:
|
|
70
|
+
export declare function dismissKeyguard(this: ADB): Promise<void>;
|
|
80
71
|
/**
|
|
81
72
|
* Presses the corresponding key combination to make sure the device's screen
|
|
82
73
|
* is not turned off and is locked if the latter is enabled.
|
|
83
|
-
* @this {import('../adb.js').ADB}
|
|
84
74
|
*/
|
|
85
|
-
export function cycleWakeUp(this:
|
|
75
|
+
export declare function cycleWakeUp(this: ADB): Promise<void>;
|
|
86
76
|
/**
|
|
87
77
|
* Send the special keycode to the device under test in order to lock it.
|
|
88
|
-
* @this {import('../adb.js').ADB}
|
|
89
78
|
*/
|
|
90
|
-
export function lock(this:
|
|
79
|
+
export declare function lock(this: ADB): Promise<void>;
|
|
91
80
|
/**
|
|
92
81
|
* Checks mShowingLockscreen or mDreamingLockscreen in dumpsys output to determine
|
|
93
82
|
* if lock screen is showing
|
|
@@ -101,16 +90,16 @@ export function lock(this: import("../adb.js").ADB): Promise<void>;
|
|
|
101
90
|
* Some devices such as Android TV do not have keyguard, so we should keep
|
|
102
91
|
* screen condition as this primary method.
|
|
103
92
|
*
|
|
104
|
-
* @param
|
|
105
|
-
* @return
|
|
93
|
+
* @param dumpsys - The output of dumpsys window command.
|
|
94
|
+
* @return True if lock screen is showing.
|
|
106
95
|
*/
|
|
107
|
-
export function isShowingLockscreen(dumpsys: string): boolean;
|
|
96
|
+
export declare function isShowingLockscreen(dumpsys: string): boolean;
|
|
108
97
|
/**
|
|
109
98
|
* Checks screenState has SCREEN_STATE_OFF in dumpsys output to determine
|
|
110
99
|
* possible lock screen.
|
|
111
100
|
*
|
|
112
|
-
* @param
|
|
113
|
-
* @return
|
|
101
|
+
* @param dumpsys - The output of dumpsys window command.
|
|
102
|
+
* @return True if lock screen is showing.
|
|
114
103
|
*/
|
|
115
|
-
export function isScreenStateOff(dumpsys: string): boolean;
|
|
104
|
+
export declare function isScreenStateOff(dumpsys: string): boolean;
|
|
116
105
|
//# sourceMappingURL=lockmgmt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockmgmt.d.ts","sourceRoot":"","sources":["../../../lib/tools/lockmgmt.
|
|
1
|
+
{"version":3,"file":"lockmgmt.d.ts","sourceRoot":"","sources":["../../../lib/tools/lockmgmt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAkDnC;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,GAAG,EACT,UAAU,GAAE,MAAM,GAAG,IAAW,GAC/B,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,GAAG,EACT,UAAU,GAAE,MAAM,GAAG,IAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,GAAG,EACT,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,GAAE,MAAM,GAAG,IAAW,GAClC,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAYhE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB9D;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnD;AA4CD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -25,14 +25,14 @@ const KEYCODE_POWER = 26;
|
|
|
25
25
|
const KEYCODE_WAKEUP = 224; // works over API Level 20
|
|
26
26
|
const HIDE_KEYBOARD_WAIT_TIME = 100;
|
|
27
27
|
/**
|
|
28
|
-
* @param
|
|
29
|
-
* @param
|
|
30
|
-
* @param
|
|
28
|
+
* @param verb
|
|
29
|
+
* @param oldCredential
|
|
30
|
+
* @param args
|
|
31
31
|
*/
|
|
32
32
|
function buildCommand(verb, oldCredential = null, ...args) {
|
|
33
33
|
const cmd = ['locksettings', verb];
|
|
34
|
-
if (!lodash_1.default.isEmpty(oldCredential)) {
|
|
35
|
-
cmd.push('--old',
|
|
34
|
+
if (oldCredential && !lodash_1.default.isEmpty(oldCredential)) {
|
|
35
|
+
cmd.push('--old', oldCredential);
|
|
36
36
|
}
|
|
37
37
|
if (!lodash_1.default.isEmpty(args)) {
|
|
38
38
|
cmd.push(...args);
|
|
@@ -42,8 +42,7 @@ function buildCommand(verb, oldCredential = null, ...args) {
|
|
|
42
42
|
/**
|
|
43
43
|
* Performs swipe up gesture on the screen
|
|
44
44
|
*
|
|
45
|
-
* @
|
|
46
|
-
* @param {string} windowDumpsys The output of `adb shell dumpsys window` command
|
|
45
|
+
* @param windowDumpsys The output of `adb shell dumpsys window` command
|
|
47
46
|
* @throws {Error} If the display size cannot be retrieved
|
|
48
47
|
*/
|
|
49
48
|
async function swipeUp(windowDumpsys) {
|
|
@@ -68,8 +67,7 @@ async function swipeUp(windowDumpsys) {
|
|
|
68
67
|
* Check whether the device supports lock settings management with `locksettings`
|
|
69
68
|
* command line tool. This tool has been added to Android toolset since API 27 Oreo
|
|
70
69
|
*
|
|
71
|
-
* @
|
|
72
|
-
* @return {Promise<boolean>} True if the management is supported. The result is cached per ADB instance
|
|
70
|
+
* @return True if the management is supported. The result is cached per ADB instance
|
|
73
71
|
*/
|
|
74
72
|
async function isLockManagementSupported() {
|
|
75
73
|
if (!lodash_1.default.isBoolean(this._isLockManagementSupported)) {
|
|
@@ -88,14 +86,13 @@ async function isLockManagementSupported() {
|
|
|
88
86
|
/**
|
|
89
87
|
* Check whether the given credential is matches to the currently set one.
|
|
90
88
|
*
|
|
91
|
-
* @
|
|
92
|
-
* @param {string?} [credential=null] The credential value. It could be either
|
|
89
|
+
* @param credential - The credential value. It could be either
|
|
93
90
|
* pin, password or a pattern. A pattern is specified by a non-separated list
|
|
94
91
|
* of numbers that index the cell on the pattern in a 1-based manner in left
|
|
95
92
|
* to right and top to bottom order, i.e. the top-left cell is indexed with 1,
|
|
96
93
|
* whereas the bottom-right cell is indexed with 9. Example: 1234.
|
|
97
94
|
* null/empty value assumes the device has no lock currently set.
|
|
98
|
-
* @return
|
|
95
|
+
* @return True if the given credential matches to the device's one
|
|
99
96
|
* @throws {Error} If the verification faces an unexpected error
|
|
100
97
|
*/
|
|
101
98
|
async function verifyLockCredential(credential = null) {
|
|
@@ -113,15 +110,16 @@ async function verifyLockCredential(credential = null) {
|
|
|
113
110
|
}
|
|
114
111
|
catch (e) {
|
|
115
112
|
throw new Error(`Device lock credential verification failed. ` +
|
|
116
|
-
`Original error: ${e.stderr
|
|
113
|
+
`Original error: ${e.stderr
|
|
114
|
+
|| e.stdout
|
|
115
|
+
|| e.message}`);
|
|
117
116
|
}
|
|
118
117
|
}
|
|
119
118
|
/**
|
|
120
119
|
* Clears current lock credentials. Usually it takes several seconds for a device to
|
|
121
120
|
* sync the credential state after this method returns.
|
|
122
121
|
*
|
|
123
|
-
* @
|
|
124
|
-
* @param {string?} [credential=null] The credential value. It could be either
|
|
122
|
+
* @param credential - The credential value. It could be either
|
|
125
123
|
* pin, password or a pattern. A pattern is specified by a non-separated list
|
|
126
124
|
* of numbers that index the cell on the pattern in a 1-based manner in left
|
|
127
125
|
* to right and top to bottom order, i.e. the top-left cell is indexed with 1,
|
|
@@ -140,15 +138,16 @@ async function clearLockCredential(credential = null) {
|
|
|
140
138
|
}
|
|
141
139
|
catch (e) {
|
|
142
140
|
throw new Error(`Cannot clear device lock credential. ` +
|
|
143
|
-
`Original error: ${e.stderr
|
|
141
|
+
`Original error: ${e.stderr
|
|
142
|
+
|| e.stdout
|
|
143
|
+
|| e.message}`);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
147
147
|
* Checks whether the device is locked with a credential (either pin or a password
|
|
148
148
|
* or a pattern).
|
|
149
149
|
*
|
|
150
|
-
* @
|
|
151
|
-
* @returns {Promise<boolean>} `true` if the device is locked
|
|
150
|
+
* @returns `true` if the device is locked
|
|
152
151
|
* @throws {Error} If operation faces an unexpected error
|
|
153
152
|
*/
|
|
154
153
|
async function isLockEnabled() {
|
|
@@ -172,15 +171,14 @@ async function isLockEnabled() {
|
|
|
172
171
|
/**
|
|
173
172
|
* Sets the device lock.
|
|
174
173
|
*
|
|
175
|
-
* @
|
|
176
|
-
* @param
|
|
177
|
-
* @param {string} credential A non-empty credential value to be set.
|
|
174
|
+
* @param credentialType - One of: password, pin, pattern.
|
|
175
|
+
* @param credential - A non-empty credential value to be set.
|
|
178
176
|
* Make sure your new credential matches to the actual system security requirements,
|
|
179
177
|
* e.g. a minimum password length. A pattern is specified by a non-separated list
|
|
180
178
|
* of numbers that index the cell on the pattern in a 1-based manner in left
|
|
181
179
|
* to right and top to bottom order, i.e. the top-left cell is indexed with 1,
|
|
182
180
|
* whereas the bottom-right cell is indexed with 9. Example: 1234.
|
|
183
|
-
* @param
|
|
181
|
+
* @param oldCredential - An old credential string.
|
|
184
182
|
* It is only required to be set in case you need to change the current
|
|
185
183
|
* credential rather than to set a new one. Setting it to a wrong value will
|
|
186
184
|
* make this method to fail and throw an exception.
|
|
@@ -206,14 +204,15 @@ async function setLockCredential(credentialType, credential, oldCredential = nul
|
|
|
206
204
|
}
|
|
207
205
|
catch (e) {
|
|
208
206
|
throw new Error(`Setting of device lock ${credentialType} credential failed. ` +
|
|
209
|
-
`Original error: ${e.stderr
|
|
207
|
+
`Original error: ${e.stderr
|
|
208
|
+
|| e.stdout
|
|
209
|
+
|| e.message}`);
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
/**
|
|
213
213
|
* Retrieve the screen lock state of the device under test.
|
|
214
214
|
*
|
|
215
|
-
* @
|
|
216
|
-
* @return {Promise<boolean>} True if the device is locked.
|
|
215
|
+
* @return True if the device is locked.
|
|
217
216
|
*/
|
|
218
217
|
async function isScreenLocked() {
|
|
219
218
|
const [windowOutput, powerOutput] = await bluebird_1.default.all([
|
|
@@ -228,7 +227,6 @@ async function isScreenLocked() {
|
|
|
228
227
|
}
|
|
229
228
|
/**
|
|
230
229
|
* Dismisses keyguard overlay.
|
|
231
|
-
* @this {import('../adb.js').ADB}
|
|
232
230
|
*/
|
|
233
231
|
async function dismissKeyguard() {
|
|
234
232
|
logger_js_1.log.info('Waking up the device to dismiss the keyguard');
|
|
@@ -256,7 +254,6 @@ async function dismissKeyguard() {
|
|
|
256
254
|
/**
|
|
257
255
|
* Presses the corresponding key combination to make sure the device's screen
|
|
258
256
|
* is not turned off and is locked if the latter is enabled.
|
|
259
|
-
* @this {import('../adb.js').ADB}
|
|
260
257
|
*/
|
|
261
258
|
async function cycleWakeUp() {
|
|
262
259
|
await this.keyevent(KEYCODE_POWER);
|
|
@@ -264,7 +261,6 @@ async function cycleWakeUp() {
|
|
|
264
261
|
}
|
|
265
262
|
/**
|
|
266
263
|
* Send the special keycode to the device under test in order to lock it.
|
|
267
|
-
* @this {import('../adb.js').ADB}
|
|
268
264
|
*/
|
|
269
265
|
async function lock() {
|
|
270
266
|
if (await this.isScreenLocked()) {
|
|
@@ -290,8 +286,8 @@ async function lock() {
|
|
|
290
286
|
* Default is true.
|
|
291
287
|
* Note: this key
|
|
292
288
|
*
|
|
293
|
-
* @param
|
|
294
|
-
* @returns
|
|
289
|
+
* @param dumpsys
|
|
290
|
+
* @returns
|
|
295
291
|
*/
|
|
296
292
|
function isScreenOnFully(dumpsys) {
|
|
297
293
|
const m = /mScreenOnFully=\w+/gi.exec(dumpsys);
|
|
@@ -302,8 +298,8 @@ function isScreenOnFully(dumpsys) {
|
|
|
302
298
|
/**
|
|
303
299
|
* Checks mCurrentFocus in dumpsys output to determine if Keyguard is activated
|
|
304
300
|
*
|
|
305
|
-
* @param
|
|
306
|
-
* @returns
|
|
301
|
+
* @param dumpsys
|
|
302
|
+
* @returns
|
|
307
303
|
*/
|
|
308
304
|
function isCurrentFocusOnKeyguard(dumpsys) {
|
|
309
305
|
const m = /mCurrentFocus.+Keyguard/gi.exec(dumpsys);
|
|
@@ -312,8 +308,8 @@ function isCurrentFocusOnKeyguard(dumpsys) {
|
|
|
312
308
|
/**
|
|
313
309
|
* Check the current device power state to determine if it is locked
|
|
314
310
|
*
|
|
315
|
-
* @param
|
|
316
|
-
* @returns
|
|
311
|
+
* @param dumpsys The `adb shell dumpsys power` output
|
|
312
|
+
* @returns True if lock screen is shown
|
|
317
313
|
*/
|
|
318
314
|
function isInDozingMode(dumpsys) {
|
|
319
315
|
// On some phones/tablets we were observing mWakefulness=Dozing
|
|
@@ -333,8 +329,8 @@ function isInDozingMode(dumpsys) {
|
|
|
333
329
|
* Some devices such as Android TV do not have keyguard, so we should keep
|
|
334
330
|
* screen condition as this primary method.
|
|
335
331
|
*
|
|
336
|
-
* @param
|
|
337
|
-
* @return
|
|
332
|
+
* @param dumpsys - The output of dumpsys window command.
|
|
333
|
+
* @return True if lock screen is showing.
|
|
338
334
|
*/
|
|
339
335
|
function isShowingLockscreen(dumpsys) {
|
|
340
336
|
return (lodash_1.default.some(['mShowingLockscreen=true', 'mDreamingLockscreen=true'], (x) => dumpsys.includes(x)) ||
|
|
@@ -345,8 +341,8 @@ function isShowingLockscreen(dumpsys) {
|
|
|
345
341
|
* Checks screenState has SCREEN_STATE_OFF in dumpsys output to determine
|
|
346
342
|
* possible lock screen.
|
|
347
343
|
*
|
|
348
|
-
* @param
|
|
349
|
-
* @return
|
|
344
|
+
* @param dumpsys - The output of dumpsys window command.
|
|
345
|
+
* @return True if lock screen is showing.
|
|
350
346
|
*/
|
|
351
347
|
function isScreenStateOff(dumpsys) {
|
|
352
348
|
return /\s+screenState=SCREEN_STATE_OFF/i.test(dumpsys);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockmgmt.js","sourceRoot":"","sources":["../../../lib/tools/lockmgmt.
|
|
1
|
+
{"version":3,"file":"lockmgmt.js","sourceRoot":"","sources":["../../../lib/tools/lockmgmt.ts"],"names":[],"mappings":"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"}
|