appium-android-driver 4.46.0 → 4.47.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.
@@ -54,6 +54,7 @@ extensions.executeMobile = async function executeMobile(mobileCommand, opts = {}
54
54
  deleteFile: 'mobileDeleteFile',
55
55
  startService: 'mobileStartService',
56
56
  stopService: 'mobileStopService',
57
+ startActivity: 'mobileStartActivity',
57
58
  getContexts: 'mobileGetContexts'
58
59
  };
59
60
 
@@ -68,4 +69,4 @@ var _default = extensions;
68
69
  exports.default = _default;require('source-map-support').install();
69
70
 
70
71
 
71
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nZ2VyIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsIl8iLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImVuZHBvaW50IiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJjb21tYW5kIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzZW5zb3JTZXQiLCJnZXREZXZpY2VUaW1lIiwic3RhcnRTY3JlZW5TdHJlYW1pbmciLCJzdG9wU2NyZWVuU3RyZWFtaW5nIiwiZ2V0Tm90aWZpY2F0aW9ucyIsImxpc3RTbXMiLCJkZWxldGVGaWxlIiwic3RhcnRTZXJ2aWNlIiwic3RvcFNlcnZpY2UiLCJnZXRDb250ZXh0cyIsImhhcyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjs7QUFFQUEsVUFBVSxDQUFDQyxPQUFYLEdBQXFCLGVBQWVBLE9BQWYsQ0FBd0JDLE1BQXhCLEVBQWdDQyxJQUFoQyxFQUFzQztBQUN6RCxNQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxVQUFiLENBQUosRUFBOEI7QUFDNUJDLG9CQUFPQyxJQUFQLENBQWEsNkJBQTRCSixNQUFPLEdBQWhEOztBQUNBQSxJQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0ssT0FBUCxDQUFlLFVBQWYsRUFBMkIsRUFBM0IsRUFBK0JDLElBQS9CLEVBQVQ7QUFDQSxXQUFPLE1BQU0sS0FBS0MsYUFBTCxDQUFtQlAsTUFBbkIsRUFBMkJRLGdCQUFFQyxPQUFGLENBQVVSLElBQVYsSUFBa0JBLElBQUksQ0FBQyxDQUFELENBQXRCLEdBQTRCQSxJQUF2RCxDQUFiO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDLEtBQUtTLFlBQUwsRUFBTCxFQUEwQjtBQUN4QixVQUFNLElBQUlDLHlCQUFPQyxtQkFBWCxFQUFOO0FBQ0Q7O0FBQ0QsUUFBTUMsUUFBUSxHQUFHLEtBQUtDLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxrQkFBMUIsS0FBaURDLDRCQUFVQyxPQUEzRCxHQUNiLFVBRGEsR0FFYixlQUZKO0FBR0EsU0FBTyxNQUFNLEtBQUtKLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCSSxPQUExQixDQUFrQ04sUUFBbEMsRUFBNEMsTUFBNUMsRUFBb0Q7QUFDL0RiLElBQUFBLE1BRCtEO0FBRS9EQyxJQUFBQTtBQUYrRCxHQUFwRCxDQUFiO0FBSUQsQ0FoQkQ7O0FBa0JBSCxVQUFVLENBQUNTLGFBQVgsR0FBMkIsZUFBZUEsYUFBZixDQUE4QmEsYUFBOUIsRUFBNkNDLElBQUksR0FBRyxFQUFwRCxFQUF3RDtBQUNqRixRQUFNQyxxQkFBcUIsR0FBRztBQUM1QkMsSUFBQUEsS0FBSyxFQUFFLGFBRHFCO0FBRzVCQyxJQUFBQSxxQkFBcUIsRUFBRSw2QkFISztBQUs1QkMsSUFBQUEsa0JBQWtCLEVBQUUsMEJBTFE7QUFNNUJDLElBQUFBLGlCQUFpQixFQUFFLHlCQU5TO0FBUTVCQyxJQUFBQSxpQkFBaUIsRUFBRSx5QkFSUztBQVM1QkMsSUFBQUEsY0FBYyxFQUFFLHNCQVRZO0FBVzVCQyxJQUFBQSxtQkFBbUIsRUFBRSwyQkFYTztBQWE1QkMsSUFBQUEsU0FBUyxFQUFFLFdBYmlCO0FBZTVCQyxJQUFBQSxhQUFhLEVBQUUscUJBZmE7QUFpQjVCQyxJQUFBQSxvQkFBb0IsRUFBRSw0QkFqQk07QUFrQjVCQyxJQUFBQSxtQkFBbUIsRUFBRSwyQkFsQk87QUFvQjVCQyxJQUFBQSxnQkFBZ0IsRUFBRSx3QkFwQlU7QUFzQjVCQyxJQUFBQSxPQUFPLEVBQUUsZUF0Qm1CO0FBd0I1QkMsSUFBQUEsVUFBVSxFQUFFLGtCQXhCZ0I7QUEwQjVCQyxJQUFBQSxZQUFZLEVBQUUsb0JBMUJjO0FBMkI1QkMsSUFBQUEsV0FBVyxFQUFFLG1CQTNCZTtBQTZCNUJDLElBQUFBLFdBQVcsRUFBRTtBQTdCZSxHQUE5Qjs7QUFnQ0EsTUFBSSxDQUFDL0IsZ0JBQUVnQyxHQUFGLENBQU1sQixxQkFBTixFQUE2QkYsYUFBN0IsQ0FBTCxFQUFrRDtBQUNoRCxVQUFNLElBQUlULHlCQUFPOEIsbUJBQVgsQ0FBZ0MsMkJBQTBCckIsYUFBYyxLQUF6QyxHQUNsQyxRQUFPWixnQkFBRWtDLElBQUYsQ0FBT3BCLHFCQUFQLENBQThCLDBCQURsQyxDQUFOO0FBRUQ7O0FBQ0QsU0FBTyxNQUFNLEtBQUtBLHFCQUFxQixDQUFDRixhQUFELENBQTFCLEVBQTJDQyxJQUEzQyxDQUFiO0FBQ0QsQ0F0Q0Q7O2VBd0NldkIsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMsIFBST1RPQ09MUyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5cbmxldCBleHRlbnNpb25zID0ge307XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgbG9nZ2VyLmluZm8oYEV4ZWN1dGluZyBuYXRpdmUgY29tbWFuZCAnJHtzY3JpcHR9J2ApO1xuICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKC9ebW9iaWxlOi8sICcnKS50cmltKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1vYmlsZShzY3JpcHQsIF8uaXNBcnJheShhcmdzKSA/IGFyZ3NbMF0gOiBhcmdzKTtcbiAgfVxuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuICBjb25zdCBlbmRwb2ludCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuZG93bnN0cmVhbVByb3RvY29sID09PSBQUk9UT0NPTFMuTUpTT05XUFxuICAgID8gJy9leGVjdXRlJ1xuICAgIDogJy9leGVjdXRlL3N5bmMnO1xuICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKGVuZHBvaW50LCAnUE9TVCcsIHtcbiAgICBzY3JpcHQsXG4gICAgYXJncyxcbiAgfSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbW9iaWxlQ29tbWFuZHNNYXBwaW5nID0ge1xuICAgIHNoZWxsOiAnbW9iaWxlU2hlbGwnLFxuXG4gICAgZXhlY0VtdUNvbnNvbGVDb21tYW5kOiAnbW9iaWxlRXhlY0VtdUNvbnNvbGVDb21tYW5kJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBjaGFuZ2VQZXJtaXNzaW9uczogJ21vYmlsZUNoYW5nZVBlcm1pc3Npb25zJyxcbiAgICBnZXRQZXJtaXNzaW9uczogJ21vYmlsZUdldFBlcm1pc3Npb25zJyxcblxuICAgIHBlcmZvcm1FZGl0b3JBY3Rpb246ICdtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uJyxcblxuICAgIHNlbnNvclNldDogJ3NlbnNvclNldCcsXG5cbiAgICBnZXREZXZpY2VUaW1lOiAnbW9iaWxlR2V0RGV2aWNlVGltZScsXG5cbiAgICBzdGFydFNjcmVlblN0cmVhbWluZzogJ21vYmlsZVN0YXJ0U2NyZWVuU3RyZWFtaW5nJyxcbiAgICBzdG9wU2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZycsXG5cbiAgICBnZXROb3RpZmljYXRpb25zOiAnbW9iaWxlR2V0Tm90aWZpY2F0aW9ucycsXG5cbiAgICBsaXN0U21zOiAnbW9iaWxlTGlzdFNtcycsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG5cbiAgICBzdGFydFNlcnZpY2U6ICdtb2JpbGVTdGFydFNlcnZpY2UnLFxuICAgIHN0b3BTZXJ2aWNlOiAnbW9iaWxlU3RvcFNlcnZpY2UnLFxuXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
72
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nZ2VyIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsIl8iLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImVuZHBvaW50IiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJjb21tYW5kIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzZW5zb3JTZXQiLCJnZXREZXZpY2VUaW1lIiwic3RhcnRTY3JlZW5TdHJlYW1pbmciLCJzdG9wU2NyZWVuU3RyZWFtaW5nIiwiZ2V0Tm90aWZpY2F0aW9ucyIsImxpc3RTbXMiLCJkZWxldGVGaWxlIiwic3RhcnRTZXJ2aWNlIiwic3RvcFNlcnZpY2UiLCJzdGFydEFjdGl2aXR5IiwiZ2V0Q29udGV4dHMiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxVQUFVLEdBQUcsRUFBakI7O0FBRUFBLFVBQVUsQ0FBQ0MsT0FBWCxHQUFxQixlQUFlQSxPQUFmLENBQXdCQyxNQUF4QixFQUFnQ0MsSUFBaEMsRUFBc0M7QUFDekQsTUFBSUQsTUFBTSxDQUFDRSxLQUFQLENBQWEsVUFBYixDQUFKLEVBQThCO0FBQzVCQyxvQkFBT0MsSUFBUCxDQUFhLDZCQUE0QkosTUFBTyxHQUFoRDs7QUFDQUEsSUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNLLE9BQVAsQ0FBZSxVQUFmLEVBQTJCLEVBQTNCLEVBQStCQyxJQUEvQixFQUFUO0FBQ0EsV0FBTyxNQUFNLEtBQUtDLGFBQUwsQ0FBbUJQLE1BQW5CLEVBQTJCUSxnQkFBRUMsT0FBRixDQUFVUixJQUFWLElBQWtCQSxJQUFJLENBQUMsQ0FBRCxDQUF0QixHQUE0QkEsSUFBdkQsQ0FBYjtBQUNEOztBQUNELE1BQUksQ0FBQyxLQUFLUyxZQUFMLEVBQUwsRUFBMEI7QUFDeEIsVUFBTSxJQUFJQyx5QkFBT0MsbUJBQVgsRUFBTjtBQUNEOztBQUNELFFBQU1DLFFBQVEsR0FBRyxLQUFLQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsa0JBQTFCLEtBQWlEQyw0QkFBVUMsT0FBM0QsR0FDYixVQURhLEdBRWIsZUFGSjtBQUdBLFNBQU8sTUFBTSxLQUFLSixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkksT0FBMUIsQ0FBa0NOLFFBQWxDLEVBQTRDLE1BQTVDLEVBQW9EO0FBQy9EYixJQUFBQSxNQUQrRDtBQUUvREMsSUFBQUE7QUFGK0QsR0FBcEQsQ0FBYjtBQUlELENBaEJEOztBQWtCQUgsVUFBVSxDQUFDUyxhQUFYLEdBQTJCLGVBQWVBLGFBQWYsQ0FBOEJhLGFBQTlCLEVBQTZDQyxJQUFJLEdBQUcsRUFBcEQsRUFBd0Q7QUFDakYsUUFBTUMscUJBQXFCLEdBQUc7QUFDNUJDLElBQUFBLEtBQUssRUFBRSxhQURxQjtBQUc1QkMsSUFBQUEscUJBQXFCLEVBQUUsNkJBSEs7QUFLNUJDLElBQUFBLGtCQUFrQixFQUFFLDBCQUxRO0FBTTVCQyxJQUFBQSxpQkFBaUIsRUFBRSx5QkFOUztBQVE1QkMsSUFBQUEsaUJBQWlCLEVBQUUseUJBUlM7QUFTNUJDLElBQUFBLGNBQWMsRUFBRSxzQkFUWTtBQVc1QkMsSUFBQUEsbUJBQW1CLEVBQUUsMkJBWE87QUFhNUJDLElBQUFBLFNBQVMsRUFBRSxXQWJpQjtBQWU1QkMsSUFBQUEsYUFBYSxFQUFFLHFCQWZhO0FBaUI1QkMsSUFBQUEsb0JBQW9CLEVBQUUsNEJBakJNO0FBa0I1QkMsSUFBQUEsbUJBQW1CLEVBQUUsMkJBbEJPO0FBb0I1QkMsSUFBQUEsZ0JBQWdCLEVBQUUsd0JBcEJVO0FBc0I1QkMsSUFBQUEsT0FBTyxFQUFFLGVBdEJtQjtBQXdCNUJDLElBQUFBLFVBQVUsRUFBRSxrQkF4QmdCO0FBMEI1QkMsSUFBQUEsWUFBWSxFQUFFLG9CQTFCYztBQTJCNUJDLElBQUFBLFdBQVcsRUFBRSxtQkEzQmU7QUE0QjVCQyxJQUFBQSxhQUFhLEVBQUUscUJBNUJhO0FBOEI1QkMsSUFBQUEsV0FBVyxFQUFFO0FBOUJlLEdBQTlCOztBQWlDQSxNQUFJLENBQUNoQyxnQkFBRWlDLEdBQUYsQ0FBTW5CLHFCQUFOLEVBQTZCRixhQUE3QixDQUFMLEVBQWtEO0FBQ2hELFVBQU0sSUFBSVQseUJBQU8rQixtQkFBWCxDQUFnQywyQkFBMEJ0QixhQUFjLEtBQXpDLEdBQ2xDLFFBQU9aLGdCQUFFbUMsSUFBRixDQUFPckIscUJBQVAsQ0FBOEIsMEJBRGxDLENBQU47QUFFRDs7QUFDRCxTQUFPLE1BQU0sS0FBS0EscUJBQXFCLENBQUNGLGFBQUQsQ0FBMUIsRUFBMkNDLElBQTNDLENBQWI7QUFDRCxDQXZDRDs7ZUF5Q2V2QixVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycywgUFJPVE9DT0xTIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmIChzY3JpcHQubWF0Y2goL15tb2JpbGU6LykpIHtcbiAgICBsb2dnZXIuaW5mbyhgRXhlY3V0aW5nIG5hdGl2ZSBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQXG4gICAgPyAnL2V4ZWN1dGUnXG4gICAgOiAnL2V4ZWN1dGUvc3luYyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHNjcmlwdCxcbiAgICBhcmdzLFxuICB9KTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIHN0YXJ0U2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcnLFxuICAgIHN0b3BTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nJyxcblxuICAgIGdldE5vdGlmaWNhdGlvbnM6ICdtb2JpbGVHZXROb3RpZmljYXRpb25zJyxcblxuICAgIGxpc3RTbXM6ICdtb2JpbGVMaXN0U21zJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIHN0YXJ0U2VydmljZTogJ21vYmlsZVN0YXJ0U2VydmljZScsXG4gICAgc3RvcFNlcnZpY2U6ICdtb2JpbGVTdG9wU2VydmljZScsXG4gICAgc3RhcnRBY3Rpdml0eTogJ21vYmlsZVN0YXJ0QWN0aXZpdHknLFxuXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -45,15 +45,15 @@ var _fileActions = _interopRequireDefault(require("./file-actions"));
45
45
 
46
46
  var _appManagement = _interopRequireDefault(require("./app-management"));
47
47
 
48
- var _services = _interopRequireDefault(require("./services"));
48
+ var _intent = _interopRequireDefault(require("./intent"));
49
49
 
50
50
  var _log = _interopRequireDefault(require("./log"));
51
51
 
52
52
  let commands = {};
53
53
  exports.commands = commands;
54
- Object.assign(commands, _find.default, _general.default, _alert.default, _element.default, _context.default, _actions.default, _touch.default, _ime.default, _network.default, _coverage.default, _recordscreen.default, _services.default, _streamscreen.default, _performance.default, _execute.default, _shell.default, _emuConsole.default, _appManagement.default, _fileActions.default, _log.default);
54
+ Object.assign(commands, _find.default, _general.default, _alert.default, _element.default, _context.default, _actions.default, _touch.default, _ime.default, _network.default, _coverage.default, _recordscreen.default, _intent.default, _streamscreen.default, _performance.default, _execute.default, _shell.default, _emuConsole.default, _appManagement.default, _fileActions.default, _log.default);
55
55
  var _default = commands;
56
56
  exports.default = _default;require('source-map-support').install();
57
57
 
58
58
 
59
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiZ2VuZXJhbENtZHMiLCJhbGVydENtZHMiLCJlbGVtZW50Q21kcyIsImNvbnRleHRDbWRzIiwiYWN0aW9uQ21kcyIsInRvdWNoQ21kcyIsImltZUNtZHMiLCJuZXR3b3JrQ21kcyIsImNvdmVyYWdlQ21kcyIsInJlY29yZHNjcmVlbkNtZHMiLCJzZXJ2aWNlc0NtZHMiLCJzY3JlZW5TdHJlYW1DbWRzIiwicGVyZm9ybWFuY2VDbWRzIiwiZXhlY3V0ZUNtZHMiLCJzaGVsbENtZHMiLCJlbXVDb25zb2xlQ21kcyIsImFwcE1hbmFnZW1lbnRDbWRzIiwiZmlsZUFjdGlvbnNDbWRzIiwibG9nQ21kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjs7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLFFBREYsRUFFRUcsYUFGRixFQUdFQyxnQkFIRixFQUlFQyxjQUpGLEVBS0VDLGdCQUxGLEVBTUVDLGdCQU5GLEVBT0VDLGdCQVBGLEVBUUVDLGNBUkYsRUFTRUMsWUFURixFQVVFQyxnQkFWRixFQVdFQyxpQkFYRixFQVlFQyxxQkFaRixFQWFFQyxpQkFiRixFQWNFQyxxQkFkRixFQWVFQyxvQkFmRixFQWdCRUMsZ0JBaEJGLEVBaUJFQyxjQWpCRixFQWtCRUMsbUJBbEJGLEVBbUJFQyxzQkFuQkYsRUFvQkVDLG9CQXBCRixFQXFCRUMsWUFyQkY7ZUEwQmV0QixRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpbmRDbWRzIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgZ2VuZXJhbENtZHMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBhbGVydENtZHMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgZWxlbWVudENtZHMgZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBjb250ZXh0Q21kcyBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGFjdGlvbkNtZHMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB0b3VjaENtZHMgZnJvbSAnLi90b3VjaCc7XG5pbXBvcnQgaW1lQ21kcyBmcm9tICcuL2ltZSc7XG5pbXBvcnQgbmV0d29ya0NtZHMgZnJvbSAnLi9uZXR3b3JrJztcbmltcG9ydCBjb3ZlcmFnZUNtZHMgZnJvbSAnLi9jb3ZlcmFnZSc7XG5pbXBvcnQgcmVjb3Jkc2NyZWVuQ21kcyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgc2NyZWVuU3RyZWFtQ21kcyBmcm9tICcuL3N0cmVhbXNjcmVlbic7XG5pbXBvcnQgcGVyZm9ybWFuY2VDbWRzIGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuaW1wb3J0IGV4ZWN1dGVDbWRzIGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQgc2hlbGxDbWRzIGZyb20gJy4vc2hlbGwnO1xuaW1wb3J0IGVtdUNvbnNvbGVDbWRzIGZyb20gJy4vZW11LWNvbnNvbGUnO1xuaW1wb3J0IGZpbGVBY3Rpb25zQ21kcyBmcm9tICcuL2ZpbGUtYWN0aW9ucyc7XG5pbXBvcnQgYXBwTWFuYWdlbWVudENtZHMgZnJvbSAnLi9hcHAtbWFuYWdlbWVudCc7XG5pbXBvcnQgc2VydmljZXNDbWRzIGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IGxvZ0NtZHMgZnJvbSAnLi9sb2cnO1xuXG5cbmxldCBjb21tYW5kcyA9IHt9O1xuT2JqZWN0LmFzc2lnbihcbiAgY29tbWFuZHMsXG4gIGZpbmRDbWRzLFxuICBnZW5lcmFsQ21kcyxcbiAgYWxlcnRDbWRzLFxuICBlbGVtZW50Q21kcyxcbiAgY29udGV4dENtZHMsXG4gIGFjdGlvbkNtZHMsXG4gIHRvdWNoQ21kcyxcbiAgaW1lQ21kcyxcbiAgbmV0d29ya0NtZHMsXG4gIGNvdmVyYWdlQ21kcyxcbiAgcmVjb3Jkc2NyZWVuQ21kcyxcbiAgc2VydmljZXNDbWRzLFxuICBzY3JlZW5TdHJlYW1DbWRzLFxuICBwZXJmb3JtYW5jZUNtZHMsXG4gIGV4ZWN1dGVDbWRzLFxuICBzaGVsbENtZHMsXG4gIGVtdUNvbnNvbGVDbWRzLFxuICBhcHBNYW5hZ2VtZW50Q21kcyxcbiAgZmlsZUFjdGlvbnNDbWRzLFxuICBsb2dDbWRzLFxuICAvLyBhZGQgb3RoZXIgY29tbWFuZCB0eXBlcyBoZXJlXG4pO1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiZ2VuZXJhbENtZHMiLCJhbGVydENtZHMiLCJlbGVtZW50Q21kcyIsImNvbnRleHRDbWRzIiwiYWN0aW9uQ21kcyIsInRvdWNoQ21kcyIsImltZUNtZHMiLCJuZXR3b3JrQ21kcyIsImNvdmVyYWdlQ21kcyIsInJlY29yZHNjcmVlbkNtZHMiLCJpbnRlbnRDbWRzIiwic2NyZWVuU3RyZWFtQ21kcyIsInBlcmZvcm1hbmNlQ21kcyIsImV4ZWN1dGVDbWRzIiwic2hlbGxDbWRzIiwiZW11Q29uc29sZUNtZHMiLCJhcHBNYW5hZ2VtZW50Q21kcyIsImZpbGVBY3Rpb25zQ21kcyIsImxvZ0NtZHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsUUFBUSxHQUFHLEVBQWY7O0FBQ0FDLE1BQU0sQ0FBQ0MsTUFBUCxDQUNFRixRQURGLEVBRUVHLGFBRkYsRUFHRUMsZ0JBSEYsRUFJRUMsY0FKRixFQUtFQyxnQkFMRixFQU1FQyxnQkFORixFQU9FQyxnQkFQRixFQVFFQyxjQVJGLEVBU0VDLFlBVEYsRUFVRUMsZ0JBVkYsRUFXRUMsaUJBWEYsRUFZRUMscUJBWkYsRUFhRUMsZUFiRixFQWNFQyxxQkFkRixFQWVFQyxvQkFmRixFQWdCRUMsZ0JBaEJGLEVBaUJFQyxjQWpCRixFQWtCRUMsbUJBbEJGLEVBbUJFQyxzQkFuQkYsRUFvQkVDLG9CQXBCRixFQXFCRUMsWUFyQkY7ZUEwQmV0QixRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpbmRDbWRzIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgZ2VuZXJhbENtZHMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBhbGVydENtZHMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgZWxlbWVudENtZHMgZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBjb250ZXh0Q21kcyBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGFjdGlvbkNtZHMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB0b3VjaENtZHMgZnJvbSAnLi90b3VjaCc7XG5pbXBvcnQgaW1lQ21kcyBmcm9tICcuL2ltZSc7XG5pbXBvcnQgbmV0d29ya0NtZHMgZnJvbSAnLi9uZXR3b3JrJztcbmltcG9ydCBjb3ZlcmFnZUNtZHMgZnJvbSAnLi9jb3ZlcmFnZSc7XG5pbXBvcnQgcmVjb3Jkc2NyZWVuQ21kcyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgc2NyZWVuU3RyZWFtQ21kcyBmcm9tICcuL3N0cmVhbXNjcmVlbic7XG5pbXBvcnQgcGVyZm9ybWFuY2VDbWRzIGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuaW1wb3J0IGV4ZWN1dGVDbWRzIGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQgc2hlbGxDbWRzIGZyb20gJy4vc2hlbGwnO1xuaW1wb3J0IGVtdUNvbnNvbGVDbWRzIGZyb20gJy4vZW11LWNvbnNvbGUnO1xuaW1wb3J0IGZpbGVBY3Rpb25zQ21kcyBmcm9tICcuL2ZpbGUtYWN0aW9ucyc7XG5pbXBvcnQgYXBwTWFuYWdlbWVudENtZHMgZnJvbSAnLi9hcHAtbWFuYWdlbWVudCc7XG5pbXBvcnQgaW50ZW50Q21kcyBmcm9tICcuL2ludGVudCc7XG5pbXBvcnQgbG9nQ21kcyBmcm9tICcuL2xvZyc7XG5cblxubGV0IGNvbW1hbmRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBjb21tYW5kcyxcbiAgZmluZENtZHMsXG4gIGdlbmVyYWxDbWRzLFxuICBhbGVydENtZHMsXG4gIGVsZW1lbnRDbWRzLFxuICBjb250ZXh0Q21kcyxcbiAgYWN0aW9uQ21kcyxcbiAgdG91Y2hDbWRzLFxuICBpbWVDbWRzLFxuICBuZXR3b3JrQ21kcyxcbiAgY292ZXJhZ2VDbWRzLFxuICByZWNvcmRzY3JlZW5DbWRzLFxuICBpbnRlbnRDbWRzLFxuICBzY3JlZW5TdHJlYW1DbWRzLFxuICBwZXJmb3JtYW5jZUNtZHMsXG4gIGV4ZWN1dGVDbWRzLFxuICBzaGVsbENtZHMsXG4gIGVtdUNvbnNvbGVDbWRzLFxuICBhcHBNYW5hZ2VtZW50Q21kcyxcbiAgZmlsZUFjdGlvbnNDbWRzLFxuICBsb2dDbWRzLFxuICAvLyBhZGQgb3RoZXIgY29tbWFuZCB0eXBlcyBoZXJlXG4pO1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.commands = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _lodash = _interopRequireDefault(require("lodash"));
13
+
14
+ var _appiumBaseDriver = require("appium-base-driver");
15
+
16
+ const NO_VALUE_ARG_TYPE = 'sn';
17
+ const SUPPORTED_EXTRA_TYPES = ['s', NO_VALUE_ARG_TYPE, 'z', 'i', 'l', 'f', 'u', 'cn', 'ia', 'ial', 'la', 'lal', 'fa', 'fal', 'sa', 'sal'];
18
+ const API_LEVEL_ANDROID_8 = 26;
19
+ const commands = {};
20
+ exports.commands = commands;
21
+
22
+ function requireOptions(opts, requiredKeys = []) {
23
+ const missingKeys = _lodash.default.difference(requiredKeys, _lodash.default.keys(opts));
24
+
25
+ if (!_lodash.default.isEmpty(missingKeys)) {
26
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`The following options are required: ${missingKeys}`);
27
+ }
28
+
29
+ return opts;
30
+ }
31
+
32
+ function parseCommonIntentArguments(opts = {}) {
33
+ const {
34
+ action,
35
+ uri,
36
+ mimeType,
37
+ identifier,
38
+ categories,
39
+ component,
40
+ extras,
41
+ flags
42
+ } = opts;
43
+ const resultArgs = [];
44
+
45
+ if (action) {
46
+ resultArgs.push('-a', action);
47
+ }
48
+
49
+ if (uri) {
50
+ resultArgs.push('-d', uri);
51
+ }
52
+
53
+ if (mimeType) {
54
+ resultArgs.push('-t', mimeType);
55
+ }
56
+
57
+ if (!_lodash.default.isNil(identifier)) {
58
+ resultArgs.push('-i', identifier);
59
+ }
60
+
61
+ if (categories) {
62
+ if (_lodash.default.isArray(categories)) {
63
+ resultArgs.push(..._lodash.default.flatMap(categories.map(cName => ['-c', cName])));
64
+ } else {
65
+ resultArgs.push('-c', categories);
66
+ }
67
+ }
68
+
69
+ if (component) {
70
+ resultArgs.push('-n', component);
71
+ }
72
+
73
+ if (extras) {
74
+ if (!_lodash.default.isArray(extras)) {
75
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`'extras' must be an array`);
76
+ }
77
+
78
+ for (const item of extras) {
79
+ let type;
80
+ let value;
81
+
82
+ if (_lodash.default.isArray(item)) {
83
+ [type, value] = item;
84
+ } else {
85
+ type = item;
86
+ }
87
+
88
+ if (!_lodash.default.includes(SUPPORTED_EXTRA_TYPES, type)) {
89
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`Intent argument type '${type}' is not known. ` + `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`);
90
+ }
91
+
92
+ if (type === NO_VALUE_ARG_TYPE) {
93
+ resultArgs.push(`--e${type}`);
94
+ } else if (_lodash.default.isUndefined(value)) {
95
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`Intent argument type '${type}' requires a ` + `value to be provided`);
96
+ } else {
97
+ resultArgs.push(`--e${type}`, value);
98
+ }
99
+ }
100
+ }
101
+
102
+ if (flags) {
103
+ resultArgs.push('-f', flags);
104
+ }
105
+
106
+ return resultArgs;
107
+ }
108
+
109
+ commands.mobileStartActivity = async function mobileStartActivity(opts = {}) {
110
+ const {
111
+ intent,
112
+ user,
113
+ wait,
114
+ stop,
115
+ windowingMode,
116
+ activityType,
117
+ display
118
+ } = requireOptions(opts, ['intent']);
119
+ const cmd = ['am', (await this.adb.getApiLevel()) < API_LEVEL_ANDROID_8 ? 'start' : 'start-activity'];
120
+
121
+ if (!_lodash.default.isNil(user)) {
122
+ cmd.push('--user', user);
123
+ }
124
+
125
+ if (wait) {
126
+ cmd.push('-W');
127
+ }
128
+
129
+ if (stop) {
130
+ cmd.push('-S');
131
+ }
132
+
133
+ if (!_lodash.default.isNil(windowingMode)) {
134
+ cmd.push('--windowingMode', windowingMode);
135
+ }
136
+
137
+ if (!_lodash.default.isNil(activityType)) {
138
+ cmd.push('--activityType', activityType);
139
+ }
140
+
141
+ if (!_lodash.default.isNil(display)) {
142
+ cmd.push('--display', display);
143
+ }
144
+
145
+ cmd.push(...parseCommonIntentArguments(opts));
146
+ cmd.push(intent);
147
+ return await this.adb.shell(cmd);
148
+ };
149
+
150
+ commands.mobileStartService = async function mobileStartService(opts = {}) {
151
+ const {
152
+ intent,
153
+ user,
154
+ foreground
155
+ } = requireOptions(opts, ['intent']);
156
+ const cmd = ['am'];
157
+
158
+ if ((await this.adb.getApiLevel()) < API_LEVEL_ANDROID_8) {
159
+ cmd.push('startservice');
160
+ } else {
161
+ cmd.push(foreground ? 'start-foreground-service' : 'start-service');
162
+ }
163
+
164
+ if (!_lodash.default.isNil(user)) {
165
+ cmd.push('--user', user);
166
+ }
167
+
168
+ cmd.push(...parseCommonIntentArguments(opts));
169
+ cmd.push(intent);
170
+ return await this.adb.shell(cmd);
171
+ };
172
+
173
+ commands.mobileStopService = async function mobileStopService(opts = {}) {
174
+ const {
175
+ intent,
176
+ user
177
+ } = requireOptions(opts, ['intent']);
178
+ const cmd = ['am', (await this.adb.getApiLevel()) < API_LEVEL_ANDROID_8 ? 'stopservice' : 'stop-service'];
179
+
180
+ if (!_lodash.default.isNil(user)) {
181
+ cmd.push('--user', user);
182
+ }
183
+
184
+ cmd.push(...parseCommonIntentArguments(opts));
185
+ cmd.push(intent);
186
+ return await this.adb.shell(cmd);
187
+ };
188
+
189
+ var _default = commands;
190
+ exports.default = _default;require('source-map-support').install();
191
+
192
+
193
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbnRlbnQuanMiXSwibmFtZXMiOlsiTk9fVkFMVUVfQVJHX1RZUEUiLCJTVVBQT1JURURfRVhUUkFfVFlQRVMiLCJBUElfTEVWRUxfQU5EUk9JRF84IiwiY29tbWFuZHMiLCJyZXF1aXJlT3B0aW9ucyIsIm9wdHMiLCJyZXF1aXJlZEtleXMiLCJtaXNzaW5nS2V5cyIsIl8iLCJkaWZmZXJlbmNlIiwia2V5cyIsImlzRW1wdHkiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsInBhcnNlQ29tbW9uSW50ZW50QXJndW1lbnRzIiwiYWN0aW9uIiwidXJpIiwibWltZVR5cGUiLCJpZGVudGlmaWVyIiwiY2F0ZWdvcmllcyIsImNvbXBvbmVudCIsImV4dHJhcyIsImZsYWdzIiwicmVzdWx0QXJncyIsInB1c2giLCJpc05pbCIsImlzQXJyYXkiLCJmbGF0TWFwIiwibWFwIiwiY05hbWUiLCJpdGVtIiwidHlwZSIsInZhbHVlIiwiaW5jbHVkZXMiLCJpc1VuZGVmaW5lZCIsIm1vYmlsZVN0YXJ0QWN0aXZpdHkiLCJpbnRlbnQiLCJ1c2VyIiwid2FpdCIsInN0b3AiLCJ3aW5kb3dpbmdNb2RlIiwiYWN0aXZpdHlUeXBlIiwiZGlzcGxheSIsImNtZCIsImFkYiIsImdldEFwaUxldmVsIiwic2hlbGwiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsSUFBMUI7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxDQUM1QixHQUQ0QixFQUN2QkQsaUJBRHVCLEVBQ0osR0FESSxFQUNDLEdBREQsRUFDTSxHQUROLEVBQ1csR0FEWCxFQUNnQixHQURoQixFQUNxQixJQURyQixFQUU1QixJQUY0QixFQUV0QixLQUZzQixFQUVmLElBRmUsRUFFVCxLQUZTLEVBRUYsSUFGRSxFQUVJLEtBRkosRUFF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QUF2QztBQUNBc0MsRUFBQUEsR0FBRyxDQUFDbkIsSUFBSixDQUFTWSxNQUFUO0FBQ0EsU0FBTyxNQUFNLEtBQUtRLEdBQUwsQ0FBU0UsS0FBVCxDQUFlSCxHQUFmLENBQWI7QUFDRCxDQWZEOztlQW1CZXhDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiByZXF1aXJlT3B0aW9ucyAob3B0cywgcmVxdWlyZWRLZXlzID0gW10pIHtcbiAgY29uc3QgbWlzc2luZ0tleXMgPSBfLmRpZmZlcmVuY2UocmVxdWlyZWRLZXlzLCBfLmtleXMob3B0cykpO1xuICBpZiAoIV8uaXNFbXB0eShtaXNzaW5nS2V5cykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHJlcXVpcmVkOiAke21pc3NpbmdLZXlzfWApO1xuICB9XG4gIHJldHVybiBvcHRzO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNvbW1vbkludGVudEFyZ3VtZW50cyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBhY3Rpb24sXG4gICAgdXJpLFxuICAgIG1pbWVUeXBlLFxuICAgIGlkZW50aWZpZXIsXG4gICAgY2F0ZWdvcmllcyxcbiAgICBjb21wb25lbnQsXG4gICAgZXh0cmFzLFxuICAgIGZsYWdzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgcmVzdWx0QXJncyA9IFtdO1xuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKGV4dHJhcykge1xuICAgIGlmICghXy5pc0FycmF5KGV4dHJhcykpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdleHRyYXMnIG11c3QgYmUgYW4gYXJyYXlgKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGV4dHJhcykge1xuICAgICAgbGV0IHR5cGU7XG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBpZiAoXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIFt0eXBlLCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9IGl0ZW07XG4gICAgICB9XG4gICAgICBpZiAoIV8uaW5jbHVkZXMoU1VQUE9SVEVEX0VYVFJBX1RZUEVTLCB0eXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBJbnRlbnQgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWApO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IE5PX1ZBTFVFX0FSR19UWVBFKSB7XG4gICAgICAgIHJlc3VsdEFyZ3MucHVzaChgLS1lJHt0eXBlfWApO1xuICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBJbnRlbnQgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsdWUgdG8gYmUgcHJvdmlkZWRgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdEFyZ3MucHVzaChgLS1lJHt0eXBlfWAsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLiBUaGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSB1c2VyIFsnY3VycmVudCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBzZXJ2aWNlIGlzIHN0YXJ0ZWQuXG4gKiBUaGUgYGN1cnJlbnRgIHVzZXIgaWQgaXMgdXNlZCBieSBkZWZhdWx0XG4gKiBAcHJvcGVydHkgez9ib29sZWFufSB3YWl0IFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIGlmIHlvdSB3YW50IHRvIGJsb2NrIHRoZSBtZXRob2QgY2FsbFxuICogdW50aWwgdGhlIGFjdGl2aXR5IG1hbmFnZXIncyBwcm9jZXNzIHJldHVybnMgdGhlIGNvbnRyb2wgdG8gdGhlIHN5c3RlbS5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHN0b3AgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgdG8gZm9yY2Ugc3RvcCB0aGUgdGFyZ2V0XG4gKiBhcHAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eVxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gd2luZG93aW5nTW9kZSAtIFRoZSB3aW5kb3dpbmcgbW9kZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGludG8uXG4gKiBDaGVjayBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9tYXN0ZXIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL1dpbmRvd0NvbmZpZ3VyYXRpb24uamF2YVxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBwb3NzaWJsZSB3aW5kb3dpbmcgbW9kZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBXSU5ET1dJTkdfTU9ERV9gKS5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IGFjdGl2aXR5VHlwZSAtIFRoZSBhY3Rpdml0eSB0eXBlIHRvIGxhdW5jaCB0aGUgYWN0aXZpdHkgYXMuXG4gKiBDaGVjayBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9tYXN0ZXIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL1dpbmRvd0NvbmZpZ3VyYXRpb24uamF2YVxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBwb3NzaWJsZSBhY3Rpdml0eSB0eXBlcyAoY29uc3RhbnRzIHN0YXJ0aW5nIHdpdGggYEFDVElWSVRZX1RZUEVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBkaXNwbGF5IC0gVGhlIGRpc3BsYXkgaWRlbnRpZmllciB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGludG8uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmd8QXJyYXk8c3RyaW5nPj59IGV4dHJhcyAtIE9wdGlvbmFsIGludGVudCBhcmd1bWVudHMuIE11c3QgYmUgcmVwcmVzZW50ZWRcbiAqIGFzIGFycmF5IG9mIGFycmF5cywgd2hlcmUgZWFjaCBzdWJhcnJheSBpdGVtIGNvbnRhaW5zIHR3byBpdGVtczogdmFsdWUgdHlwZSBhbmQgdGhlIHZhbHVlIGl0c2VsZi5cbiAqIFN1cHBvcnRlZCB2YWx1ZSB0eXBlcyBhcmU6XG4gKiAtIHM6IHN0cmluZy4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHN0cmluZ1xuICogLSBzbjogbnVsbC4gVmFsdWUgaXMgaWdub3JlZCBmb3IgdGhpcyB0eXBlXG4gKiAtIHo6IGJvb2xlYW4uIFZhbHVlIG11c3QgYmUgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgXG4gKiAtIGk6IGludGVnZXIuIFZhbHVlIG11c3QgYmUgYSB2YWxpZCA0LWJ5dGUgaW50ZWdlciBudW1iZXJcbiAqIC0gbDogbG9uZy4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDgtYnl0ZSBsb25nIG51bWJlclxuICogLSBmOiBmbG9hdDogVmFsdWUgbXVzdCBiZSBhIHZhbGlkIGZsb2F0IG51bWJlclxuICogLSB1OiB1cmkuIFZhbHVlIG11c3QgYmUgYSB2YWxpZCB1bmlmb3JtIHJlc291cmNlIGlkZW50aWZpZXIgc3RyaW5nXG4gKiAtIGNuOiBjb21wb25lbnQgbmFtZS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIGNvbXBvbmVudCBuYW1lIHN0cmluZ1xuICogLSBpYTogSW50ZWdlcltdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBpbnRlZ2Vyc1xuICogLSBpYWw6IExpc3Q8SW50ZWdlcj4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGxhOiBMb25nW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGxvbmcgbnVtYmVyc1xuICogLSBsYWw6IExpc3Q8TG9uZz4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGxvbmcgbnVtYmVyc1xuICogLSBmYTogRmxvYXRbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgZmxvYXQgbnVtYmVyc1xuICogLSBmYWw6IExpc3Q8RmxvYXQ+LiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIHNhOiBTdHJpbmdbXS4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIC0gc2FsOiBMaXN0PFN0cmluZz4uIFZhbHVlIG11c3QgYmUgY29tbWEtc2VwYXJhdGVkIHN0cmluZ3MuIFRvIGVtYmVkIGEgY29tbWEgaW50byBhIHN0cmluZyxcbiAqIGVzY2FwZSBpdCB1c2luZyBcIlxcLFwiXG4gKiBGb3IgZXhhbXBsZTogW1sncycsICdNeSBTdHJpbmcxJ10sIFsncycsICdNeSBTdHJpbmcyJ10sIFsnaWEnLCAnMSwyLDMsNCddXVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50Lmh0bWxcbiAqIGZvciB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmxhZyB2YWx1ZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIEZMQUdfQUNUSVZJVFlfKS5cbiAqIEZsYWcgdmFsdWVzIGNvdWxkIGJlIG1lcmdlZCB1c2luZyB0aGUgbG9naWNhbCAnb3InIG9wZXJhdGlvbi5cbiAqIEZvciBleGFtcGxlLCAweDEwMjAwMDAwIGlzIHRoZSBjb21iaW5hdGlvbiBvZiB0d28gZmxhZ3M6XG4gKiAweDEwMDAwMDAwIGBGTEFHX0FDVElWSVRZX05FV19UQVNLYCB8IDB4MDAyMDAwMDAgYEZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERURgXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIGFjdGl2aXR5IGludGVudC5cbiAqXG4gKiBAcGFyYW0ge1N0YXJ0QWN0aXZpdHlPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydEFjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRBY3Rpdml0eSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlbnQsXG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnaW50ZW50J10pO1xuICBjb25zdCBjbWQgPSBbXG4gICAgJ2FtJywgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdGFydCcgOiAnc3RhcnQtYWN0aXZpdHknLFxuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgaWYgKHdhaXQpIHtcbiAgICBjbWQucHVzaCgnLVcnKTtcbiAgfVxuICBpZiAoc3RvcCkge1xuICAgIGNtZC5wdXNoKCctUycpO1xuICB9XG4gIGlmICghXy5pc05pbCh3aW5kb3dpbmdNb2RlKSkge1xuICAgIGNtZC5wdXNoKCctLXdpbmRvd2luZ01vZGUnLCB3aW5kb3dpbmdNb2RlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoYWN0aXZpdHlUeXBlKSkge1xuICAgIGNtZC5wdXNoKCctLWFjdGl2aXR5VHlwZScsIGFjdGl2aXR5VHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGRpc3BsYXkpKSB7XG4gICAgY21kLnB1c2goJy0tZGlzcGxheScsIGRpc3BsYXkpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUNvbW1vbkludGVudEFyZ3VtZW50cyhvcHRzKSkpO1xuICBjbWQucHVzaChpbnRlbnQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRTZXJ2aWNlT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZSBpbnRlbnQgdG8gc3RhcnQsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuIFRoaXMgb3B0aW9uIGlzIG1hbmRhdG9yeS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gYWN0aW9uIC0gQWN0aW9uIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIGl0ZW1zOiB2YWx1ZSB0eXBlIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ015IFN0cmluZzEnXSwgWydzJywgJ015IFN0cmluZzInXSwgWydpYScsICcxLDIsMyw0J11dXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gSW50ZW50IHN0YXJ0dXAtc3BlY2lmaWMgZmxhZ3MgYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuXG4gKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvY29udGVudC9JbnRlbnQuaHRtbFxuICogZm9yIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmbGFnIHZhbHVlcyAoY29uc3RhbnRzIHN0YXJ0aW5nIHdpdGggRkxBR19BQ1RJVklUWV8pLlxuICogRmxhZyB2YWx1ZXMgY291bGQgYmUgbWVyZ2VkIHVzaW5nIHRoZSBsb2dpY2FsICdvcicgb3BlcmF0aW9uLlxuICogRm9yIGV4YW1wbGUsIDB4MTAyMDAwMDAgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIHR3byBmbGFnczpcbiAqIDB4MTAwMDAwMDAgYEZMQUdfQUNUSVZJVFlfTkVXX1RBU0tgIHwgMHgwMDIwMDAwMCBgRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRGBcbiAqL1xuXG4vKipcbiAqIFN0YXJ0cyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydFNlcnZpY2VPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHN0YXJ0aW5nIHRoZSBzZXJ2aWNlXG4gKiBvciByZXF1aXJlZCBvcHRpb25zIGFyZSBtaXNzaW5nXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0YXJ0U2VydmljZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0U2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBpbnRlbnQsXG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydpbnRlbnQnXSk7XG4gIGNvbnN0IGNtZCA9IFsnYW0nXTtcbiAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSB7XG4gICAgY21kLnB1c2goJ3N0YXJ0c2VydmljZScpO1xuICB9IGVsc2Uge1xuICAgIGNtZC5wdXNoKGZvcmVncm91bmQgPyAnc3RhcnQtZm9yZWdyb3VuZC1zZXJ2aWNlJyA6ICdzdGFydC1zZXJ2aWNlJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUNvbW1vbkludGVudEFyZ3VtZW50cyhvcHRzKSkpO1xuICBjbWQucHVzaChpbnRlbnQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIGludGVudCB0byBzdG9wLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLiBUaGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqL1xuXG4vKipcbiAqIFN0b3BzIHRoZSBnaXZlbiBzZXJ2aWNlIGludGVudC5cbiAqXG4gKiBAcGFyYW0ge1N0b3BTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdG9wcGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wU2VydmljZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BTZXJ2aWNlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGludGVudCxcbiAgICB1c2VyLFxuICB9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydpbnRlbnQnXSk7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLFxuICAgIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgQVBJX0xFVkVMX0FORFJPSURfOCkgPyAnc3RvcHNlcnZpY2UnIDogJ3N0b3Atc2VydmljZSdcbiAgXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUNvbW1vbkludGVudEFyZ3VtZW50cyhvcHRzKSkpO1xuICBjbWQucHVzaChpbnRlbnQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW50ZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -51,6 +51,7 @@ extensions.executeMobile = async function executeMobile (mobileCommand, opts = {
51
51
 
52
52
  startService: 'mobileStartService',
53
53
  stopService: 'mobileStopService',
54
+ startActivity: 'mobileStartActivity',
54
55
 
55
56
  getContexts: 'mobileGetContexts',
56
57
  };
@@ -16,7 +16,7 @@ import shellCmds from './shell';
16
16
  import emuConsoleCmds from './emu-console';
17
17
  import fileActionsCmds from './file-actions';
18
18
  import appManagementCmds from './app-management';
19
- import servicesCmds from './services';
19
+ import intentCmds from './intent';
20
20
  import logCmds from './log';
21
21
 
22
22
 
@@ -34,7 +34,7 @@ Object.assign(
34
34
  networkCmds,
35
35
  coverageCmds,
36
36
  recordscreenCmds,
37
- servicesCmds,
37
+ intentCmds,
38
38
  screenStreamCmds,
39
39
  performanceCmds,
40
40
  executeCmds,
@@ -0,0 +1,292 @@
1
+ import _ from 'lodash';
2
+ import { errors } from 'appium-base-driver';
3
+
4
+ const NO_VALUE_ARG_TYPE = 'sn';
5
+ const SUPPORTED_EXTRA_TYPES = [
6
+ 's', NO_VALUE_ARG_TYPE, 'z', 'i', 'l', 'f', 'u', 'cn',
7
+ 'ia', 'ial', 'la', 'lal', 'fa', 'fal', 'sa', 'sal',
8
+ ];
9
+ const API_LEVEL_ANDROID_8 = 26;
10
+
11
+ const commands = {};
12
+
13
+ function requireOptions (opts, requiredKeys = []) {
14
+ const missingKeys = _.difference(requiredKeys, _.keys(opts));
15
+ if (!_.isEmpty(missingKeys)) {
16
+ throw new errors.InvalidArgumentError(`The following options are required: ${missingKeys}`);
17
+ }
18
+ return opts;
19
+ }
20
+
21
+ function parseCommonIntentArguments (opts = {}) {
22
+ const {
23
+ action,
24
+ uri,
25
+ mimeType,
26
+ identifier,
27
+ categories,
28
+ component,
29
+ extras,
30
+ flags,
31
+ } = opts;
32
+ const resultArgs = [];
33
+ if (action) {
34
+ resultArgs.push('-a', action);
35
+ }
36
+ if (uri) {
37
+ resultArgs.push('-d', uri);
38
+ }
39
+ if (mimeType) {
40
+ resultArgs.push('-t', mimeType);
41
+ }
42
+ if (!_.isNil(identifier)) {
43
+ resultArgs.push('-i', identifier);
44
+ }
45
+ if (categories) {
46
+ if (_.isArray(categories)) {
47
+ resultArgs.push(...(_.flatMap(categories.map((cName) => ['-c', cName]))));
48
+ } else {
49
+ resultArgs.push('-c', categories);
50
+ }
51
+ }
52
+ if (component) {
53
+ resultArgs.push('-n', component);
54
+ }
55
+ if (extras) {
56
+ if (!_.isArray(extras)) {
57
+ throw new errors.InvalidArgumentError(`'extras' must be an array`);
58
+ }
59
+ for (const item of extras) {
60
+ let type;
61
+ let value;
62
+ if (_.isArray(item)) {
63
+ [type, value] = item;
64
+ } else {
65
+ type = item;
66
+ }
67
+ if (!_.includes(SUPPORTED_EXTRA_TYPES, type)) {
68
+ throw new errors.InvalidArgumentError(`Intent argument type '${type}' is not known. ` +
69
+ `Supported intent argument types are: ${SUPPORTED_EXTRA_TYPES}`);
70
+ }
71
+ if (type === NO_VALUE_ARG_TYPE) {
72
+ resultArgs.push(`--e${type}`);
73
+ } else if (_.isUndefined(value)) {
74
+ throw new errors.InvalidArgumentError(`Intent argument type '${type}' requires a ` +
75
+ `value to be provided`);
76
+ } else {
77
+ resultArgs.push(`--e${type}`, value);
78
+ }
79
+ }
80
+ }
81
+ if (flags) {
82
+ resultArgs.push('-f', flags);
83
+ }
84
+ return resultArgs;
85
+ }
86
+
87
+ /**
88
+ * @typedef {Object} StartActivityOptions
89
+ * @property {!string} intent - The name of the activity intent to start, for example
90
+ * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
91
+ * @property {?string|number} user ['current'] - The user ID for which the service is started.
92
+ * The `current` user id is used by default
93
+ * @property {?boolean} wait [false] - Set it to `true` if you want to block the method call
94
+ * until the activity manager's process returns the control to the system.
95
+ * @property {?boolean} stop [false] - Set it to `true` to force stop the target
96
+ * app before starting the activity
97
+ * @property {?number|string} windowingMode - The windowing mode to launch the activity into.
98
+ * Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java
99
+ * for more details on possible windowing modes (constants starting with `WINDOWING_MODE_`).
100
+ * @property {?number|string} activityType - The activity type to launch the activity as.
101
+ * Check https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/WindowConfiguration.java
102
+ * for more details on possible activity types (constants starting with `ACTIVITY_TYPE_`).
103
+ * @property {?number|string} display - The display identifier to launch the activity into.
104
+ * @property {?string} action - Action name
105
+ * @property {?string} uri - Unified resource identifier
106
+ * @property {?string} mimeType - Mime type
107
+ * @property {?string} identifier - Optional identifier
108
+ * @property {?string|Array<string>} categories - One or more category names
109
+ * @property {?string} component - Component name
110
+ * @property {Array<string|Array<string>>} extras - Optional intent arguments. Must be represented
111
+ * as array of arrays, where each subarray item contains two items: value type and the value itself.
112
+ * Supported value types are:
113
+ * - s: string. Value must be a valid string
114
+ * - sn: null. Value is ignored for this type
115
+ * - z: boolean. Value must be either `true` or `false`
116
+ * - i: integer. Value must be a valid 4-byte integer number
117
+ * - l: long. Value must be a valid 8-byte long number
118
+ * - f: float: Value must be a valid float number
119
+ * - u: uri. Value must be a valid uniform resource identifier string
120
+ * - cn: component name. Value must be a valid component name string
121
+ * - ia: Integer[]. Value must be a string of comma-separated integers
122
+ * - ial: List<Integer>. Value must be a string of comma-separated integers
123
+ * - la: Long[]. Value must be a string of comma-separated long numbers
124
+ * - lal: List<Long>. Value must be a string of comma-separated long numbers
125
+ * - fa: Float[]. Value must be a string of comma-separated float numbers
126
+ * - fal: List<Float>. Value must be a string of comma-separated float numbers
127
+ * - sa: String[]. Value must be comma-separated strings. To embed a comma into a string,
128
+ * escape it using "\,"
129
+ * - sal: List<String>. Value must be comma-separated strings. To embed a comma into a string,
130
+ * escape it using "\,"
131
+ * For example: [['s', 'My String1'], ['s', 'My String2'], ['ia', '1,2,3,4']]
132
+ * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.
133
+ * See https://developer.android.com/reference/android/content/Intent.html
134
+ * for the list of available flag values (constants starting with FLAG_ACTIVITY_).
135
+ * Flag values could be merged using the logical 'or' operation.
136
+ * For example, 0x10200000 is the combination of two flags:
137
+ * 0x10000000 `FLAG_ACTIVITY_NEW_TASK` | 0x00200000 `FLAG_ACTIVITY_RESET_TASK_IF_NEEDED`
138
+ */
139
+
140
+ /**
141
+ * Starts the given activity intent.
142
+ *
143
+ * @param {StartActivityOptions} opts
144
+ * @returns {string} The command output
145
+ * @throws {Error} If there was a failure while starting the activity
146
+ * or required options are missing
147
+ */
148
+ commands.mobileStartActivity = async function mobileStartActivity (opts = {}) {
149
+ const {
150
+ intent,
151
+ user,
152
+ wait,
153
+ stop,
154
+ windowingMode,
155
+ activityType,
156
+ display,
157
+ } = requireOptions(opts, ['intent']);
158
+ const cmd = [
159
+ 'am', (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) ? 'start' : 'start-activity',
160
+ ];
161
+ if (!_.isNil(user)) {
162
+ cmd.push('--user', user);
163
+ }
164
+ if (wait) {
165
+ cmd.push('-W');
166
+ }
167
+ if (stop) {
168
+ cmd.push('-S');
169
+ }
170
+ if (!_.isNil(windowingMode)) {
171
+ cmd.push('--windowingMode', windowingMode);
172
+ }
173
+ if (!_.isNil(activityType)) {
174
+ cmd.push('--activityType', activityType);
175
+ }
176
+ if (!_.isNil(display)) {
177
+ cmd.push('--display', display);
178
+ }
179
+ cmd.push(...(parseCommonIntentArguments(opts)));
180
+ cmd.push(intent);
181
+ return await this.adb.shell(cmd);
182
+ };
183
+
184
+ /**
185
+ * @typedef {Object} StartServiceOptions
186
+ * @property {!string} intent - The name of the service intent to start, for example
187
+ * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
188
+ * @property {?string|number} user ['current'] - The user ID for which the service is started.
189
+ * The `current` user id is used by default
190
+ * @property {?boolean} foreground [false] - Set it to `true` if your service must be
191
+ * started as foreground service. This option is ignored if the API level of the
192
+ * device under test is below 26 (Android 8).
193
+ * @property {?string} action - Action name
194
+ * @property {?string} uri - Unified resource identifier
195
+ * @property {?string} mimeType - Mime type
196
+ * @property {?string} identifier - Optional identifier
197
+ * @property {?string|Array<string>} categories - One or more category names
198
+ * @property {?string} component - Component name
199
+ * @property {Array<string|Array<string>>} extras - Optional intent arguments. Must be represented
200
+ * as array of arrays, where each subarray item contains two items: value type and the value itself.
201
+ * Supported value types are:
202
+ * - s: string. Value must be a valid string
203
+ * - sn: null. Value is ignored for this type
204
+ * - z: boolean. Value must be either `true` or `false`
205
+ * - i: integer. Value must be a valid 4-byte integer number
206
+ * - l: long. Value must be a valid 8-byte long number
207
+ * - f: float: Value must be a valid float number
208
+ * - u: uri. Value must be a valid uniform resource identifier string
209
+ * - cn: component name. Value must be a valid component name string
210
+ * - ia: Integer[]. Value must be a string of comma-separated integers
211
+ * - ial: List<Integer>. Value must be a string of comma-separated integers
212
+ * - la: Long[]. Value must be a string of comma-separated long numbers
213
+ * - lal: List<Long>. Value must be a string of comma-separated long numbers
214
+ * - fa: Float[]. Value must be a string of comma-separated float numbers
215
+ * - fal: List<Float>. Value must be a string of comma-separated float numbers
216
+ * - sa: String[]. Value must be comma-separated strings. To embed a comma into a string,
217
+ * escape it using "\,"
218
+ * - sal: List<String>. Value must be comma-separated strings. To embed a comma into a string,
219
+ * escape it using "\,"
220
+ * For example: [['s', 'My String1'], ['s', 'My String2'], ['ia', '1,2,3,4']]
221
+ * @property {?string} flags - Intent startup-specific flags as a hexadecimal string.
222
+ * See https://developer.android.com/reference/android/content/Intent.html
223
+ * for the list of available flag values (constants starting with FLAG_ACTIVITY_).
224
+ * Flag values could be merged using the logical 'or' operation.
225
+ * For example, 0x10200000 is the combination of two flags:
226
+ * 0x10000000 `FLAG_ACTIVITY_NEW_TASK` | 0x00200000 `FLAG_ACTIVITY_RESET_TASK_IF_NEEDED`
227
+ */
228
+
229
+ /**
230
+ * Starts the given service intent.
231
+ *
232
+ * @param {StartServiceOptions} opts
233
+ * @returns {string} The command output
234
+ * @throws {Error} If there was a failure while starting the service
235
+ * or required options are missing
236
+ */
237
+ commands.mobileStartService = async function mobileStartService (opts = {}) {
238
+ const {
239
+ intent,
240
+ user,
241
+ foreground,
242
+ } = requireOptions(opts, ['intent']);
243
+ const cmd = ['am'];
244
+ if (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) {
245
+ cmd.push('startservice');
246
+ } else {
247
+ cmd.push(foreground ? 'start-foreground-service' : 'start-service');
248
+ }
249
+ if (!_.isNil(user)) {
250
+ cmd.push('--user', user);
251
+ }
252
+ cmd.push(...(parseCommonIntentArguments(opts)));
253
+ cmd.push(intent);
254
+ return await this.adb.shell(cmd);
255
+ };
256
+
257
+ /**
258
+ * @typedef {Object} StopServiceOptions
259
+ * @property {!string} intent - The name of the service intent to stop, for example
260
+ * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
261
+ * @property {string|number} user ['current'] - The user ID for which the service is running.
262
+ * The `current` user id is used by default
263
+ */
264
+
265
+ /**
266
+ * Stops the given service intent.
267
+ *
268
+ * @param {StopServiceOptions} opts
269
+ * @returns {string} The command output
270
+ * @throws {Error} If there was a failure while stopping the service
271
+ * or required options are missing
272
+ */
273
+ commands.mobileStopService = async function mobileStopService (opts = {}) {
274
+ const {
275
+ intent,
276
+ user,
277
+ } = requireOptions(opts, ['intent']);
278
+ const cmd = [
279
+ 'am',
280
+ (await this.adb.getApiLevel() < API_LEVEL_ANDROID_8) ? 'stopservice' : 'stop-service'
281
+ ];
282
+ if (!_.isNil(user)) {
283
+ cmd.push('--user', user);
284
+ }
285
+ cmd.push(...(parseCommonIntentArguments(opts)));
286
+ cmd.push(intent);
287
+ return await this.adb.shell(cmd);
288
+ };
289
+
290
+
291
+ export { commands };
292
+ export default commands;
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "mobile",
10
10
  "mobile testing"
11
11
  ],
12
- "version": "4.46.0",
12
+ "version": "4.47.0",
13
13
  "author": "appium",
14
14
  "license": "Apache-2.0",
15
15
  "repository": {
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = exports.commands = void 0;
9
-
10
- require("source-map-support/register");
11
-
12
- var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
- const commands = {};
15
- exports.commands = commands;
16
-
17
- function requireOptions(opts, requiredKeys = []) {
18
- const missingKeys = _lodash.default.difference(requiredKeys, _lodash.default.keys(opts));
19
-
20
- if (!_lodash.default.isEmpty(missingKeys)) {
21
- throw new Error(`The following options are required: ${missingKeys}`);
22
- }
23
-
24
- return opts;
25
- }
26
-
27
- commands.mobileStartService = async function mobileStartService(opts = {}) {
28
- const {
29
- intent,
30
- user,
31
- foreground
32
- } = requireOptions(opts, ['intent']);
33
- const cmd = ['am', foreground ? 'start-foreground-service' : 'start-service'];
34
-
35
- if (user) {
36
- cmd.push('--user', user);
37
- }
38
-
39
- cmd.push(intent);
40
- return await this.adb.shell(cmd);
41
- };
42
-
43
- commands.mobileStopService = async function mobileStopService(opts = {}) {
44
- const {
45
- intent,
46
- user
47
- } = requireOptions(opts, ['intent']);
48
- const cmd = ['am', 'stop-service'];
49
-
50
- if (user) {
51
- cmd.push('--user', user);
52
- }
53
-
54
- cmd.push(intent);
55
- return await this.adb.shell(cmd);
56
- };
57
-
58
- var _default = commands;
59
- exports.default = _default;require('source-map-support').install();
60
-
61
-
62
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zZXJ2aWNlcy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsInJlcXVpcmVPcHRpb25zIiwib3B0cyIsInJlcXVpcmVkS2V5cyIsIm1pc3NpbmdLZXlzIiwiXyIsImRpZmZlcmVuY2UiLCJrZXlzIiwiaXNFbXB0eSIsIkVycm9yIiwibW9iaWxlU3RhcnRTZXJ2aWNlIiwiaW50ZW50IiwidXNlciIsImZvcmVncm91bmQiLCJjbWQiLCJwdXNoIiwiYWRiIiwic2hlbGwiLCJtb2JpbGVTdG9wU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7OztBQUVBLFNBQVNDLGNBQVQsQ0FBeUJDLElBQXpCLEVBQStCQyxZQUFZLEdBQUcsRUFBOUMsRUFBa0Q7QUFDaEQsUUFBTUMsV0FBVyxHQUFHQyxnQkFBRUMsVUFBRixDQUFhSCxZQUFiLEVBQTJCRSxnQkFBRUUsSUFBRixDQUFPTCxJQUFQLENBQTNCLENBQXBCOztBQUNBLE1BQUksQ0FBQ0csZ0JBQUVHLE9BQUYsQ0FBVUosV0FBVixDQUFMLEVBQTZCO0FBQzNCLFVBQU0sSUFBSUssS0FBSixDQUFXLHVDQUFzQ0wsV0FBWSxFQUE3RCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBT0YsSUFBUDtBQUNEOztBQW9CREYsUUFBUSxDQUFDVSxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixDQUFtQ1IsSUFBSSxHQUFHLEVBQTFDLEVBQThDO0FBQzFFLFFBQU07QUFDSlMsSUFBQUEsTUFESTtBQUVKQyxJQUFBQSxJQUZJO0FBR0pDLElBQUFBO0FBSEksTUFJRlosY0FBYyxDQUFDQyxJQUFELEVBQU8sQ0FBQyxRQUFELENBQVAsQ0FKbEI7QUFLQSxRQUFNWSxHQUFHLEdBQUcsQ0FDVixJQURVLEVBQ0pELFVBQVUsR0FBRywwQkFBSCxHQUFnQyxlQUR0QyxDQUFaOztBQUdBLE1BQUlELElBQUosRUFBVTtBQUNSRSxJQUFBQSxHQUFHLENBQUNDLElBQUosQ0FBUyxRQUFULEVBQW1CSCxJQUFuQjtBQUNEOztBQUNERSxFQUFBQSxHQUFHLENBQUNDLElBQUosQ0FBU0osTUFBVDtBQUNBLFNBQU8sTUFBTSxLQUFLSyxHQUFMLENBQVNDLEtBQVQsQ0FBZUgsR0FBZixDQUFiO0FBQ0QsQ0FkRDs7QUFnQ0FkLFFBQVEsQ0FBQ2tCLGlCQUFULEdBQTZCLGVBQWVBLGlCQUFmLENBQWtDaEIsSUFBSSxHQUFHLEVBQXpDLEVBQTZDO0FBQ3hFLFFBQU07QUFDSlMsSUFBQUEsTUFESTtBQUVKQyxJQUFBQTtBQUZJLE1BR0ZYLGNBQWMsQ0FBQ0MsSUFBRCxFQUFPLENBQUMsUUFBRCxDQUFQLENBSGxCO0FBSUEsUUFBTVksR0FBRyxHQUFHLENBQ1YsSUFEVSxFQUNKLGNBREksQ0FBWjs7QUFHQSxNQUFJRixJQUFKLEVBQVU7QUFDUkUsSUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVMsUUFBVCxFQUFtQkgsSUFBbkI7QUFDRDs7QUFDREUsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVNKLE1BQVQ7QUFDQSxTQUFPLE1BQU0sS0FBS0ssR0FBTCxDQUFTQyxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBYkQ7O2VBaUJlZCxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gcmVxdWlyZU9wdGlvbnMgKG9wdHMsIHJlcXVpcmVkS2V5cyA9IFtdKSB7XG4gIGNvbnN0IG1pc3NpbmdLZXlzID0gXy5kaWZmZXJlbmNlKHJlcXVpcmVkS2V5cywgXy5rZXlzKG9wdHMpKTtcbiAgaWYgKCFfLmlzRW1wdHkobWlzc2luZ0tleXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHJlcXVpcmVkOiAke21pc3NpbmdLZXlzfWApO1xuICB9XG4gIHJldHVybiBvcHRzO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLiBUaGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZm9yZWdyb3VuZCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3VyIHNlcnZpY2UgbXVzdCBiZVxuICogc3RhcnRlZCBhcyBmb3JlZ3JvdW5kIHNlcnZpY2UuXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIHVzZXIsXG4gICAgZm9yZWdyb3VuZCxcbiAgfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnaW50ZW50J10pO1xuICBjb25zdCBjbWQgPSBbXG4gICAgJ2FtJywgZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnLFxuICBdO1xuICBpZiAodXNlcikge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBjbWQucHVzaChpbnRlbnQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIGludGVudCB0byBzdG9wLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLiBUaGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqL1xuXG4vKipcbiAqIFN0b3BzIHRoZSBnaXZlbiBzZXJ2aWNlIGludGVudC5cbiAqXG4gKiBAcGFyYW0ge1N0b3BTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdG9wcGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wU2VydmljZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BTZXJ2aWNlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGludGVudCxcbiAgICB1c2VyLFxuICB9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydpbnRlbnQnXSk7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAnc3RvcC1zZXJ2aWNlJyxcbiAgXTtcbiAgaWYgKHVzZXIpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goaW50ZW50KTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL3NlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -1,80 +0,0 @@
1
- import _ from 'lodash';
2
-
3
- const commands = {};
4
-
5
- function requireOptions (opts, requiredKeys = []) {
6
- const missingKeys = _.difference(requiredKeys, _.keys(opts));
7
- if (!_.isEmpty(missingKeys)) {
8
- throw new Error(`The following options are required: ${missingKeys}`);
9
- }
10
- return opts;
11
- }
12
-
13
- /**
14
- * @typedef {Object} StartServiceOptions
15
- * @property {!string} intent - The name of the service intent to start, for example
16
- * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
17
- * @property {string|number} user ['current'] - The user ID for which the service is started.
18
- * The `current` user id is used by default
19
- * @property {boolean} foreground [false] - Set it to `true` if your service must be
20
- * started as foreground service.
21
- */
22
-
23
- /**
24
- * Starts the given service intent.
25
- *
26
- * @param {StartServiceOptions} opts
27
- * @returns {string} The command output
28
- * @throws {Error} If there was a failure while starting the service
29
- * or required options are missing
30
- */
31
- commands.mobileStartService = async function mobileStartService (opts = {}) {
32
- const {
33
- intent,
34
- user,
35
- foreground,
36
- } = requireOptions(opts, ['intent']);
37
- const cmd = [
38
- 'am', foreground ? 'start-foreground-service' : 'start-service',
39
- ];
40
- if (user) {
41
- cmd.push('--user', user);
42
- }
43
- cmd.push(intent);
44
- return await this.adb.shell(cmd);
45
- };
46
-
47
- /**
48
- * @typedef {Object} StopServiceOptions
49
- * @property {!string} intent - The name of the service intent to stop, for example
50
- * `com.some.package.name/.YourServiceSubClassName`. This option is mandatory.
51
- * @property {string|number} user ['current'] - The user ID for which the service is running.
52
- * The `current` user id is used by default
53
- */
54
-
55
- /**
56
- * Stops the given service intent.
57
- *
58
- * @param {StopServiceOptions} opts
59
- * @returns {string} The command output
60
- * @throws {Error} If there was a failure while stopping the service
61
- * or required options are missing
62
- */
63
- commands.mobileStopService = async function mobileStopService (opts = {}) {
64
- const {
65
- intent,
66
- user,
67
- } = requireOptions(opts, ['intent']);
68
- const cmd = [
69
- 'am', 'stop-service',
70
- ];
71
- if (user) {
72
- cmd.push('--user', user);
73
- }
74
- cmd.push(intent);
75
- return await this.adb.shell(cmd);
76
- };
77
-
78
-
79
- export { commands };
80
- export default commands;