appium-android-driver 5.12.2 → 5.13.0
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
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [5.13.0](https://github.com/appium/appium-android-driver/compare/v5.12.2...v5.13.0) (2023-05-22)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* Add a wrapper over status bar commands ([#812](https://github.com/appium/appium-android-driver/issues/812)) ([dc9163a](https://github.com/appium/appium-android-driver/commit/dc9163a70ae921e4712f3ec7b7f8b7eb12656038))
|
|
7
|
+
|
|
1
8
|
## [5.12.2](https://github.com/appium/appium-android-driver/compare/v5.12.1...v5.12.2) (2023-05-18)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -9,6 +9,8 @@ exports.parseWindowProperties = parseWindowProperties;
|
|
|
9
9
|
exports.parseWindows = parseWindows;
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
12
|
+
var _utils = require("../utils");
|
|
13
|
+
var _driver = require("appium/driver");
|
|
12
14
|
const WINDOW_TITLE_PATTERN = /^\s+Window\s#\d+\sWindow\{[0-9a-f]+\s\w+\s([\w-]+)\}:$/;
|
|
13
15
|
const FRAME_PATTERN = /\bm?[Ff]rame=\[([0-9.-]+),([0-9.-]+)\]\[([0-9.-]+),([0-9.-]+)\]/;
|
|
14
16
|
const VIEW_VISIBILITY_PATTERN = /\bmViewVisibility=(0x[0-9a-fA-F]+)/;
|
|
@@ -92,6 +94,19 @@ commands.getSystemBars = async function getSystemBars() {
|
|
|
92
94
|
}
|
|
93
95
|
return parseWindows(stdout, this.log);
|
|
94
96
|
};
|
|
97
|
+
commands.mobilePerformStatusBarCommand = async function mobilePerformStatusBarCommand(opts = {}) {
|
|
98
|
+
const {
|
|
99
|
+
command
|
|
100
|
+
} = (0, _utils.requireArgs)('command', opts);
|
|
101
|
+
const toStatusBarCommandCallable = (cmd, argsCallable = null) => async () => await this.adb.shell(['cmd', 'statusbar', cmd, ...(argsCallable ? argsCallable() : [])]);
|
|
102
|
+
const tileCommandArgsCallable = () => (0, _utils.requireArgs)('component', opts).component;
|
|
103
|
+
const statusBarCommands = _lodash.default.fromPairs([['expandNotifications', ['expand-notifications']], ['expandSettings', ['expand-settings']], ['collapse', ['collapse']], ['addTile', ['add-tile', tileCommandArgsCallable]], ['removeTile', ['remove-tile', tileCommandArgsCallable]], ['clickTile', ['click-tile', tileCommandArgsCallable]], ['getStatusIcons', ['get-status-icons']]].map(([name, args]) => [name, toStatusBarCommandCallable(...args)]));
|
|
104
|
+
const action = statusBarCommands[command];
|
|
105
|
+
if (!action) {
|
|
106
|
+
throw new _driver.errors.InvalidArgumentError(`The '${command}' status bar command is unknown. Only the following commands ` + `are supported: ${_lodash.default.keys(statusBarCommands)}`);
|
|
107
|
+
}
|
|
108
|
+
return await action();
|
|
109
|
+
};
|
|
95
110
|
var _default = commands;
|
|
96
111
|
exports.default = _default;
|
|
97
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJXSU5ET1dfVElUTEVfUEFUVEVSTiIsIkZSQU1FX1BBVFRFUk4iLCJWSUVXX1ZJU0lCSUxJVFlfUEFUVEVSTiIsIlZJRVdfVklTSUJMRSIsIlNUQVRVU19CQVJfV0lORE9XX05BTUVfUFJFRklYIiwiTkFWSUdBVElPTl9CQVJfV0lORE9XX05BTUVfUFJFRklYIiwiREVGQVVMVF9XSU5ET1dfUFJPUEVSVElFUyIsInZpc2libGUiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tbWFuZHMiLCJwYXJzZVdpbmRvd1Byb3BlcnRpZXMiLCJuYW1lIiwicHJvcHMiLCJsb2ciLCJyZXN1bHQiLCJfIiwiY2xvbmVEZWVwIiwicHJvcExpbmVzIiwiam9pbiIsImZyYW1lTWF0Y2giLCJleGVjIiwiZGVidWciLCJFcnJvciIsInBhcnNlRmxvYXQiLCJ2aXNpYmlsaXR5TWF0Y2giLCJwYXJzZUludCIsInBhcnNlV2luZG93cyIsImxpbmVzIiwid2luZG93cyIsImN1cnJlbnRXaW5kb3dOYW1lIiwibGluZSIsInNwbGl0IiwibWFwIiwidHJpbUVuZCIsIm1hdGNoIiwidHJpbSIsImxlbmd0aCIsImlzQXJyYXkiLCJwdXNoIiwiaXNFbXB0eSIsInN0YXR1c0JhciIsIm5hdmlnYXRpb25CYXIiLCJ0b1BhaXJzIiwic3RhcnRzV2l0aCIsInVubWF0Y2hlZFdpbmRvd3MiLCJmaWx0ZXIiLCJpc05pbCIsIndpbmRvdyIsIm5hbWVQcmVmaXgiLCJpbmZvIiwia2V5cyIsImdldFN5c3RlbUJhcnMiLCJzdGRvdXQiLCJhZGIiLCJzaGVsbCIsImUiLCJtZXNzYWdlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jb21tYW5kcy9zeXN0ZW0tYmFycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBXSU5ET1dfVElUTEVfUEFUVEVSTiA9IC9eXFxzK1dpbmRvd1xccyNcXGQrXFxzV2luZG93XFx7WzAtOWEtZl0rXFxzXFx3K1xccyhbXFx3LV0rKVxcfTokLztcbmNvbnN0IEZSQU1FX1BBVFRFUk4gPSAvXFxibT9bRmZdcmFtZT1cXFsoWzAtOS4tXSspLChbMC05Li1dKylcXF1cXFsoWzAtOS4tXSspLChbMC05Li1dKylcXF0vO1xuY29uc3QgVklFV19WSVNJQklMSVRZX1BBVFRFUk4gPSAvXFxibVZpZXdWaXNpYmlsaXR5PSgweFswLTlhLWZBLUZdKykvO1xuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvdmlldy9WaWV3I1ZJU0lCTEVcbmNvbnN0IFZJRVdfVklTSUJMRSA9IDB4MDtcbmNvbnN0IFNUQVRVU19CQVJfV0lORE9XX05BTUVfUFJFRklYID0gJ1N0YXR1c0Jhcic7XG5jb25zdCBOQVZJR0FUSU9OX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVggPSAnTmF2aWdhdGlvbkJhcic7XG5jb25zdCBERUZBVUxUX1dJTkRPV19QUk9QRVJUSUVTID0ge1xuICB2aXNpYmxlOiBmYWxzZSxcbiAgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCxcbn07XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2luZG93UHJvcGVydGllc1xuICogQHByb3BlcnR5IHtib29sZWFufSB2aXNpYmxlIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyB2aXNpYmxlXG4gKiBAcHJvcGVydHkge251bWJlcn0geCBXaW5kb3cgeCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkge251bWJlcn0geSBXaW5kb3cgeSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggV2luZG93IHdpZHRoXG4gKiBAcHJvcGVydHkge251bWJlcn0gaGVpZ2h0IFdpbmRvdyBoZWlnaHRcbiAqL1xuXG4vKipcbiAqIFBhcnNlcyB3aW5kb3cgcHJvcGVydGllcyBmcm9tIGFkYiBkdW1wc3lzIG91dHB1dFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cgd2hvc2UgcHJvcGVydGllcyBhcmUgYmVpbmcgcGFyc2VkXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHByb3BzIFRoZSBsaXN0IG9mIHBhcnRpY3VsYXIgd2luZG93IHByb3BlcnR5IGxpbmVzLlxuICogQ2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCB0ZXN0cyBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBpbnB1dCBmb3JtYXQuXG4gKiBAcGFyYW0ge09iamVjdD99IGxvZyBMb2dnZXIgaW5zdGFuY2VcbiAqIEByZXR1cm5zIHtXaW5kb3dQcm9wZXJ0aWVzfSBQYXJzZWQgcHJvcGVydGllcyBvYmplY3RcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gaXNzdWUgd2hpbGUgcGFyc2luZyB0aGUgcHJvcGVydGllcyBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gcGFyc2VXaW5kb3dQcm9wZXJ0aWVzIChuYW1lLCBwcm9wcywgbG9nID0gbnVsbCkge1xuICBjb25zdCByZXN1bHQgPSBfLmNsb25lRGVlcChERUZBVUxUX1dJTkRPV19QUk9QRVJUSUVTKTtcbiAgY29uc3QgcHJvcExpbmVzID0gcHJvcHMuam9pbignXFxuJyk7XG4gIGNvbnN0IGZyYW1lTWF0Y2ggPSBGUkFNRV9QQVRURVJOLmV4ZWMocHJvcExpbmVzKTtcbiAgaWYgKCFmcmFtZU1hdGNoKSB7XG4gICAgbG9nPy5kZWJ1Zyhwcm9wTGluZXMpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIHRoZSBmcmFtZSBzaXplIGZyb20gJyR7bmFtZX0nIHdpbmRvdyBwcm9wZXJ0aWVzYCk7XG4gIH1cbiAgcmVzdWx0LnggPSBwYXJzZUZsb2F0KGZyYW1lTWF0Y2hbMV0pO1xuICByZXN1bHQueSA9IHBhcnNlRmxvYXQoZnJhbWVNYXRjaFsyXSk7XG4gIHJlc3VsdC53aWR0aCA9IHBhcnNlRmxvYXQoZnJhbWVNYXRjaFszXSkgLSByZXN1bHQueDtcbiAgcmVzdWx0LmhlaWdodCA9IHBhcnNlRmxvYXQoZnJhbWVNYXRjaFs0XSkgLSByZXN1bHQueTtcbiAgY29uc3QgdmlzaWJpbGl0eU1hdGNoID0gVklFV19WSVNJQklMSVRZX1BBVFRFUk4uZXhlYyhwcm9wTGluZXMpO1xuICBpZiAoIXZpc2liaWxpdHlNYXRjaCkge1xuICAgIGxvZz8uZGVidWcocHJvcExpbmVzKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgdmlzaWJpbGl0eSB2YWx1ZSBmcm9tICcke25hbWV9JyB3aW5kb3cgcHJvcGVydGllc2ApO1xuICB9XG4gIHJlc3VsdC52aXNpYmxlID0gcGFyc2VJbnQodmlzaWJpbGl0eU1hdGNoWzFdLCAxNikgPT09IFZJRVdfVklTSUJMRTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBzdGF0dXMgYW5kIG5hdmlnYXRpb24gYmFyIGluZm9ybWF0aW9uIGZyb20gdGhlIHdpbmRvdyBtYW5hZ2VyIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGxpbmVzIE91dHB1dCBmcm9tIGR1bXBzeXMgY29tbWFuZC5cbiAqIENoZWNrIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQgdGVzdHMgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgaW5wdXQgZm9ybWF0LlxuICogQHBhcmFtIHtPYmplY3Q/fSBsb2cgTG9nZ2VyIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtPYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHR3byBpdGVtcyB3aGVyZSBrZXlzIGFyZSBzdGF0dXNCYXIgYW5kIG5hdmlnYXRpb25CYXIsXG4gKiBhbmQgdmFsdWVzIGFyZSBjb3JyZXNwb25kaW5nIFdpbmRvd1Byb3BlcnRpZXMgb2JqZWN0c1xuICogQHRocm93cyB7RXJyb3J9IElmIG5vIHdpbmRvdyBwcm9wZXJ0aWVzIGNvdWxkIGJlIHBhcnNlZFxuICovXG5mdW5jdGlvbiBwYXJzZVdpbmRvd3MgKGxpbmVzLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IHdpbmRvd3MgPSB7fTtcbiAgbGV0IGN1cnJlbnRXaW5kb3dOYW1lID0gbnVsbDtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNwbGl0KCdcXG4nKS5tYXAoXy50cmltRW5kKSkge1xuICAgIGNvbnN0IG1hdGNoID0gV0lORE9XX1RJVExFX1BBVFRFUk4uZXhlYyhsaW5lKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGN1cnJlbnRXaW5kb3dOYW1lID0gbWF0Y2hbMV07XG4gICAgICB3aW5kb3dzW2N1cnJlbnRXaW5kb3dOYW1lXSA9IFtdO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChfLnRyaW0obGluZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjdXJyZW50V2luZG93TmFtZSA9IG51bGw7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFdpbmRvd05hbWUgJiYgXy5pc0FycmF5KHdpbmRvd3NbY3VycmVudFdpbmRvd05hbWVdKSkge1xuICAgICAgd2luZG93c1tjdXJyZW50V2luZG93TmFtZV0ucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cbiAgaWYgKF8uaXNFbXB0eSh3aW5kb3dzKSkge1xuICAgIGxvZz8uZGVidWcobGluZXMuam9pbignXFxuJykpO1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHBhcnNlIGFueSB3aW5kb3cgaW5mb3JtYXRpb24gZnJvbSB0aGUgZHVtcHN5cyBvdXRwdXQnKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtzdGF0dXNCYXI6IG51bGwsIG5hdmlnYXRpb25CYXI6IG51bGx9O1xuICBmb3IgKGNvbnN0IFtuYW1lLCBwcm9wc10gb2YgXy50b1BhaXJzKHdpbmRvd3MpKSB7XG4gICAgaWYgKG5hbWUuc3RhcnRzV2l0aChTVEFUVVNfQkFSX1dJTkRPV19OQU1FX1BSRUZJWCkpIHtcbiAgICAgIHJlc3VsdC5zdGF0dXNCYXIgPSBwYXJzZVdpbmRvd1Byb3BlcnRpZXMobmFtZSwgcHJvcHMsIGxvZyk7XG4gICAgfSBlbHNlIGlmIChuYW1lLnN0YXJ0c1dpdGgoTkFWSUdBVElPTl9CQVJfV0lORE9XX05BTUVfUFJFRklYKSkge1xuICAgICAgcmVzdWx0Lm5hdmlnYXRpb25CYXIgPSBwYXJzZVdpbmRvd1Byb3BlcnRpZXMobmFtZSwgcHJvcHMsIGxvZyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVubWF0Y2hlZFdpbmRvd3MgPSBbXG4gICAgWydzdGF0dXNCYXInLCBTVEFUVVNfQkFSX1dJTkRPV19OQU1FX1BSRUZJWF0sXG4gICAgWyduYXZpZ2F0aW9uQmFyJywgTkFWSUdBVElPTl9CQVJfV0lORE9XX05BTUVfUFJFRklYXVxuICBdLmZpbHRlcigoW25hbWVdKSA9PiBfLmlzTmlsKHJlc3VsdFtuYW1lXSkpO1xuICBmb3IgKGNvbnN0IFt3aW5kb3csIG5hbWVQcmVmaXhdIG9mIHVubWF0Y2hlZFdpbmRvd3MpIHtcbiAgICBsb2c/LmluZm8oYE5vIHdpbmRvd3MgaGF2ZSBiZWVuIGZvdW5kIHdob3NlIHRpdGxlIG1hdGNoZXMgdG8gYCArXG4gICAgICBgJyR7bmFtZVByZWZpeH0nLiBBc3N1bWluZyBpdCBpcyBpbnZpc2libGUuIGAgK1xuICAgICAgYE9ubHkgdGhlIGZvbGxvd2luZyB3aW5kb3dzIGFyZSBhdmFpbGFibGU6ICR7Xy5rZXlzKHdpbmRvd3MpfWApO1xuICAgIHJlc3VsdFt3aW5kb3ddID0gXy5jbG9uZURlZXAoREVGQVVMVF9XSU5ET1dfUFJPUEVSVElFUyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29tbWFuZHMuZ2V0U3lzdGVtQmFycyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN5c3RlbUJhcnMgKCkge1xuICBsZXQgc3Rkb3V0O1xuICB0cnkge1xuICAgIHN0ZG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZHVtcHN5cycsICd3aW5kb3cnLCAnd2luZG93cyddKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJldHJpZXZlIHN5c3RlbSBiYXJzIGRldGFpbHMuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4gcGFyc2VXaW5kb3dzKHN0ZG91dCwgdGhpcy5sb2cpO1xufTtcblxuLy8gZm9yIHVuaXQgdGVzdHNcbmV4cG9ydCB7IHBhcnNlV2luZG93cywgcGFyc2VXaW5kb3dQcm9wZXJ0aWVzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLE1BQU1DLG9CQUFvQixHQUFHLHdEQUF3RDtBQUNyRixNQUFNQyxhQUFhLEdBQUcsaUVBQWlFO0FBQ3ZGLE1BQU1DLHVCQUF1QixHQUFHLG9DQUFvQztBQUVwRSxNQUFNQyxZQUFZLEdBQUcsR0FBRztBQUN4QixNQUFNQyw2QkFBNkIsR0FBRyxXQUFXO0FBQ2pELE1BQU1DLGlDQUFpQyxHQUFHLGVBQWU7QUFDekQsTUFBTUMseUJBQXlCLEdBQUc7RUFDaENDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLENBQUMsRUFBRSxDQUFDO0VBQUVDLENBQUMsRUFBRSxDQUFDO0VBQUVDLEtBQUssRUFBRSxDQUFDO0VBQUVDLE1BQU0sRUFBRTtBQUNoQyxDQUFDO0FBRUQsTUFBTUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQXFCbkIsU0FBU0MscUJBQXFCQSxDQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsR0FBRyxHQUFHLElBQUksRUFBRTtFQUN2RCxNQUFNQyxNQUFNLEdBQUdDLGVBQUMsQ0FBQ0MsU0FBUyxDQUFDYix5QkFBeUIsQ0FBQztFQUNyRCxNQUFNYyxTQUFTLEdBQUdMLEtBQUssQ0FBQ00sSUFBSSxDQUFDLElBQUksQ0FBQztFQUNsQyxNQUFNQyxVQUFVLEdBQUdyQixhQUFhLENBQUNzQixJQUFJLENBQUNILFNBQVMsQ0FB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
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdXRpbHMiLCJfZHJpdmVyIiwiV0lORE9XX1RJVExFX1BBVFRFUk4iLCJGUkFNRV9QQVRURVJOIiwiVklFV19WSVNJQklMSVRZX1BBVFRFUk4iLCJWSUVXX1ZJU0lCTEUiLCJTVEFUVVNfQkFSX1dJTkRPV19OQU1FX1BSRUZJWCIsIk5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWCIsIkRFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMiLCJ2aXNpYmxlIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbW1hbmRzIiwicGFyc2VXaW5kb3dQcm9wZXJ0aWVzIiwibmFtZSIsInByb3BzIiwibG9nIiwicmVzdWx0IiwiXyIsImNsb25lRGVlcCIsInByb3BMaW5lcyIsImpvaW4iLCJmcmFtZU1hdGNoIiwiZXhlYyIsImRlYnVnIiwiRXJyb3IiLCJwYXJzZUZsb2F0IiwidmlzaWJpbGl0eU1hdGNoIiwicGFyc2VJbnQiLCJwYXJzZVdpbmRvd3MiLCJsaW5lcyIsIndpbmRvd3MiLCJjdXJyZW50V2luZG93TmFtZSIsImxpbmUiLCJzcGxpdCIsIm1hcCIsInRyaW1FbmQiLCJtYXRjaCIsInRyaW0iLCJsZW5ndGgiLCJpc0FycmF5IiwicHVzaCIsImlzRW1wdHkiLCJzdGF0dXNCYXIiLCJuYXZpZ2F0aW9uQmFyIiwidG9QYWlycyIsInN0YXJ0c1dpdGgiLCJ1bm1hdGNoZWRXaW5kb3dzIiwiZmlsdGVyIiwiaXNOaWwiLCJ3aW5kb3ciLCJuYW1lUHJlZml4IiwiaW5mbyIsImtleXMiLCJnZXRTeXN0ZW1CYXJzIiwic3Rkb3V0IiwiYWRiIiwic2hlbGwiLCJlIiwibWVzc2FnZSIsIm1vYmlsZVBlcmZvcm1TdGF0dXNCYXJDb21tYW5kIiwib3B0cyIsImNvbW1hbmQiLCJyZXF1aXJlQXJncyIsInRvU3RhdHVzQmFyQ29tbWFuZENhbGxhYmxlIiwiY21kIiwiYXJnc0NhbGxhYmxlIiwidGlsZUNvbW1hbmRBcmdzQ2FsbGFibGUiLCJjb21wb25lbnQiLCJzdGF0dXNCYXJDb21tYW5kcyIsImZyb21QYWlycyIsImFyZ3MiLCJhY3Rpb24iLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvc3lzdGVtLWJhcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHJlcXVpcmVBcmdzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IFdJTkRPV19USVRMRV9QQVRURVJOID0gL15cXHMrV2luZG93XFxzI1xcZCtcXHNXaW5kb3dcXHtbMC05YS1mXStcXHNcXHcrXFxzKFtcXHctXSspXFx9OiQvO1xuY29uc3QgRlJBTUVfUEFUVEVSTiA9IC9cXGJtP1tGZl1yYW1lPVxcWyhbMC05Li1dKyksKFswLTkuLV0rKVxcXVxcWyhbMC05Li1dKyksKFswLTkuLV0rKVxcXS87XG5jb25zdCBWSUVXX1ZJU0lCSUxJVFlfUEFUVEVSTiA9IC9cXGJtVmlld1Zpc2liaWxpdHk9KDB4WzAtOWEtZkEtRl0rKS87XG4vLyBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC92aWV3L1ZpZXcjVklTSUJMRVxuY29uc3QgVklFV19WSVNJQkxFID0gMHgwO1xuY29uc3QgU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVggPSAnU3RhdHVzQmFyJztcbmNvbnN0IE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWCA9ICdOYXZpZ2F0aW9uQmFyJztcbmNvbnN0IERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMgPSB7XG4gIHZpc2libGU6IGZhbHNlLFxuICB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxufTtcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXaW5kb3dQcm9wZXJ0aWVzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZpc2libGUgV2hldGhlciB0aGUgd2luZG93IGlzIHZpc2libGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB4IFdpbmRvdyB4IGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB5IFdpbmRvdyB5IGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3aWR0aCBXaW5kb3cgd2lkdGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgV2luZG93IGhlaWdodFxuICovXG5cbi8qKlxuICogUGFyc2VzIHdpbmRvdyBwcm9wZXJ0aWVzIGZyb20gYWRiIGR1bXBzeXMgb3V0cHV0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB3aG9zZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBwYXJzZWRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gcHJvcHMgVGhlIGxpc3Qgb2YgcGFydGljdWxhciB3aW5kb3cgcHJvcGVydHkgbGluZXMuXG4gKiBDaGVjayB0aGUgY29ycmVzcG9uZGluZyB1bml0IHRlc3RzIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGlucHV0IGZvcm1hdC5cbiAqIEBwYXJhbSB7T2JqZWN0P30gbG9nIExvZ2dlciBpbnN0YW5jZVxuICogQHJldHVybnMge1dpbmRvd1Byb3BlcnRpZXN9IFBhcnNlZCBwcm9wZXJ0aWVzIG9iamVjdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBpc3N1ZSB3aGlsZSBwYXJzaW5nIHRoZSBwcm9wZXJ0aWVzIHN0cmluZ1xuICovXG5mdW5jdGlvbiBwYXJzZVdpbmRvd1Byb3BlcnRpZXMgKG5hbWUsIHByb3BzLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IHJlc3VsdCA9IF8uY2xvbmVEZWVwKERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMpO1xuICBjb25zdCBwcm9wTGluZXMgPSBwcm9wcy5qb2luKCdcXG4nKTtcbiAgY29uc3QgZnJhbWVNYXRjaCA9IEZSQU1FX1BBVFRFUk4uZXhlYyhwcm9wTGluZXMpO1xuICBpZiAoIWZyYW1lTWF0Y2gpIHtcbiAgICBsb2c/LmRlYnVnKHByb3BMaW5lcyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdGhlIGZyYW1lIHNpemUgZnJvbSAnJHtuYW1lfScgd2luZG93IHByb3BlcnRpZXNgKTtcbiAgfVxuICByZXN1bHQueCA9IHBhcnNlRmxvYXQoZnJhbWVNYXRjaFsxXSk7XG4gIHJlc3VsdC55ID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzJdKTtcbiAgcmVzdWx0LndpZHRoID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzNdKSAtIHJlc3VsdC54O1xuICByZXN1bHQuaGVpZ2h0ID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzRdKSAtIHJlc3VsdC55O1xuICBjb25zdCB2aXNpYmlsaXR5TWF0Y2ggPSBWSUVXX1ZJU0lCSUxJVFlfUEFUVEVSTi5leGVjKHByb3BMaW5lcyk7XG4gIGlmICghdmlzaWJpbGl0eU1hdGNoKSB7XG4gICAgbG9nPy5kZWJ1Zyhwcm9wTGluZXMpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIHRoZSB2aXNpYmlsaXR5IHZhbHVlIGZyb20gJyR7bmFtZX0nIHdpbmRvdyBwcm9wZXJ0aWVzYCk7XG4gIH1cbiAgcmVzdWx0LnZpc2libGUgPSBwYXJzZUludCh2aXNpYmlsaXR5TWF0Y2hbMV0sIDE2KSA9PT0gVklFV19WSVNJQkxFO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHN0YXR1cyBhbmQgbmF2aWdhdGlvbiBiYXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgd2luZG93IG1hbmFnZXIgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gbGluZXMgT3V0cHV0IGZyb20gZHVtcHN5cyBjb21tYW5kLlxuICogQ2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCB0ZXN0cyBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBpbnB1dCBmb3JtYXQuXG4gKiBAcGFyYW0ge09iamVjdD99IGxvZyBMb2dnZXIgaW5zdGFuY2VcbiAqIEByZXR1cm4ge09iamVjdH0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdHdvIGl0ZW1zIHdoZXJlIGtleXMgYXJlIHN0YXR1c0JhciBhbmQgbmF2aWdhdGlvbkJhcixcbiAqIGFuZCB2YWx1ZXMgYXJlIGNvcnJlc3BvbmRpbmcgV2luZG93UHJvcGVydGllcyBvYmplY3RzXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gd2luZG93IHByb3BlcnRpZXMgY291bGQgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlV2luZG93cyAobGluZXMsIGxvZyA9IG51bGwpIHtcbiAgY29uc3Qgd2luZG93cyA9IHt9O1xuICBsZXQgY3VycmVudFdpbmRvd05hbWUgPSBudWxsO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMuc3BsaXQoJ1xcbicpLm1hcChfLnRyaW1FbmQpKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBXSU5ET1dfVElUTEVfUEFUVEVSTi5leGVjKGxpbmUpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgY3VycmVudFdpbmRvd05hbWUgPSBtYXRjaFsxXTtcbiAgICAgIHdpbmRvd3NbY3VycmVudFdpbmRvd05hbWVdID0gW107XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKF8udHJpbShsaW5lKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGN1cnJlbnRXaW5kb3dOYW1lID0gbnVsbDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50V2luZG93TmFtZSAmJiBfLmlzQXJyYXkod2luZG93c1tjdXJyZW50V2luZG93TmFtZV0pKSB7XG4gICAgICB3aW5kb3dzW2N1cnJlbnRXaW5kb3dOYW1lXS5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuICBpZiAoXy5pc0VtcHR5KHdpbmRvd3MpKSB7XG4gICAgbG9nPy5kZWJ1ZyhsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFyc2UgYW55IHdpbmRvdyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkdW1wc3lzIG91dHB1dCcpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0ge3N0YXR1c0JhcjogbnVsbCwgbmF2aWdhdGlvbkJhcjogbnVsbH07XG4gIGZvciAoY29uc3QgW25hbWUsIHByb3BzXSBvZiBfLnRvUGFpcnMod2luZG93cykpIHtcbiAgICBpZiAobmFtZS5zdGFydHNXaXRoKFNUQVRVU19CQVJfV0lORE9XX05BTUVfUFJFRklYKSkge1xuICAgICAgcmVzdWx0LnN0YXR1c0JhciA9IHBhcnNlV2luZG93UHJvcGVydGllcyhuYW1lLCBwcm9wcywgbG9nKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUuc3RhcnRzV2l0aChOQVZJR0FUSU9OX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgpKSB7XG4gICAgICByZXN1bHQubmF2aWdhdGlvbkJhciA9IHBhcnNlV2luZG93UHJvcGVydGllcyhuYW1lLCBwcm9wcywgbG9nKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdW5tYXRjaGVkV2luZG93cyA9IFtcbiAgICBbJ3N0YXR1c0JhcicsIFNUQVRVU19CQVJfV0lORE9XX05BTUVfUFJFRklYXSxcbiAgICBbJ25hdmlnYXRpb25CYXInLCBOQVZJR0FUSU9OX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVhdXG4gIF0uZmlsdGVyKChbbmFtZV0pID0+IF8uaXNOaWwocmVzdWx0W25hbWVdKSk7XG4gIGZvciAoY29uc3QgW3dpbmRvdywgbmFtZVByZWZpeF0gb2YgdW5tYXRjaGVkV2luZG93cykge1xuICAgIGxvZz8uaW5mbyhgTm8gd2luZG93cyBoYXZlIGJlZW4gZm91bmQgd2hvc2UgdGl0bGUgbWF0Y2hlcyB0byBgICtcbiAgICAgIGAnJHtuYW1lUHJlZml4fScuIEFzc3VtaW5nIGl0IGlzIGludmlzaWJsZS4gYCArXG4gICAgICBgT25seSB0aGUgZm9sbG93aW5nIHdpbmRvd3MgYXJlIGF2YWlsYWJsZTogJHtfLmtleXMod2luZG93cyl9YCk7XG4gICAgcmVzdWx0W3dpbmRvd10gPSBfLmNsb25lRGVlcChERUZBVUxUX1dJTkRPV19QUk9QRVJUSUVTKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5jb21tYW5kcy5nZXRTeXN0ZW1CYXJzID0gYXN5bmMgZnVuY3Rpb24gZ2V0U3lzdGVtQmFycyAoKSB7XG4gIGxldCBzdGRvdXQ7XG4gIHRyeSB7XG4gICAgc3Rkb3V0ID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkdW1wc3lzJywgJ3dpbmRvdycsICd3aW5kb3dzJ10pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmV0cmlldmUgc3lzdGVtIGJhcnMgZGV0YWlscy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiBwYXJzZVdpbmRvd3Moc3Rkb3V0LCB0aGlzLmxvZyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXR1c0JhckNvbW1hbmRPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tbWFuZCBPbmUgb2Ygc3VwcG9ydGVkIHN0YXR1cyBiYXIgY29tbWFuZHM6XG4gKiAtIGV4cGFuZE5vdGlmaWNhdGlvbnM6IE9wZW4gdGhlIG5vdGlmaWNhdGlvbnMgcGFuZWwuXG4gKiAtIGV4cGFuZFNldHRpbmdzOiBPcGVuIHRoZSBub3RpZmljYXRpb25zIHBhbmVsIGFuZCBleHBhbmQgcXVpY2sgc2V0dGluZ3MgaWYgcHJlc2VudC5cbiAqIC0gY29sbGFwc2U6IENvbGxhcHNlIHRoZSBub3RpZmljYXRpb25zIGFuZCBzZXR0aW5ncyBwYW5lbC5cbiAqIC0gYWRkVGlsZTogQWRkIGEgVGlsZVNlcnZpY2Ugb2YgdGhlIHNwZWNpZmllZCBjb21wb25lbnQuXG4gKiAtIHJlbW92ZVRpbGU6IFJlbW92ZSBhIFRpbGVTZXJ2aWNlIG9mIHRoZSBzcGVjaWZpZWQgY29tcG9uZW50LlxuICogLSBjbGlja1RpbGU6IENsaWNrIG9uIGEgVGlsZVNlcnZpY2Ugb2YgdGhlIHNwZWNpZmllZCBjb21wb25lbnQuXG4gKiAtIGdldFN0YXR1c0ljb25zOiBQcmludCB0aGUgbGlzdCBvZiBzdGF0dXMgYmFyIGljb25zIGFuZCB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4uXG4gKiBFYWNoIGxpc3QgaXRlbSBpcyBzZXBhcmF0ZWQgd2l0aCBhIG5ldyBsaW5lIGNoYXJhY3Rlci5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nP30gY29tcG9uZW50IFRoZSBuYW1lIG9mIHRoZSB0aWxlIGNvbXBvbmVudC5cbiAqIEl0IGlzIG9ubHkgcmVxdWlyZWQgZm9yIChhZGR8cmVtb3ZlfGNsaWNrKVRpbGUgY29tbWFuZHMuXG4gKiBFeGFtcGxlIHZhbHVlOiBjb20ucGFja2FnZS5uYW1lLy5zZXJ2aWNlLlF1aWNrU2V0dGluZ3NUaWxlQ29tcG9uZW50XG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtcyBjb21tYW5kcyBvbiB0aGUgc3lzdGVtIHN0YXR1cyBiYXIuIEEgdGhpbiB3cmFwcGVyIG92ZXJcbiAqICdhZGIgc2hlbGwgY21kIHN0YXR1c2JhcicgQ0xJLiBXb3JrcyBvbiBBbmRyb2lkIE9yZW8gYW5kIG5ld2VyLlxuICpcbiAqIEBwYXJhbSB7U3RhdHVzQmFyQ29tbWFuZE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSBkb3duc3RyZWFtIGNvbnNvbGUgY29tbWFuZC5cbiAqL1xuY29tbWFuZHMubW9iaWxlUGVyZm9ybVN0YXR1c0JhckNvbW1hbmQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtU3RhdHVzQmFyQ29tbWFuZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtjb21tYW5kfSA9IHJlcXVpcmVBcmdzKCdjb21tYW5kJywgb3B0cyk7XG5cbiAgY29uc3QgdG9TdGF0dXNCYXJDb21tYW5kQ2FsbGFibGUgPSAoY21kLCBhcmdzQ2FsbGFibGUgPSBudWxsKSA9PiBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmFkYi5zaGVsbChbXG4gICAgJ2NtZCcsICdzdGF0dXNiYXInLCBjbWQsIC4uLihhcmdzQ2FsbGFibGUgPyBhcmdzQ2FsbGFibGUoKSA6IFtdKVxuICBdKTtcbiAgY29uc3QgdGlsZUNvbW1hbmRBcmdzQ2FsbGFibGUgPSAoKSA9PiByZXF1aXJlQXJncygnY29tcG9uZW50Jywgb3B0cykuY29tcG9uZW50O1xuICBjb25zdCBzdGF0dXNCYXJDb21tYW5kcyA9IF8uZnJvbVBhaXJzKFtcbiAgICBbJ2V4cGFuZE5vdGlmaWNhdGlvbnMnLCBbJ2V4cGFuZC1ub3RpZmljYXRpb25zJ11dLFxuICAgIFsnZXhwYW5kU2V0dGluZ3MnLCBbJ2V4cGFuZC1zZXR0aW5ncyddXSxcbiAgICBbJ2NvbGxhcHNlJywgWydjb2xsYXBzZSddXSxcbiAgICBbJ2FkZFRpbGUnLCBbJ2FkZC10aWxlJywgdGlsZUNvbW1hbmRBcmdzQ2FsbGFibGVdXSxcbiAgICBbJ3JlbW92ZVRpbGUnLCBbJ3JlbW92ZS10aWxlJywgdGlsZUNvbW1hbmRBcmdzQ2FsbGFibGVdXSxcbiAgICBbJ2NsaWNrVGlsZScsIFsnY2xpY2stdGlsZScsIHRpbGVDb21tYW5kQXJnc0NhbGxhYmxlXV0sXG4gICAgWydnZXRTdGF0dXNJY29ucycsIFsnZ2V0LXN0YXR1cy1pY29ucyddXSxcbiAgXS5tYXAoKFtuYW1lLCBhcmdzXSkgPT4gW25hbWUsIHRvU3RhdHVzQmFyQ29tbWFuZENhbGxhYmxlKC4uLmFyZ3MpXSkpO1xuXG4gIGNvbnN0IGFjdGlvbiA9IHN0YXR1c0JhckNvbW1hbmRzW2NvbW1hbmRdO1xuICBpZiAoIWFjdGlvbikge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICBgVGhlICcke2NvbW1hbmR9JyBzdGF0dXMgYmFyIGNvbW1hbmQgaXMgdW5rbm93bi4gT25seSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGAgK1xuICAgICAgYGFyZSBzdXBwb3J0ZWQ6ICR7Xy5rZXlzKHN0YXR1c0JhckNvbW1hbmRzKX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgYWN0aW9uKCk7XG59O1xuXG4vLyBmb3IgdW5pdCB0ZXN0c1xuZXhwb3J0IHsgcGFyc2VXaW5kb3dzLCBwYXJzZVdpbmRvd1Byb3BlcnRpZXMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsTUFBTUcsb0JBQW9CLEdBQUcsd0RBQXdEO0FBQ3JGLE1BQU1DLGFBQWEsR0FBRyxpRUFBaUU7QUFDdkYsTUFBTUMsdUJBQXVCLEdBQUcsb0NBQW9DO0FBRXBFLE1BQU1DLFlBQVksR0FBRyxHQUFHO0FBQ3hCLE1BQU1DLDZCQUE2QixHQUFHLFdBQVc7QUFDakQsTUFBTUMsaUNBQWlDLEdBQUcsZUFBZTtBQUN6RCxNQUFNQyx5QkFBeUIsR0FBRztFQUNoQ0MsT0FBTyxFQUFFLEtBQUs7RUFDZEMsQ0FBQyxFQUFFLENBQUM7RUFBRUMsQ0FBQyxFQUFFLENBQUM7RUFBRUMsS0FBSyxFQUFFLENBQUM7RUFBRUMsTUFBTSxFQUFFO0FBQ2hDLENBQUM7QUFFRCxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBcUJuQixTQUFTQyxxQkFBcUJBLENBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxHQUFHLEdBQUcsSUFBSSxFQUFFO0VBQ3ZELE1BQU1DLE1BQU0sR0FBR0MsZUFBQyxDQUFDQyxTQUFTLENBQUNiLHlCQUF5QixDQUFDO0VBQ3JELE1BQU1jLFNBQVMsR0FBR0wsS0FBSyxDQUFDTSxJQUFJLENBQUMsSUFBSSxDQUFDO0VBQ2xDLE1BQU1DLFVBQVUsR0FBR3JCLGFBQWEsQ0FBQ3NCLElBQUksQ0FBQ0gsU0FBUyxDQUFDO0VBQ2hELElBQUksQ0FBQ0UsVUFBVSxFQUFFO0lBQ2ZOLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFUSxLQUFLLENBQUNKLFNBQVMsQ0FBQztJQUNyQixNQUFNLElBQUlLLEtBQUssQ0FBRSxxQ0FBb0NYLElBQUsscUJBQW9CLENBQUM7RUFDakY7RUFDQUcsTUFBTSxDQUFDVCxDQUFDLEdBQUdrQixVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNwQ0wsTUFBTSxDQUFDUixDQUFDLEdBQUdpQixVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNwQ0wsTUFBTSxDQUFDUCxLQUFLLEdBQUdnQixVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHTCxNQUFNLENBQUNULENBQUM7RUFDbkRTLE1BQU0sQ0FBQ04sTUFBTSxHQUFHZSxVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHTCxNQUFNLENBQUNSLENBQUM7RUFDcEQsTUFBTWtCLGVBQWUsR0FBR3pCLHVCQUF1QixDQUFDcUIsSUFBSSxDQUFDSCxTQUFTLENBQUM7RUFDL0QsSUFBSSxDQUFDTyxlQUFlLEVBQUU7SUFDcEJYLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFUSxLQUFLLENBQUNKLFNBQVMsQ0FBQztJQUNyQixNQUFNLElBQUlLLEtBQUssQ0FBRSwyQ0FBMENYLElBQUsscUJBQW9CLENBQUM7RUFDdkY7RUFDQUcsTUFBTSxDQUFDVixPQUFPLEdBQUdxQixRQUFRLENBQUNELGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBS3hCLFlBQVk7RUFDbEUsT0FBT2MsTUFBTTtBQUNmO0FBWUEsU0FBU1ksWUFBWUEsQ0FBRUMsS0FBSyxFQUFFZCxHQUFHLEdBQUcsSUFBSSxFQUFFO0VBQ3hDLE1BQU1lLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFDbEIsSUFBSUMsaUJBQWlCLEdBQUcsSUFBSTtFQUM1QixLQUFLLE1BQU1DLElBQUksSUFBSUgsS0FBSyxDQUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUNDLEdBQUcsQ0FBQ2pCLGVBQUMsQ0FBQ2tCLE9BQU8sQ0FBQyxFQUFFO0lBQ25ELE1BQU1DLEtBQUssR0FBR3JDLG9CQUFvQixDQUFDdUIsSUFBSSxDQUFDVSxJQUFJLENBQUM7SUFDN0MsSUFBSUksS0FBSyxFQUFFO01BQ1RMLGlCQUFpQixHQUFHSyxLQUFLLENBQUMsQ0FBQyxDQUFDO01BQzVCTixPQUFPLENBQUNDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtNQUMvQjtJQUNGO0lBQ0EsSUFBSWQsZUFBQyxDQUFDb0IsSUFBSSxDQUFDTCxJQUFJLENBQUMsQ0FBQ00sTUFBTSxLQUFLLENBQUMsRUFBRTtNQUM3QlAsaUJBQWlCLEdBQUcsSUFBSTtNQUN4QjtJQUNGO0lBRUEsSUFBSUEsaUJBQWlCLElBQUlkLGVBQUMsQ0FBQ3NCLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUU7TUFDOURELE9BQU8sQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQ1MsSUFBSSxDQUFDUixJQUFJLENBQUM7SUFDdkM7RUFDRjtFQUNBLElBQUlmLGVBQUMsQ0FBQ3dCLE9BQU8sQ0FBQ1gsT0FBTyxDQUFDLEVBQUU7SUFDdEJmLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFUSxLQUFLLENBQUNNLEtBQUssQ0FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLE1BQU0sSUFBSUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDO0VBQ2hGO0VBRUEsTUFBTVIsTUFBTSxHQUFHO0lBQUMwQixTQUFTLEVBQUUsSUFBSTtJQUFFQyxhQUFhLEVBQUU7RUFBSSxDQUFDO0VBQ3JELEtBQUssTUFBTSxDQUFDOUIsSUFBSSxFQUFFQyxLQUFLLENBQUMsSUFBSUcsZUFBQyxDQUFDMkIsT0FBTyxDQUFDZCxPQUFPLENBQUMsRUFBRTtJQUM5QyxJQUFJakIsSUFBSSxDQUFDZ0MsVUFBVSxDQUFDMUMsNkJBQTZCLENBQUMsRUFBRTtNQUNsRGEsTUFBTSxDQUFDMEIsU0FBUyxHQUFHOUIscUJBQXFCLENBQUNDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxHQUFHLENBQUM7SUFDNUQsQ0FBQyxNQUFNLElBQUlGLElBQUksQ0FBQ2dDLFVBQVUsQ0FBQ3pDLGlDQUFpQyxDQUFDLEVBQUU7TUFDN0RZLE1BQU0sQ0FBQzJCLGFBQWEsR0FBRy9CLHFCQUFxQixDQUFDQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsR0FBRyxDQUFDO0lBQ2hFO0VBQ0Y7RUFDQSxNQUFNK0IsZ0JBQWdCLEdBQUcsQ0FDdkIsQ0FBQyxXQUFXLEVBQUUzQyw2QkFBNkIsQ0FBQyxFQUM1QyxDQUFDLGVBQWUsRUFBRUMsaUNBQWlDLENBQUMsQ0FDckQsQ0FBQzJDLE1BQU0sQ0FBQyxDQUFDLENBQUNsQyxJQUFJLENBQUMsS0FBS0ksZUFBQyxDQUFDK0IsS0FBSyxDQUFDaEMsTUFBTSxDQUFDSCxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQzNDLEtBQUssTUFBTSxDQUFDb0MsTUFBTSxFQUFFQyxVQUFVLENBQUMsSUFBSUosZ0JBQWdCLEVBQUU7SUFDbkQvQixHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRW9DLElBQUksQ0FBRSxvREFBbUQsR0FDM0QsSUFBR0QsVUFBVywrQkFBOEIsR0FDNUMsNkNBQTRDakMsZUFBQyxDQUFDbUMsSUFBSSxDQUFDdEIsT0FBTyxDQUFFLEVBQUMsQ0FBQztJQUNqRWQsTUFBTSxDQUFDaUMsTUFBTSxDQUFDLEdBQUdoQyxlQUFDLENBQUNDLFNBQVMsQ0FBQ2IseUJBQXlCLENBQUM7RUFDekQ7RUFDQSxPQUFPVyxNQUFNO0FBQ2Y7QUFFQUwsUUFBUSxDQUFDMEMsYUFBYSxHQUFHLGVBQWVBLGFBQWFBLENBQUEsRUFBSTtFQUN2RCxJQUFJQyxNQUFNO0VBQ1YsSUFBSTtJQUNGQSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztFQUNqRSxDQUFDLENBQUMsT0FBT0MsQ0FBQyxFQUFFO0lBQ1YsTUFBTSxJQUFJakMsS0FBSyxDQUFFLHdEQUF1RGlDLENBQUMsQ0FBQ0MsT0FBUSxFQUFDLENBQUM7RUFDdEY7RUFDQSxPQUFPOUIsWUFBWSxDQUFDMEIsTUFBTSxFQUFFLElBQUksQ0FBQ3ZDLEdBQUcsQ0FBQztBQUN2QyxDQUFDO0FBeUJESixRQUFRLENBQUNnRCw2QkFBNkIsR0FBRyxlQUFlQSw2QkFBNkJBLENBQUVDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtFQUNoRyxNQUFNO0lBQUNDO0VBQU8sQ0FBQyxHQUFHLElBQUFDLGtCQUFXLEVBQUMsU0FBUyxFQUFFRixJQUFJLENBQUM7RUFFOUMsTUFBTUcsMEJBQTBCLEdBQUdBLENBQUNDLEdBQUcsRUFBRUMsWUFBWSxHQUFHLElBQUksS0FBSyxZQUFZLE1BQU0sSUFBSSxDQUFDVixHQUFHLENBQUNDLEtBQUssQ0FBQyxDQUNoRyxLQUFLLEVBQUUsV0FBVyxFQUFFUSxHQUFHLEVBQUUsSUFBSUMsWUFBWSxHQUFHQSxZQUFZLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUNqRSxDQUFDO0VBQ0YsTUFBTUMsdUJBQXVCLEdBQUdBLENBQUEsS0FBTSxJQUFBSixrQkFBVyxFQUFDLFdBQVcsRUFBRUYsSUFBSSxDQUFDLENBQUNPLFNBQVM7RUFDOUUsTUFBTUMsaUJBQWlCLEdBQUduRCxlQUFDLENBQUNvRCxTQUFTLENBQUMsQ0FDcEMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFDakQsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDdkMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUMxQixDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRUgsdUJBQXVCLENBQUMsQ0FBQyxFQUNsRCxDQUFDLFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRUEsdUJBQXVCLENBQUMsQ0FBQyxFQUN4RCxDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRUEsdUJBQXVCLENBQUMsQ0FBQyxFQUN0RCxDQUFDLGdCQUFnQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUN6QyxDQUFDaEMsR0FBRyxDQUFDLENBQUMsQ0FBQ3JCLElBQUksRUFBRXlELElBQUksQ0FBQyxLQUFLLENBQUN6RCxJQUFJLEVBQUVrRCwwQkFBMEIsQ0FBQyxHQUFHTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFckUsTUFBTUMsTUFBTSxHQUFHSCxpQkFBaUIsQ0FBQ1AsT0FBTyxDQUFDO0VBQ3pDLElBQUksQ0FBQ1UsTUFBTSxFQUFFO0lBQ1gsTUFBTSxJQUFJQyxjQUFNLENBQUNDLG9CQUFvQixDQUNsQyxRQUFPWixPQUFRLCtEQUE4RCxHQUM3RSxrQkFBaUI1QyxlQUFDLENBQUNtQyxJQUFJLENBQUNnQixpQkFBaUIsQ0FBRSxFQUM5QyxDQUFDO0VBQ0g7RUFDQSxPQUFPLE1BQU1HLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFBQyxJQUFBRyxRQUFBLEdBSWEvRCxRQUFRO0FBQUFnRSxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-bars.js","names":["_lodash","_interopRequireDefault","require","WINDOW_TITLE_PATTERN","FRAME_PATTERN","VIEW_VISIBILITY_PATTERN","VIEW_VISIBLE","STATUS_BAR_WINDOW_NAME_PREFIX","NAVIGATION_BAR_WINDOW_NAME_PREFIX","DEFAULT_WINDOW_PROPERTIES","visible","x","y","width","height","commands","parseWindowProperties","name","props","log","result","_","cloneDeep","propLines","join","frameMatch","exec","debug","Error","parseFloat","visibilityMatch","parseInt","parseWindows","lines","windows","currentWindowName","line","split","map","trimEnd","match","trim","length","isArray","push","isEmpty","statusBar","navigationBar","toPairs","startsWith","unmatchedWindows","filter","isNil","window","namePrefix","info","keys","getSystemBars","stdout","adb","shell","e","message","_default","exports","default"],"sources":["../../../lib/commands/system-bars.js"],"sourcesContent":["import _ from 'lodash';\n\nconst WINDOW_TITLE_PATTERN = /^\\s+Window\\s#\\d+\\sWindow\\{[0-9a-f]+\\s\\w+\\s([\\w-]+)\\}:$/;\nconst FRAME_PATTERN = /\\bm?[Ff]rame=\\[([0-9.-]+),([0-9.-]+)\\]\\[([0-9.-]+),([0-9.-]+)\\]/;\nconst VIEW_VISIBILITY_PATTERN = /\\bmViewVisibility=(0x[0-9a-fA-F]+)/;\n// https://developer.android.com/reference/android/view/View#VISIBLE\nconst VIEW_VISIBLE = 0x0;\nconst STATUS_BAR_WINDOW_NAME_PREFIX = 'StatusBar';\nconst NAVIGATION_BAR_WINDOW_NAME_PREFIX = 'NavigationBar';\nconst DEFAULT_WINDOW_PROPERTIES = {\n visible: false,\n x: 0, y: 0, width: 0, height: 0,\n};\n\nconst commands = {};\n\n/**\n * @typedef {Object} WindowProperties\n * @property {boolean} visible Whether the window is visible\n * @property {number} x Window x coordinate\n * @property {number} y Window y coordinate\n * @property {number} width Window width\n * @property {number} height Window height\n */\n\n/**\n * Parses window properties from adb dumpsys output\n *\n * @param {string} name The name of the window whose properties are being parsed\n * @param {Array<string>} props The list of particular window property lines.\n * Check the corresponding unit tests for more details on the input format.\n * @param {Object?} log Logger instance\n * @returns {WindowProperties} Parsed properties object\n * @throws {Error} If there was an issue while parsing the properties string\n */\nfunction parseWindowProperties (name, props, log = null) {\n const result = _.cloneDeep(DEFAULT_WINDOW_PROPERTIES);\n const propLines = props.join('\\n');\n const frameMatch = FRAME_PATTERN.exec(propLines);\n if (!frameMatch) {\n log?.debug(propLines);\n throw new Error(`Cannot parse the frame size from '${name}' window properties`);\n }\n result.x = parseFloat(frameMatch[1]);\n result.y = parseFloat(frameMatch[2]);\n result.width = parseFloat(frameMatch[3]) - result.x;\n result.height = parseFloat(frameMatch[4]) - result.y;\n const visibilityMatch = VIEW_VISIBILITY_PATTERN.exec(propLines);\n if (!visibilityMatch) {\n log?.debug(propLines);\n throw new Error(`Cannot parse the visibility value from '${name}' window properties`);\n }\n result.visible = parseInt(visibilityMatch[1], 16) === VIEW_VISIBLE;\n return result;\n}\n\n/**\n * Extracts status and navigation bar information from the window manager output.\n *\n * @param {Array<string>} lines Output from dumpsys command.\n * Check the corresponding unit tests for more details on the input format.\n * @param {Object?} log Logger instance\n * @return {Object} An object containing two items where keys are statusBar and navigationBar,\n * and values are corresponding WindowProperties objects\n * @throws {Error} If no window properties could be parsed\n */\nfunction parseWindows (lines, log = null) {\n const windows = {};\n let currentWindowName = null;\n for (const line of lines.split('\\n').map(_.trimEnd)) {\n const match = WINDOW_TITLE_PATTERN.exec(line);\n if (match) {\n currentWindowName = match[1];\n windows[currentWindowName] = [];\n continue;\n }\n if (_.trim(line).length === 0) {\n currentWindowName = null;\n continue;\n }\n\n if (currentWindowName && _.isArray(windows[currentWindowName])) {\n windows[currentWindowName].push(line);\n }\n }\n if (_.isEmpty(windows)) {\n log?.debug(lines.join('\\n'));\n throw new Error('Cannot parse any window information from the dumpsys output');\n }\n\n const result = {statusBar: null, navigationBar: null};\n for (const [name, props] of _.toPairs(windows)) {\n if (name.startsWith(STATUS_BAR_WINDOW_NAME_PREFIX)) {\n result.statusBar = parseWindowProperties(name, props, log);\n } else if (name.startsWith(NAVIGATION_BAR_WINDOW_NAME_PREFIX)) {\n result.navigationBar = parseWindowProperties(name, props, log);\n }\n }\n const unmatchedWindows = [\n ['statusBar', STATUS_BAR_WINDOW_NAME_PREFIX],\n ['navigationBar', NAVIGATION_BAR_WINDOW_NAME_PREFIX]\n ].filter(([name]) => _.isNil(result[name]));\n for (const [window, namePrefix] of unmatchedWindows) {\n log?.info(`No windows have been found whose title matches to ` +\n `'${namePrefix}'. Assuming it is invisible. ` +\n `Only the following windows are available: ${_.keys(windows)}`);\n result[window] = _.cloneDeep(DEFAULT_WINDOW_PROPERTIES);\n }\n return result;\n}\n\ncommands.getSystemBars = async function getSystemBars () {\n let stdout;\n try {\n stdout = await this.adb.shell(['dumpsys', 'window', 'windows']);\n } catch (e) {\n throw new Error(`Cannot retrieve system bars details. Original error: ${e.message}`);\n }\n return parseWindows(stdout, this.log);\n};\n\n// for unit tests\nexport { parseWindows, parseWindowProperties };\nexport default commands;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system-bars.js","names":["_lodash","_interopRequireDefault","require","_utils","_driver","WINDOW_TITLE_PATTERN","FRAME_PATTERN","VIEW_VISIBILITY_PATTERN","VIEW_VISIBLE","STATUS_BAR_WINDOW_NAME_PREFIX","NAVIGATION_BAR_WINDOW_NAME_PREFIX","DEFAULT_WINDOW_PROPERTIES","visible","x","y","width","height","commands","parseWindowProperties","name","props","log","result","_","cloneDeep","propLines","join","frameMatch","exec","debug","Error","parseFloat","visibilityMatch","parseInt","parseWindows","lines","windows","currentWindowName","line","split","map","trimEnd","match","trim","length","isArray","push","isEmpty","statusBar","navigationBar","toPairs","startsWith","unmatchedWindows","filter","isNil","window","namePrefix","info","keys","getSystemBars","stdout","adb","shell","e","message","mobilePerformStatusBarCommand","opts","command","requireArgs","toStatusBarCommandCallable","cmd","argsCallable","tileCommandArgsCallable","component","statusBarCommands","fromPairs","args","action","errors","InvalidArgumentError","_default","exports","default"],"sources":["../../../lib/commands/system-bars.js"],"sourcesContent":["import _ from 'lodash';\nimport { requireArgs } from '../utils';\nimport { errors } from 'appium/driver';\n\nconst WINDOW_TITLE_PATTERN = /^\\s+Window\\s#\\d+\\sWindow\\{[0-9a-f]+\\s\\w+\\s([\\w-]+)\\}:$/;\nconst FRAME_PATTERN = /\\bm?[Ff]rame=\\[([0-9.-]+),([0-9.-]+)\\]\\[([0-9.-]+),([0-9.-]+)\\]/;\nconst VIEW_VISIBILITY_PATTERN = /\\bmViewVisibility=(0x[0-9a-fA-F]+)/;\n// https://developer.android.com/reference/android/view/View#VISIBLE\nconst VIEW_VISIBLE = 0x0;\nconst STATUS_BAR_WINDOW_NAME_PREFIX = 'StatusBar';\nconst NAVIGATION_BAR_WINDOW_NAME_PREFIX = 'NavigationBar';\nconst DEFAULT_WINDOW_PROPERTIES = {\n visible: false,\n x: 0, y: 0, width: 0, height: 0,\n};\n\nconst commands = {};\n\n/**\n * @typedef {Object} WindowProperties\n * @property {boolean} visible Whether the window is visible\n * @property {number} x Window x coordinate\n * @property {number} y Window y coordinate\n * @property {number} width Window width\n * @property {number} height Window height\n */\n\n/**\n * Parses window properties from adb dumpsys output\n *\n * @param {string} name The name of the window whose properties are being parsed\n * @param {Array<string>} props The list of particular window property lines.\n * Check the corresponding unit tests for more details on the input format.\n * @param {Object?} log Logger instance\n * @returns {WindowProperties} Parsed properties object\n * @throws {Error} If there was an issue while parsing the properties string\n */\nfunction parseWindowProperties (name, props, log = null) {\n const result = _.cloneDeep(DEFAULT_WINDOW_PROPERTIES);\n const propLines = props.join('\\n');\n const frameMatch = FRAME_PATTERN.exec(propLines);\n if (!frameMatch) {\n log?.debug(propLines);\n throw new Error(`Cannot parse the frame size from '${name}' window properties`);\n }\n result.x = parseFloat(frameMatch[1]);\n result.y = parseFloat(frameMatch[2]);\n result.width = parseFloat(frameMatch[3]) - result.x;\n result.height = parseFloat(frameMatch[4]) - result.y;\n const visibilityMatch = VIEW_VISIBILITY_PATTERN.exec(propLines);\n if (!visibilityMatch) {\n log?.debug(propLines);\n throw new Error(`Cannot parse the visibility value from '${name}' window properties`);\n }\n result.visible = parseInt(visibilityMatch[1], 16) === VIEW_VISIBLE;\n return result;\n}\n\n/**\n * Extracts status and navigation bar information from the window manager output.\n *\n * @param {Array<string>} lines Output from dumpsys command.\n * Check the corresponding unit tests for more details on the input format.\n * @param {Object?} log Logger instance\n * @return {Object} An object containing two items where keys are statusBar and navigationBar,\n * and values are corresponding WindowProperties objects\n * @throws {Error} If no window properties could be parsed\n */\nfunction parseWindows (lines, log = null) {\n const windows = {};\n let currentWindowName = null;\n for (const line of lines.split('\\n').map(_.trimEnd)) {\n const match = WINDOW_TITLE_PATTERN.exec(line);\n if (match) {\n currentWindowName = match[1];\n windows[currentWindowName] = [];\n continue;\n }\n if (_.trim(line).length === 0) {\n currentWindowName = null;\n continue;\n }\n\n if (currentWindowName && _.isArray(windows[currentWindowName])) {\n windows[currentWindowName].push(line);\n }\n }\n if (_.isEmpty(windows)) {\n log?.debug(lines.join('\\n'));\n throw new Error('Cannot parse any window information from the dumpsys output');\n }\n\n const result = {statusBar: null, navigationBar: null};\n for (const [name, props] of _.toPairs(windows)) {\n if (name.startsWith(STATUS_BAR_WINDOW_NAME_PREFIX)) {\n result.statusBar = parseWindowProperties(name, props, log);\n } else if (name.startsWith(NAVIGATION_BAR_WINDOW_NAME_PREFIX)) {\n result.navigationBar = parseWindowProperties(name, props, log);\n }\n }\n const unmatchedWindows = [\n ['statusBar', STATUS_BAR_WINDOW_NAME_PREFIX],\n ['navigationBar', NAVIGATION_BAR_WINDOW_NAME_PREFIX]\n ].filter(([name]) => _.isNil(result[name]));\n for (const [window, namePrefix] of unmatchedWindows) {\n log?.info(`No windows have been found whose title matches to ` +\n `'${namePrefix}'. Assuming it is invisible. ` +\n `Only the following windows are available: ${_.keys(windows)}`);\n result[window] = _.cloneDeep(DEFAULT_WINDOW_PROPERTIES);\n }\n return result;\n}\n\ncommands.getSystemBars = async function getSystemBars () {\n let stdout;\n try {\n stdout = await this.adb.shell(['dumpsys', 'window', 'windows']);\n } catch (e) {\n throw new Error(`Cannot retrieve system bars details. Original error: ${e.message}`);\n }\n return parseWindows(stdout, this.log);\n};\n\n/**\n * @typedef {Object} StatusBarCommandOptions\n * @property {string} command One of supported status bar commands:\n * - expandNotifications: Open the notifications panel.\n * - expandSettings: Open the notifications panel and expand quick settings if present.\n * - collapse: Collapse the notifications and settings panel.\n * - addTile: Add a TileService of the specified component.\n * - removeTile: Remove a TileService of the specified component.\n * - clickTile: Click on a TileService of the specified component.\n * - getStatusIcons: Print the list of status bar icons and the order they appear in.\n * Each list item is separated with a new line character.\n * @property {string?} component The name of the tile component.\n * It is only required for (add|remove|click)Tile commands.\n * Example value: com.package.name/.service.QuickSettingsTileComponent\n */\n\n/**\n * Performs commands on the system status bar. A thin wrapper over\n * 'adb shell cmd statusbar' CLI. Works on Android Oreo and newer.\n *\n * @param {StatusBarCommandOptions} opts\n * @returns {Promise<string>} The actual output of the downstream console command.\n */\ncommands.mobilePerformStatusBarCommand = async function mobilePerformStatusBarCommand (opts = {}) {\n const {command} = requireArgs('command', opts);\n\n const toStatusBarCommandCallable = (cmd, argsCallable = null) => async () => await this.adb.shell([\n 'cmd', 'statusbar', cmd, ...(argsCallable ? argsCallable() : [])\n ]);\n const tileCommandArgsCallable = () => requireArgs('component', opts).component;\n const statusBarCommands = _.fromPairs([\n ['expandNotifications', ['expand-notifications']],\n ['expandSettings', ['expand-settings']],\n ['collapse', ['collapse']],\n ['addTile', ['add-tile', tileCommandArgsCallable]],\n ['removeTile', ['remove-tile', tileCommandArgsCallable]],\n ['clickTile', ['click-tile', tileCommandArgsCallable]],\n ['getStatusIcons', ['get-status-icons']],\n ].map(([name, args]) => [name, toStatusBarCommandCallable(...args)]));\n\n const action = statusBarCommands[command];\n if (!action) {\n throw new errors.InvalidArgumentError(\n `The '${command}' status bar command is unknown. Only the following commands ` +\n `are supported: ${_.keys(statusBarCommands)}`\n );\n }\n return await action();\n};\n\n// for unit tests\nexport { parseWindows, parseWindowProperties };\nexport default commands;\n"],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
+
import { requireArgs } from '../utils';
|
|
3
|
+
import { errors } from 'appium/driver';
|
|
2
4
|
|
|
3
5
|
const WINDOW_TITLE_PATTERN = /^\s+Window\s#\d+\sWindow\{[0-9a-f]+\s\w+\s([\w-]+)\}:$/;
|
|
4
6
|
const FRAME_PATTERN = /\bm?[Ff]rame=\[([0-9.-]+),([0-9.-]+)\]\[([0-9.-]+),([0-9.-]+)\]/;
|
|
@@ -119,6 +121,56 @@ commands.getSystemBars = async function getSystemBars () {
|
|
|
119
121
|
return parseWindows(stdout, this.log);
|
|
120
122
|
};
|
|
121
123
|
|
|
124
|
+
/**
|
|
125
|
+
* @typedef {Object} StatusBarCommandOptions
|
|
126
|
+
* @property {string} command One of supported status bar commands:
|
|
127
|
+
* - expandNotifications: Open the notifications panel.
|
|
128
|
+
* - expandSettings: Open the notifications panel and expand quick settings if present.
|
|
129
|
+
* - collapse: Collapse the notifications and settings panel.
|
|
130
|
+
* - addTile: Add a TileService of the specified component.
|
|
131
|
+
* - removeTile: Remove a TileService of the specified component.
|
|
132
|
+
* - clickTile: Click on a TileService of the specified component.
|
|
133
|
+
* - getStatusIcons: Print the list of status bar icons and the order they appear in.
|
|
134
|
+
* Each list item is separated with a new line character.
|
|
135
|
+
* @property {string?} component The name of the tile component.
|
|
136
|
+
* It is only required for (add|remove|click)Tile commands.
|
|
137
|
+
* Example value: com.package.name/.service.QuickSettingsTileComponent
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Performs commands on the system status bar. A thin wrapper over
|
|
142
|
+
* 'adb shell cmd statusbar' CLI. Works on Android Oreo and newer.
|
|
143
|
+
*
|
|
144
|
+
* @param {StatusBarCommandOptions} opts
|
|
145
|
+
* @returns {Promise<string>} The actual output of the downstream console command.
|
|
146
|
+
*/
|
|
147
|
+
commands.mobilePerformStatusBarCommand = async function mobilePerformStatusBarCommand (opts = {}) {
|
|
148
|
+
const {command} = requireArgs('command', opts);
|
|
149
|
+
|
|
150
|
+
const toStatusBarCommandCallable = (cmd, argsCallable = null) => async () => await this.adb.shell([
|
|
151
|
+
'cmd', 'statusbar', cmd, ...(argsCallable ? argsCallable() : [])
|
|
152
|
+
]);
|
|
153
|
+
const tileCommandArgsCallable = () => requireArgs('component', opts).component;
|
|
154
|
+
const statusBarCommands = _.fromPairs([
|
|
155
|
+
['expandNotifications', ['expand-notifications']],
|
|
156
|
+
['expandSettings', ['expand-settings']],
|
|
157
|
+
['collapse', ['collapse']],
|
|
158
|
+
['addTile', ['add-tile', tileCommandArgsCallable]],
|
|
159
|
+
['removeTile', ['remove-tile', tileCommandArgsCallable]],
|
|
160
|
+
['clickTile', ['click-tile', tileCommandArgsCallable]],
|
|
161
|
+
['getStatusIcons', ['get-status-icons']],
|
|
162
|
+
].map(([name, args]) => [name, toStatusBarCommandCallable(...args)]));
|
|
163
|
+
|
|
164
|
+
const action = statusBarCommands[command];
|
|
165
|
+
if (!action) {
|
|
166
|
+
throw new errors.InvalidArgumentError(
|
|
167
|
+
`The '${command}' status bar command is unknown. Only the following commands ` +
|
|
168
|
+
`are supported: ${_.keys(statusBarCommands)}`
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return await action();
|
|
172
|
+
};
|
|
173
|
+
|
|
122
174
|
// for unit tests
|
|
123
175
|
export { parseWindows, parseWindowProperties };
|
|
124
176
|
export default commands;
|