appium-android-driver 5.13.0 → 5.13.2
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 +14 -0
- package/build/index.js +43 -40
- package/build/lib/android-helpers.d.ts +136 -0
- package/build/lib/android-helpers.d.ts.map +1 -0
- package/build/lib/android-helpers.js +760 -679
- package/build/lib/android-helpers.js.map +1 -1
- package/build/lib/bootstrap.d.ts +29 -0
- package/build/lib/bootstrap.d.ts.map +1 -0
- package/build/lib/bootstrap.js +192 -179
- package/build/lib/bootstrap.js.map +1 -1
- package/build/lib/commands/actions.d.ts +209 -0
- package/build/lib/commands/actions.d.ts.map +1 -0
- package/build/lib/commands/actions.js +327 -265
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/alert.d.ts +10 -0
- package/build/lib/commands/alert.d.ts.map +1 -0
- package/build/lib/commands/alert.js +12 -18
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-management.d.ts +314 -0
- package/build/lib/commands/app-management.d.ts.map +1 -0
- package/build/lib/commands/app-management.js +278 -110
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/context.d.ts +94 -0
- package/build/lib/commands/context.d.ts.map +1 -0
- package/build/lib/commands/context.js +412 -260
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/coverage.d.ts +5 -0
- package/build/lib/commands/coverage.d.ts.map +1 -0
- package/build/lib/commands/coverage.js +14 -17
- package/build/lib/commands/coverage.js.map +1 -1
- package/build/lib/commands/element.d.ts +36 -0
- package/build/lib/commands/element.d.ts.map +1 -0
- package/build/lib/commands/element.js +97 -127
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/emu-console.d.ts +49 -0
- package/build/lib/commands/emu-console.d.ts.map +1 -0
- package/build/lib/commands/emu-console.js +36 -25
- package/build/lib/commands/emu-console.js.map +1 -1
- package/build/lib/commands/execute.d.ts +6 -0
- package/build/lib/commands/execute.d.ts.map +1 -0
- package/build/lib/commands/execute.js +68 -69
- package/build/lib/commands/execute.js.map +1 -1
- package/build/lib/commands/file-actions.d.ts +129 -0
- package/build/lib/commands/file-actions.d.ts.map +1 -0
- package/build/lib/commands/file-actions.js +321 -178
- package/build/lib/commands/file-actions.js.map +1 -1
- package/build/lib/commands/find.d.ts +13 -0
- package/build/lib/commands/find.d.ts.map +1 -0
- package/build/lib/commands/find.js +69 -51
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.d.ts +133 -0
- package/build/lib/commands/general.d.ts.map +1 -0
- package/build/lib/commands/general.js +275 -216
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/ime.d.ts +11 -0
- package/build/lib/commands/ime.d.ts.map +1 -0
- package/build/lib/commands/ime.js +27 -33
- package/build/lib/commands/ime.js.map +1 -1
- package/build/lib/commands/index.d.ts +3 -0
- package/build/lib/commands/index.d.ts.map +1 -0
- package/build/lib/commands/index.js +32 -35
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/intent.d.ts +418 -0
- package/build/lib/commands/intent.d.ts.map +1 -0
- package/build/lib/commands/intent.js +281 -151
- package/build/lib/commands/intent.js.map +1 -1
- package/build/lib/commands/keyboard.d.ts +6 -0
- package/build/lib/commands/keyboard.d.ts.map +1 -0
- package/build/lib/commands/keyboard.js +6 -14
- package/build/lib/commands/keyboard.js.map +1 -1
- package/build/lib/commands/log.d.ts +45 -0
- package/build/lib/commands/log.d.ts.map +1 -0
- package/build/lib/commands/log.js +117 -103
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/commands/media-projection.d.ts +144 -0
- package/build/lib/commands/media-projection.d.ts.map +1 -0
- package/build/lib/commands/media-projection.js +228 -171
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/network.d.ts +139 -0
- package/build/lib/commands/network.d.ts.map +1 -0
- package/build/lib/commands/network.js +249 -181
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/performance.d.ts +101 -0
- package/build/lib/commands/performance.d.ts.map +1 -0
- package/build/lib/commands/performance.js +390 -236
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/permissions.d.ts +93 -0
- package/build/lib/commands/permissions.d.ts.map +1 -0
- package/build/lib/commands/permissions.js +133 -93
- package/build/lib/commands/permissions.js.map +1 -1
- package/build/lib/commands/recordscreen.d.ts +194 -0
- package/build/lib/commands/recordscreen.d.ts.map +1 -0
- package/build/lib/commands/recordscreen.js +293 -224
- package/build/lib/commands/recordscreen.js.map +1 -1
- package/build/lib/commands/shell.d.ts +8 -0
- package/build/lib/commands/shell.d.ts.map +1 -0
- package/build/lib/commands/shell.js +38 -43
- package/build/lib/commands/shell.js.map +1 -1
- package/build/lib/commands/streamscreen.d.ts +104 -0
- package/build/lib/commands/streamscreen.d.ts.map +1 -0
- package/build/lib/commands/streamscreen.js +364 -305
- package/build/lib/commands/streamscreen.js.map +1 -1
- package/build/lib/commands/system-bars.d.ts +100 -0
- package/build/lib/commands/system-bars.d.ts.map +1 -0
- package/build/lib/commands/system-bars.js +148 -90
- package/build/lib/commands/system-bars.js.map +1 -1
- package/build/lib/commands/touch.d.ts +30 -0
- package/build/lib/commands/touch.d.ts.map +1 -0
- package/build/lib/commands/touch.js +311 -287
- package/build/lib/commands/touch.js.map +1 -1
- package/build/lib/desired-caps.d.ts +353 -0
- package/build/lib/desired-caps.d.ts.map +1 -0
- package/build/lib/desired-caps.js +291 -292
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/driver.d.ts +430 -0
- package/build/lib/driver.d.ts.map +1 -0
- package/build/lib/driver.js +449 -384
- package/build/lib/driver.js.map +1 -1
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +5 -11
- package/build/lib/logger.js.map +1 -1
- package/build/lib/method-map.d.ts +389 -0
- package/build/lib/method-map.d.ts.map +1 -0
- package/build/lib/method-map.js +220 -394
- package/build/lib/method-map.js.map +1 -1
- package/build/lib/stubs.d.ts +8 -0
- package/build/lib/stubs.d.ts.map +1 -0
- package/build/lib/stubs.js +5 -0
- package/build/lib/stubs.js.map +1 -0
- package/build/lib/uiautomator.d.ts +24 -0
- package/build/lib/uiautomator.d.ts.map +1 -0
- package/build/lib/uiautomator.js +86 -82
- package/build/lib/uiautomator.js.map +1 -1
- package/build/lib/unlock-helpers.d.ts +38 -0
- package/build/lib/unlock-helpers.d.ts.map +1 -0
- package/build/lib/unlock-helpers.js +228 -204
- package/build/lib/unlock-helpers.js.map +1 -1
- package/build/lib/utils.d.ts +11 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +23 -18
- package/build/lib/utils.js.map +1 -1
- package/build/lib/webview-helpers.d.ts +223 -0
- package/build/lib/webview-helpers.d.ts.map +1 -0
- package/build/lib/webview-helpers.js +476 -298
- package/build/lib/webview-helpers.js.map +1 -1
- package/index.js +3 -1
- package/lib/android-helpers.js +2 -1
- package/lib/stubs.ts +8 -0
- package/lib/unlock-helpers.js +2 -2
- package/package.json +23 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.js","names":["_lodash","_interopRequireDefault","require","_asyncbox","_utils","commands","exports","NETWORK_KEYS","CPU_KEYS","BATTERY_KEYS","MEMORY_KEYS","SUPPORTED_PERFORMANCE_DATA_TYPES","Object","freeze","cpuinfo","memoryinfo","batteryinfo","networkinfo","MEMINFO_TITLES","NATIVE","DALVIK","EGL","GL","MTRACK","TOTAL","HEAP","RETRY_PAUSE_MS","parseMeminfoForApi19To29","entries","valDict","type","subType","nativePss","nativePrivateDirty","nativeHeapSize","nativeHeapAllocatedSize","dalvikPss","dalvikPrivateDirty","eglPss","eglPrivateDirty","glPss","glPrivateDirty","length","totalPss","totalPrivateDirty","parseMeminfoForApiBelow19","parseMeminfoForApiAbove29","nativeRss","dalvikRss","totalRss","getMemoryInfo","packageName","retries","retryInterval","cmd","data","adb","shell","Error","apiLevel","getApiLevel","line","split","trim","filter","Boolean","headers","_","clone","values","map","header","getNetworkTrafficInfo","returnValue","bucketDuration","bucketStart","activeTime","rxBytes","rxPackets","txBytes","txPackets","operations","index","fromXtstats","indexOf","start","delimiter","end","pendingBytes","substring","arrayList","j","k","returnIndex","i","isEqual","isUndefined","getCPUInfo","output","e","stderr","log","info","usagesPattern","RegExp","escapeRegExp","match","exec","debug","getBatteryInfo","power","parseInt","Number","isNaN","toString","getPerformanceDataTypes","keys","getPerformanceData","dataType","toLower","bind","JSON","stringify","mobileGetPerformanceData","opts","requireArgs","_default","default"],"sources":["../../../lib/commands/performance.js"],"sourcesContent":["import _ from 'lodash';\nimport { retryInterval } from 'asyncbox';\nimport { requireArgs } from '../utils';\n\nconst commands = {};\n\nconst NETWORK_KEYS = [\n ['bucketStart', 'activeTime', 'rxBytes', 'rxPackets', 'txBytes', 'txPackets', 'operations', 'bucketDuration'],\n ['st', 'activeTime', 'rb', 'rp', 'tb', 'tp', 'op', 'bucketDuration']\n];\nconst CPU_KEYS = ['user', 'kernel'];\nconst BATTERY_KEYS = ['power'];\nconst MEMORY_KEYS = [\n 'totalPrivateDirty', 'nativePrivateDirty', 'dalvikPrivateDirty',\n 'eglPrivateDirty', 'glPrivateDirty',\n 'totalPss', 'nativePss', 'dalvikPss', 'eglPss', 'glPss',\n 'nativeHeapAllocatedSize', 'nativeHeapSize',\n 'nativeRss', 'dalvikRss', 'totalRss'\n];\nconst SUPPORTED_PERFORMANCE_DATA_TYPES = Object.freeze({\n cpuinfo: 'the amount of cpu by user and kernel process - cpu information for applications on real devices and simulators',\n memoryinfo: 'the amount of memory used by the process - memory information for applications on real devices and simulators',\n batteryinfo: 'the remaining battery power - battery power information for applications on real devices and simulators',\n networkinfo: 'the network statistics - network rx/tx information for applications on real devices and simulators'\n});\nconst MEMINFO_TITLES = Object.freeze({\n NATIVE: 'Native',\n DALVIK: 'Dalvik',\n EGL: 'EGL',\n GL: 'GL',\n MTRACK: 'mtrack',\n TOTAL: 'TOTAL',\n HEAP: 'Heap'\n});\nconst RETRY_PAUSE_MS = 1000;\n\n/**\n * API level between 18 and 30\n * ['<System Type>', '<Memory Type>', <pss total>, <private dirty>, <private clean>, <swapPss dirty>, <heap size>, <heap alloc>, <heap free>]\n * except 'TOTAL', which skips the second type name\n * !!! valDict gets mutated\n */\nfunction parseMeminfoForApi19To29 (entries, valDict) {\n const [type, subType] = entries;\n if (type === MEMINFO_TITLES.NATIVE && subType === MEMINFO_TITLES.HEAP) {\n [,, valDict.nativePss, valDict.nativePrivateDirty,,, valDict.nativeHeapSize, valDict.nativeHeapAllocatedSize] = entries;\n } else if (type === MEMINFO_TITLES.DALVIK && subType === MEMINFO_TITLES.HEAP) {\n [,, valDict.dalvikPss, valDict.dalvikPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.EGL && subType === MEMINFO_TITLES.MTRACK) {\n [,, valDict.eglPss, valDict.eglPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.GL && subType === MEMINFO_TITLES.MTRACK) {\n [,, valDict.glPss, valDict.glPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.TOTAL && entries.length === 8) {\n // there are two totals, and we only want the full listing, which has 8 entries\n [, valDict.totalPss, valDict.totalPrivateDirty] = entries;\n }\n}\n\n/**\n * ['<System Type', '<pps>', '<shared dirty>', '<private dirty>', '<heap size>', '<heap alloc>', '<heap free>']\n * !!! valDict gets mutated\n */\nfunction parseMeminfoForApiBelow19 (entries, valDict) {\n const type = entries[0];\n if (type === MEMINFO_TITLES.NATIVE) {\n [, valDict.nativePss,, valDict.nativePrivateDirty, valDict.nativeHeapSize, valDict.nativeHeapAllocatedSize] = entries;\n } else if (type === MEMINFO_TITLES.DALVIK) {\n [, valDict.dalvikPss,, valDict.dalvikPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.EGL) {\n [, valDict.eglPss,, valDict.eglPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.GL) {\n [, valDict.glPss,, valDict.glPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.TOTAL) {\n [, valDict.totalPss,, valDict.totalPrivateDirty] = entries;\n }\n}\n\n/**\n * API level 30 and above\n * ['<System Type>', '<Memory Type>', <pss total>, <private dirty>, <private clean>, <swapPss dirty>, <rss total>, <heap size>, <heap alloc>, <heap free>]\n * !!! valDict gets mutated\n */\nfunction parseMeminfoForApiAbove29 (entries, valDict) {\n const [type, subType] = entries;\n if (type === MEMINFO_TITLES.NATIVE && subType === MEMINFO_TITLES.HEAP) {\n [,, valDict.nativePss, valDict.nativePrivateDirty,,, valDict.nativeRss, valDict.nativeHeapSize, valDict.nativeHeapAllocatedSize] = entries;\n } else if (type === MEMINFO_TITLES.DALVIK && subType === MEMINFO_TITLES.HEAP) {\n [,, valDict.dalvikPss, valDict.dalvikPrivateDirty,,, valDict.dalvikRss] = entries;\n } else if (type === MEMINFO_TITLES.EGL && subType === MEMINFO_TITLES.MTRACK) {\n [,, valDict.eglPss, valDict.eglPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.GL && subType === MEMINFO_TITLES.MTRACK) {\n [,, valDict.glPss, valDict.glPrivateDirty] = entries;\n } else if (type === MEMINFO_TITLES.TOTAL && entries.length === 9) {\n // has 9 entries\n [, valDict.totalPss, valDict.totalPrivateDirty,,, valDict.totalRss] = entries;\n }\n}\n\nasync function getMemoryInfo (packageName, retries = 2) {\n return await retryInterval(retries, RETRY_PAUSE_MS, async () => {\n const cmd = [\n 'dumpsys', 'meminfo', `'${packageName}'`,\n '|', 'grep', '-E',\n `'${MEMINFO_TITLES.NATIVE}|${MEMINFO_TITLES.DALVIK}|${MEMINFO_TITLES.EGL}` +\n `|${MEMINFO_TITLES.GL}|${MEMINFO_TITLES.TOTAL}'`\n ];\n const data = await this.adb.shell(cmd);\n if (!data) {\n throw new Error('No data from dumpsys');\n }\n const valDict = {totalPrivateDirty: ''};\n const apiLevel = await this.adb.getApiLevel();\n for (const line of data.split('\\n')) {\n const entries = line.trim().split(/\\s+/).filter(Boolean);\n if (apiLevel >= 30) {\n parseMeminfoForApiAbove29(entries, valDict);\n } else if (apiLevel > 18 && apiLevel < 30) {\n parseMeminfoForApi19To29(entries, valDict);\n } else {\n parseMeminfoForApiBelow19(entries, valDict);\n }\n }\n if (valDict.totalPrivateDirty && valDict.totalPrivateDirty !== 'nodex') {\n const headers = _.clone(MEMORY_KEYS);\n const values = headers.map((header) => valDict[header]);\n return [headers, values];\n }\n\n throw new Error(`Unable to parse memory data: '${data}'`);\n });\n};\n\n/**\n * @this {AndroidDriver}\n * @param {number} retries\n */\nasync function getNetworkTrafficInfo (retries = 2) {\n return await retryInterval(retries, RETRY_PAUSE_MS, async () => {\n let returnValue = [];\n let bucketDuration, bucketStart, activeTime, rxBytes, rxPackets, txBytes, txPackets, operations;\n\n let cmd = ['dumpsys', 'netstats'];\n let data = await this.adb.shell(cmd);\n if (!data) throw new Error('No data from dumpsys'); //eslint-disable-line curly\n\n // In case of network traffic information, it is different for the return data between emulator and real device.\n // the return data of emulator\n // Xt stats:\n // Pending bytes: 39250\n // History since boot:\n // ident=[[type=WIFI, subType=COMBINED, networkId=\"WiredSSID\"]] uid=-1 set=ALL tag=0x0\n // NetworkStatsHistory: bucketDuration=3600000\n // bucketStart=1478098800000 activeTime=31824 rxBytes=21502 rxPackets=78 txBytes=17748 txPackets=90 operations=0\n //\n // 7.1\n // Xt stats:\n // Pending bytes: 481487\n // History since boot:\n // ident=[{type=MOBILE, subType=COMBINED, subscriberId=310260..., metered=true}] uid=-1 set=ALL tag=0x0\n // NetworkStatsHistory: bucketDuration=3600\n // st=1483984800 rb=0 rp=0 tb=12031 tp=184 op=0\n // st=1483988400 rb=0 rp=0 tb=38476 tp=587 op=0\n // st=1483999200 rb=315616 rp=400 tb=94800 tp=362 op=0\n // st=1484002800 rb=15826 rp=20 tb=4738 tp=16 op=0\n //\n // the return data of real device\n // Xt stats:\n // Pending bytes: 0\n // History since boot:\n // ident=[{type=MOBILE, subType=COMBINED, subscriberId=450050...}] uid=-1 set=ALL tag=0x0\n // NetworkStatsHistory: bucketDuration=3600\n // st=1478088000 rb=32115296 rp=34291 tb=2956805 tp=25705 op=0\n // st=1478091600 rb=2714683 rp=11821 tb=1420564 tp=12650 op=0\n // st=1478095200 rb=10079213 rp=19962 tb=2487705 tp=20015 op=0\n // st=1478098800 rb=4444433 rp=10227 tb=1430356 tp=10493 op=0\n let index = 0;\n let fromXtstats = data.indexOf('Xt stats:');\n\n let start = data.indexOf('Pending bytes:', fromXtstats);\n let delimiter = data.indexOf(':', start + 1);\n let end = data.indexOf('\\n', delimiter + 1);\n let pendingBytes = data.substring(delimiter + 1, end).trim();\n\n if (end > delimiter) {\n start = data.indexOf('bucketDuration', end + 1);\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf('\\n', delimiter + 1);\n bucketDuration = data.substring(delimiter + 1, end).trim();\n }\n\n if (start >= 0) {\n data = data.substring(end + 1, data.length);\n let arrayList = data.split('\\n');\n\n if (arrayList.length > 0) {\n start = -1;\n\n for (let j = 0; j < NETWORK_KEYS.length; ++j) {\n start = arrayList[0].indexOf(NETWORK_KEYS[j][0]);\n\n if (start >= 0) {\n index = j;\n returnValue[0] = [];\n\n for (let k = 0; k < NETWORK_KEYS[j].length; ++k) {\n returnValue[0][k] = NETWORK_KEYS[j][k];\n }\n break;\n }\n }\n\n let returnIndex = 1;\n for (let i = 0; i < arrayList.length; i++) {\n data = arrayList[i];\n start = data.indexOf(NETWORK_KEYS[index][0]);\n\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf(' ', delimiter + 1);\n bucketStart = data.substring(delimiter + 1, end).trim();\n\n if (end > delimiter) {\n start = data.indexOf(NETWORK_KEYS[index][1], end + 1);\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf(' ', delimiter + 1);\n activeTime = data.substring(delimiter + 1, end).trim();\n }\n }\n\n if (end > delimiter) {\n start = data.indexOf(NETWORK_KEYS[index][2], end + 1);\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf(' ', delimiter + 1);\n rxBytes = data.substring(delimiter + 1, end).trim();\n }\n }\n\n if (end > delimiter) {\n start = data.indexOf(NETWORK_KEYS[index][3], end + 1);\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf(' ', delimiter + 1);\n rxPackets = data.substring(delimiter + 1, end).trim();\n }\n }\n\n if (end > delimiter) {\n start = data.indexOf(NETWORK_KEYS[index][4], end + 1);\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf(' ', delimiter + 1);\n txBytes = data.substring(delimiter + 1, end).trim();\n }\n }\n\n if (end > delimiter) {\n start = data.indexOf(NETWORK_KEYS[index][5], end + 1);\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.indexOf(' ', delimiter + 1);\n txPackets = data.substring(delimiter + 1, end).trim();\n }\n }\n\n if (end > delimiter) {\n start = data.indexOf(NETWORK_KEYS[index][6], end + 1);\n if (start >= 0) {\n delimiter = data.indexOf('=', start + 1);\n end = data.length;\n operations = data.substring(delimiter + 1, end).trim();\n\n }\n }\n returnValue[returnIndex++] = [bucketStart, activeTime, rxBytes, rxPackets, txBytes, txPackets, operations, bucketDuration];\n }\n }\n }\n }\n\n if (!_.isEqual(pendingBytes, '') && !_.isUndefined(pendingBytes) && !_.isEqual(pendingBytes, 'nodex')) {\n return returnValue;\n } else {\n throw new Error(`Unable to parse network traffic data: '${data}'`);\n }\n });\n}\n\n/**\n * Return the CPU information related to the given packageName.\n * It raises an exception if the dumped CPU information did not include the given packageName\n * or the format was wrong.\n * The CPU information's sampling interval depends on the device under test.\n * For example, some devices have 5 minutes interval. When you get the information\n * from 2023-02-07 11:59:40.468 to 2023-02-07 12:04:40.556, then the next will be\n * from 2023-02-07 12:04:40.556 to 2023-02-07 12:09:40.668. No process information\n * exists in the result if the process was not running during the period.\n *\n * @this {AndroidDriver}\n * @param {string} packageName The package name to get the CPU information.\n * @param {number} retries The number of retry count.\n * @returns {Array} The array of the parsed CPU upsage percentages.\n * e.g. ['cpuinfo', ['14.3', '28.2']]\n * '14.3' is usage by the user (%), '28.2' is usage by the kernel (%)\n * @throw {Error} If it failed to parse the result of dumpsys, or no package name exists.\n */\nasync function getCPUInfo (packageName, retries = 2) {\n // TODO: figure out why this is\n // sometimes, the function of 'adb.shell' fails. when I tested this function on the target of 'Galaxy Note5',\n // adb.shell(dumpsys cpuinfo) returns cpu datas for other application packages, but I can't find the data for packageName.\n // It usually fails 30 times and success for the next time,\n // Since then, he has continued to succeed.\n return await retryInterval(retries, RETRY_PAUSE_MS, async () => {\n let output;\n try {\n output = await this.adb.shell(['dumpsys', 'cpuinfo']);\n } catch (e) {\n if (e.stderr) {\n this.log.info(e.stderr);\n }\n throw e;\n }\n // `output` will be something like\n // +0% 2209/io.appium.android.apis: 0.1% user + 0.2% kernel / faults: 70 minor\n const usagesPattern =\n new RegExp(`^.+\\\\/${_.escapeRegExp(packageName)}:\\\\D+([\\\\d.]+)%\\\\s+user\\\\s+\\\\+\\\\s+([\\\\d.]+)%\\\\s+kernel`, 'm');\n const match = usagesPattern.exec(output);\n if (!match) {\n this.log.debug(output);\n throw new Error(`Unable to parse cpu usage data for '${packageName}'. Check the server log for more details`);\n }\n return [CPU_KEYS, [match[1], match[2]]];\n });\n}\n\n/**\n * @this {AndroidDriver}\n * @param {number} retries\n */\nasync function getBatteryInfo (retries = 2) {\n return await retryInterval(retries, RETRY_PAUSE_MS, async () => {\n let cmd = ['dumpsys', 'battery', '|', 'grep', 'level'];\n let data = await this.adb.shell(cmd);\n if (!data) throw new Error('No data from dumpsys'); //eslint-disable-line curly\n\n let power = parseInt((data.split(':')[1] || '').trim(), 10);\n\n if (!Number.isNaN(power)) {\n return [_.clone(BATTERY_KEYS), [power.toString()]];\n } else {\n throw new Error(`Unable to parse battery data: '${data}'`);\n }\n });\n}\n\n//\n// returns the information type of the system state which is supported to read as like cpu, memory, network traffic, and battery.\n// output - array like below\n// [cpuinfo, batteryinfo, networkinfo, memoryinfo]\n//\ncommands.getPerformanceDataTypes = function getPerformanceDataTypes () {\n return _.keys(SUPPORTED_PERFORMANCE_DATA_TYPES);\n};\n\n/**\n * @returns The information type of the system state which is supported to read as like cpu, memory, network traffic, and battery.\n * input - (packageName) the package name of the application\n * (dataType) the type of system state which wants to read. It should be one of the keys of the SUPPORTED_PERFORMANCE_DATA_TYPES\n * (dataReadTimeout) the number of attempts to read\n * output - table of the performance data, The first line of the table represents the type of data. The remaining lines represent the values of the data.\n *\n * in case of battery info : [[power], [23]]\n * in case of memory info : [[totalPrivateDirty, nativePrivateDirty, dalvikPrivateDirty, eglPrivateDirty, glPrivateDirty, totalPss,\n * nativePss, dalvikPss, eglPss, glPss, nativeHeapAllocatedSize, nativeHeapSize], [18360, 8296, 6132, null, null, 42588, 8406, 7024, null, null, 26519, 10344]]\n * in case of network info : [[bucketStart, activeTime, rxBytes, rxPackets, txBytes, txPackets, operations, bucketDuration,],\n * [1478091600000, null, 1099075, 610947, 928, 114362, 769, 0, 3600000], [1478095200000, null, 1306300, 405997, 509, 46359, 370, 0, 3600000]]\n * in case of network info : [[st, activeTime, rb, rp, tb, tp, op, bucketDuration], [1478088000, null, null, 32115296, 34291, 2956805, 25705, 0, 3600],\n * [1478091600, null, null, 2714683, 11821, 1420564, 12650, 0, 3600], [1478095200, null, null, 10079213, 19962, 2487705, 20015, 0, 3600],\n * [1478098800, null, null, 4444433, 10227, 1430356, 10493, 0, 3600]]\n * in case of cpu info : [[user, kernel], [0.9, 1.3]]\n */\ncommands.getPerformanceData = async function getPerformanceData (packageName, dataType, retries = 2) {\n switch (_.toLower(dataType)) {\n case 'batteryinfo':\n return await getBatteryInfo.bind(this)(retries);\n case 'cpuinfo':\n return await getCPUInfo.bind(this)(packageName, retries);\n case 'memoryinfo':\n return await getMemoryInfo.bind(this)(packageName, retries);\n case 'networkinfo':\n return await getNetworkTrafficInfo.bind(this)(retries);\n default:\n throw new Error(`No performance data of type '${dataType}' found. ` +\n `Only the following values are supported: ${JSON.stringify(SUPPORTED_PERFORMANCE_DATA_TYPES, ' ', 2)}`);\n }\n};\n\n/**\n * @typedef {Object} PerformanceDataOptions\n * @property {string} packageName The name of the package identifier to fetch the data for\n * @property {'batteryinfo' | 'cpuinfo' | 'memoryinfo' | 'networkinfo'} dataType One of supported subsystem\n * to fetch the data for.\n */\n\n/**\n * Retrieves performance data about the given Android subsystem.\n * The data is parsed from the output of the dumpsys utility.\n *\n * @param {PerformanceDataOptions} opts\n * @returns {Promise<any[][]>} The output depends on the selected subsystem.\n * It is orginized into a table, where the first row represent column names\n * and the following rows represent the sampled data for each column.\n * Example output for different data types:\n * - batteryinfo: [[power], [23]]\n * - memory info: [[totalPrivateDirty, nativePrivateDirty, dalvikPrivateDirty, eglPrivateDirty, glPrivateDirty, totalPss,\n * nativePss, dalvikPss, eglPss, glPss, nativeHeapAllocatedSize, nativeHeapSize], [18360, 8296, 6132, null, null, 42588, 8406, 7024, null, null, 26519, 10344]]\n * - networkinfo: [[bucketStart, activeTime, rxBytes, rxPackets, txBytes, txPackets, operations, bucketDuration,],\n * [1478091600000, null, 1099075, 610947, 928, 114362, 769, 0, 3600000], [1478095200000, null, 1306300, 405997, 509, 46359, 370, 0, 3600000]]\n *\n * [[st, activeTime, rb, rp, tb, tp, op, bucketDuration], [1478088000, null, null, 32115296, 34291, 2956805, 25705, 0, 3600],\n * [1478091600, null, null, 2714683, 11821, 1420564, 12650, 0, 3600], [1478095200, null, null, 10079213, 19962, 2487705, 20015, 0, 3600],\n * [1478098800, null, null, 4444433, 10227, 1430356, 10493, 0, 3600]]\n * - cpuinfo: [[user, kernel], [0.9, 1.3]]\n */\ncommands.mobileGetPerformanceData = async function mobileGetPerformanceData (opts = {}) {\n const { packageName, dataType } = requireArgs(['packageName', 'dataType'], opts);\n return await this.getPerformanceData(packageName, dataType);\n};\n\nexport {\n commands, SUPPORTED_PERFORMANCE_DATA_TYPES, CPU_KEYS, MEMORY_KEYS,\n BATTERY_KEYS, NETWORK_KEYS, getMemoryInfo, getNetworkTrafficInfo,\n getCPUInfo, getBatteryInfo,\n};\nexport default commands;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../lib/commands/performance.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export default commands;
|
|
2
|
+
export type ChangePermissionsOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* If `target` is set to 'pm':
|
|
5
|
+
* The full name of the permission to be changed
|
|
6
|
+
* or a list of permissions. Check https://developer.android.com/reference/android/Manifest.permission
|
|
7
|
+
* to get the full list of standard Android permssion names. Mandatory argument.
|
|
8
|
+
* If 'all' magic string is passed then the chosen action is going to be applied to all
|
|
9
|
+
* permisisons requested/granted by 'appPackage'.
|
|
10
|
+
* If `target` is set to 'appops':
|
|
11
|
+
* The full name of the appops permission to be changed
|
|
12
|
+
* or a list of permissions. Check AppOpsManager.java sources to get the full list of
|
|
13
|
+
* supported appops permission names for the given Android pklatform.
|
|
14
|
+
* Examples: 'ACTIVITY_RECOGNITION', 'SMS_FINANCIAL_TRANSACTIONS', 'READ_SMS', 'ACCESS_NOTIFICATIONS'.
|
|
15
|
+
* The 'all' magic string is unsupported.
|
|
16
|
+
*/
|
|
17
|
+
permissions: string | Array<string>;
|
|
18
|
+
/**
|
|
19
|
+
* [this.opts.appPackage] The application package to set change
|
|
20
|
+
* permissions on. Defaults to the package name under test.
|
|
21
|
+
*/
|
|
22
|
+
appPackage: string;
|
|
23
|
+
/**
|
|
24
|
+
* [grant|allow] One of `PM_ACTION` values if `target` is set to 'pm',
|
|
25
|
+
* otherwise one of `APPOPS_ACTION` values
|
|
26
|
+
*/
|
|
27
|
+
action: string;
|
|
28
|
+
/**
|
|
29
|
+
* [pm] Either 'pm' or 'appops'. The 'appops' one requires
|
|
30
|
+
* 'adb_shell' server security option to be enabled.
|
|
31
|
+
*/
|
|
32
|
+
target: string;
|
|
33
|
+
};
|
|
34
|
+
export type GetPermissionsOptions = {
|
|
35
|
+
/**
|
|
36
|
+
* [requested] - One of possible permission types to get.
|
|
37
|
+
* Can be any of `PERMISSIONS_TYPE` values.
|
|
38
|
+
*/
|
|
39
|
+
type: string;
|
|
40
|
+
/**
|
|
41
|
+
* [this.opts.appPackage] - The application package to set change
|
|
42
|
+
* permissions on. Defaults to the package name under test.
|
|
43
|
+
*/
|
|
44
|
+
appPackage: string;
|
|
45
|
+
};
|
|
46
|
+
export namespace commands {
|
|
47
|
+
/**
|
|
48
|
+
* @typedef {Object} ChangePermissionsOptions
|
|
49
|
+
* @property {!string|Array<string>} permissions
|
|
50
|
+
* If `target` is set to 'pm':
|
|
51
|
+
* The full name of the permission to be changed
|
|
52
|
+
* or a list of permissions. Check https://developer.android.com/reference/android/Manifest.permission
|
|
53
|
+
* to get the full list of standard Android permssion names. Mandatory argument.
|
|
54
|
+
* If 'all' magic string is passed then the chosen action is going to be applied to all
|
|
55
|
+
* permisisons requested/granted by 'appPackage'.
|
|
56
|
+
* If `target` is set to 'appops':
|
|
57
|
+
* The full name of the appops permission to be changed
|
|
58
|
+
* or a list of permissions. Check AppOpsManager.java sources to get the full list of
|
|
59
|
+
* supported appops permission names for the given Android pklatform.
|
|
60
|
+
* Examples: 'ACTIVITY_RECOGNITION', 'SMS_FINANCIAL_TRANSACTIONS', 'READ_SMS', 'ACCESS_NOTIFICATIONS'.
|
|
61
|
+
* The 'all' magic string is unsupported.
|
|
62
|
+
* @property {string} appPackage [this.opts.appPackage] The application package to set change
|
|
63
|
+
* permissions on. Defaults to the package name under test.
|
|
64
|
+
* @property {string} action [grant|allow] One of `PM_ACTION` values if `target` is set to 'pm',
|
|
65
|
+
* otherwise one of `APPOPS_ACTION` values
|
|
66
|
+
* @property {string} target [pm] Either 'pm' or 'appops'. The 'appops' one requires
|
|
67
|
+
* 'adb_shell' server security option to be enabled.
|
|
68
|
+
*/
|
|
69
|
+
/**
|
|
70
|
+
* Changes package permissions in runtime.
|
|
71
|
+
*
|
|
72
|
+
* @param {?ChangePermissionsOptions} opts - Available options mapping.
|
|
73
|
+
* @throws {Error} if there was a failure while changing permissions
|
|
74
|
+
*/
|
|
75
|
+
function mobileChangePermissions(opts?: ChangePermissionsOptions | null): Promise<any>;
|
|
76
|
+
/**
|
|
77
|
+
* @typedef {Object} GetPermissionsOptions
|
|
78
|
+
* @property {string} type [requested] - One of possible permission types to get.
|
|
79
|
+
* Can be any of `PERMISSIONS_TYPE` values.
|
|
80
|
+
* @property {string} appPackage [this.opts.appPackage] - The application package to set change
|
|
81
|
+
* permissions on. Defaults to the package name under test.
|
|
82
|
+
*/
|
|
83
|
+
/**
|
|
84
|
+
* Gets runtime permissions list for the given application package.
|
|
85
|
+
*
|
|
86
|
+
* @param {GetPermissionsOptions} opts - Available options mapping.
|
|
87
|
+
* @returns {Array<string>} The list of retrieved permissions for the given type
|
|
88
|
+
* (can also be empty).
|
|
89
|
+
* @throws {Error} if there was an error while getting permissions.
|
|
90
|
+
*/
|
|
91
|
+
function mobileGetPermissions(opts?: GetPermissionsOptions): string[];
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../lib/commands/permissions.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;iBA2Ee,MAAM,GAAC,MAAM,MAAM,CAAC;;;;;gBAarB,MAAM;;;;;YAEN,MAAM;;;;;YAEN,MAAM;;;;;;;UAqCN,MAAM;;;;;gBAEN,MAAM;;;IA1DpB;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEH;;;;;OAKG;IACH,uFAuBC;IAED;;;;;;OAMG;IAEH;;;;;;;OAOG;IACH,sEAsBC"}
|
|
@@ -1,116 +1,156 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
require("
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
12
|
-
var _utils = require("../utils");
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.commands = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const driver_1 = require("appium/driver");
|
|
9
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
10
|
+
const utils_1 = require("../utils");
|
|
13
11
|
const commands = {};
|
|
14
12
|
exports.commands = commands;
|
|
15
13
|
const ALL_PERMISSIONS_MAGIC = 'all';
|
|
16
14
|
const PM_ACTION = Object.freeze({
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
GRANT: 'grant',
|
|
16
|
+
REVOKE: 'revoke',
|
|
19
17
|
});
|
|
20
18
|
const APPOPS_ACTION = Object.freeze({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
ALLOW: 'allow',
|
|
20
|
+
DENY: 'deny',
|
|
21
|
+
IGNORE: 'ignore',
|
|
22
|
+
DEFAULT: 'default',
|
|
25
23
|
});
|
|
26
24
|
const PERMISSION_TARGET = Object.freeze({
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
PM: 'pm',
|
|
26
|
+
APPOPS: 'appops',
|
|
29
27
|
});
|
|
30
28
|
const PERMISSIONS_TYPE = Object.freeze({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
DENIED: 'denied',
|
|
30
|
+
GRANTED: 'granted',
|
|
31
|
+
REQUESTED: 'requested',
|
|
34
32
|
});
|
|
35
33
|
async function changePermissionsViaPm(permissions, appPackage, action) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
if (!lodash_1.default.values(PM_ACTION).includes(action)) {
|
|
35
|
+
throw new driver_1.errors.InvalidArgumentError(`Unknown action '${action}'. ` +
|
|
36
|
+
`Only ${JSON.stringify(lodash_1.default.values(PM_ACTION))} actions are supported`);
|
|
37
|
+
}
|
|
38
|
+
let affectedPermissions = lodash_1.default.isArray(permissions) ? permissions : [permissions];
|
|
39
|
+
if (lodash_1.default.toLower(permissions) === ALL_PERMISSIONS_MAGIC) {
|
|
40
|
+
const dumpsys = await this.adb.shell(['dumpsys', 'package', appPackage]);
|
|
41
|
+
const grantedPermissions = await this.adb.getGrantedPermissions(appPackage, dumpsys);
|
|
42
|
+
if (action === PM_ACTION.GRANT) {
|
|
43
|
+
const reqPermissons = await this.adb.getReqPermissions(appPackage, dumpsys);
|
|
44
|
+
affectedPermissions = lodash_1.default.difference(reqPermissons, grantedPermissions);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
affectedPermissions = grantedPermissions;
|
|
48
|
+
}
|
|
49
|
+
if (lodash_1.default.isEmpty(affectedPermissions)) {
|
|
50
|
+
this.log.info(`'${appPackage}' contains no permissions to ${action}`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
43
54
|
if (action === PM_ACTION.GRANT) {
|
|
44
|
-
|
|
45
|
-
affectedPermissions = _lodash.default.difference(reqPermissons, grantedPermissions);
|
|
46
|
-
} else {
|
|
47
|
-
affectedPermissions = grantedPermissions;
|
|
55
|
+
await this.adb.grantPermissions(appPackage, affectedPermissions);
|
|
48
56
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return;
|
|
57
|
+
else {
|
|
58
|
+
await bluebird_1.default.all(affectedPermissions.map((name) => this.adb.revokePermission(appPackage, name)));
|
|
52
59
|
}
|
|
53
|
-
}
|
|
54
|
-
if (action === PM_ACTION.GRANT) {
|
|
55
|
-
await this.adb.grantPermissions(appPackage, affectedPermissions);
|
|
56
|
-
} else {
|
|
57
|
-
await _bluebird.default.all(affectedPermissions.map(name => this.adb.revokePermission(appPackage, name)));
|
|
58
|
-
}
|
|
59
60
|
}
|
|
60
61
|
async function changePermissionsViaAppops(permissions, appPackage, action) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
if (!lodash_1.default.values(APPOPS_ACTION).includes(action)) {
|
|
63
|
+
throw new driver_1.errors.InvalidArgumentError(`Unknown action '${action}'. ` +
|
|
64
|
+
`Only ${JSON.stringify(lodash_1.default.values(APPOPS_ACTION))} actions are supported`);
|
|
65
|
+
}
|
|
66
|
+
if (lodash_1.default.toLower(permissions) === ALL_PERMISSIONS_MAGIC) {
|
|
67
|
+
throw new driver_1.errors.InvalidArgumentError(`'${ALL_PERMISSIONS_MAGIC}' permission is only supported for ` +
|
|
68
|
+
`'${PERMISSION_TARGET.PM}' target. ` +
|
|
69
|
+
`Check AppOpsManager.java from Android platform sources to get the full list of supported AppOps permissions`);
|
|
70
|
+
}
|
|
71
|
+
const promises = (lodash_1.default.isArray(permissions) ? permissions : [permissions])
|
|
72
|
+
.map((permission) => this.adb.shell(['appops', 'set', appPackage, permission, action]));
|
|
73
|
+
await bluebird_1.default.all(promises);
|
|
69
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @typedef {Object} ChangePermissionsOptions
|
|
77
|
+
* @property {!string|Array<string>} permissions
|
|
78
|
+
* If `target` is set to 'pm':
|
|
79
|
+
* The full name of the permission to be changed
|
|
80
|
+
* or a list of permissions. Check https://developer.android.com/reference/android/Manifest.permission
|
|
81
|
+
* to get the full list of standard Android permssion names. Mandatory argument.
|
|
82
|
+
* If 'all' magic string is passed then the chosen action is going to be applied to all
|
|
83
|
+
* permisisons requested/granted by 'appPackage'.
|
|
84
|
+
* If `target` is set to 'appops':
|
|
85
|
+
* The full name of the appops permission to be changed
|
|
86
|
+
* or a list of permissions. Check AppOpsManager.java sources to get the full list of
|
|
87
|
+
* supported appops permission names for the given Android pklatform.
|
|
88
|
+
* Examples: 'ACTIVITY_RECOGNITION', 'SMS_FINANCIAL_TRANSACTIONS', 'READ_SMS', 'ACCESS_NOTIFICATIONS'.
|
|
89
|
+
* The 'all' magic string is unsupported.
|
|
90
|
+
* @property {string} appPackage [this.opts.appPackage] The application package to set change
|
|
91
|
+
* permissions on. Defaults to the package name under test.
|
|
92
|
+
* @property {string} action [grant|allow] One of `PM_ACTION` values if `target` is set to 'pm',
|
|
93
|
+
* otherwise one of `APPOPS_ACTION` values
|
|
94
|
+
* @property {string} target [pm] Either 'pm' or 'appops'. The 'appops' one requires
|
|
95
|
+
* 'adb_shell' server security option to be enabled.
|
|
96
|
+
*/
|
|
97
|
+
/**
|
|
98
|
+
* Changes package permissions in runtime.
|
|
99
|
+
*
|
|
100
|
+
* @param {?ChangePermissionsOptions} opts - Available options mapping.
|
|
101
|
+
* @throws {Error} if there was a failure while changing permissions
|
|
102
|
+
*/
|
|
70
103
|
commands.mobileChangePermissions = async function mobileChangePermissions(opts = {}) {
|
|
71
|
-
|
|
72
|
-
permissions
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.ensureFeatureEnabled(_utils.ADB_SHELL_FEATURE);
|
|
88
|
-
return await changePermissionsViaAppops.bind(this)(permissions, appPackage, _lodash.default.toLower(action));
|
|
89
|
-
default:
|
|
90
|
-
throw new _driver.errors.InvalidArgumentError(`'target' argument must be one of: ${_lodash.default.values(PERMISSION_TARGET)}`);
|
|
91
|
-
}
|
|
104
|
+
const { permissions, appPackage = this.opts.appPackage, action = lodash_1.default.toLower(opts.target) === PERMISSION_TARGET.APPOPS ? APPOPS_ACTION.ALLOW : PM_ACTION.GRANT, target = PERMISSION_TARGET.PM, } = opts;
|
|
105
|
+
if (lodash_1.default.isNil(permissions)) {
|
|
106
|
+
throw new driver_1.errors.InvalidArgumentError(`'permissions' argument is required`);
|
|
107
|
+
}
|
|
108
|
+
if (lodash_1.default.isEmpty(permissions)) {
|
|
109
|
+
throw new driver_1.errors.InvalidArgumentError(`'permissions' argument must not be empty`);
|
|
110
|
+
}
|
|
111
|
+
switch (lodash_1.default.toLower(target)) {
|
|
112
|
+
case PERMISSION_TARGET.PM:
|
|
113
|
+
return await changePermissionsViaPm.bind(this)(permissions, appPackage, lodash_1.default.toLower(action));
|
|
114
|
+
case PERMISSION_TARGET.APPOPS:
|
|
115
|
+
this.ensureFeatureEnabled(utils_1.ADB_SHELL_FEATURE);
|
|
116
|
+
return await changePermissionsViaAppops.bind(this)(permissions, appPackage, lodash_1.default.toLower(action));
|
|
117
|
+
default:
|
|
118
|
+
throw new driver_1.errors.InvalidArgumentError(`'target' argument must be one of: ${lodash_1.default.values(PERMISSION_TARGET)}`);
|
|
119
|
+
}
|
|
92
120
|
};
|
|
121
|
+
/**
|
|
122
|
+
* @typedef {Object} GetPermissionsOptions
|
|
123
|
+
* @property {string} type [requested] - One of possible permission types to get.
|
|
124
|
+
* Can be any of `PERMISSIONS_TYPE` values.
|
|
125
|
+
* @property {string} appPackage [this.opts.appPackage] - The application package to set change
|
|
126
|
+
* permissions on. Defaults to the package name under test.
|
|
127
|
+
*/
|
|
128
|
+
/**
|
|
129
|
+
* Gets runtime permissions list for the given application package.
|
|
130
|
+
*
|
|
131
|
+
* @param {GetPermissionsOptions} opts - Available options mapping.
|
|
132
|
+
* @returns {Array<string>} The list of retrieved permissions for the given type
|
|
133
|
+
* (can also be empty).
|
|
134
|
+
* @throws {Error} if there was an error while getting permissions.
|
|
135
|
+
*/
|
|
93
136
|
commands.mobileGetPermissions = async function mobileGetPermissions(opts = {}) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
return await actionFunc(appPackage);
|
|
137
|
+
const { type = PERMISSIONS_TYPE.REQUESTED, appPackage = this.opts.appPackage, } = opts;
|
|
138
|
+
let actionFunc;
|
|
139
|
+
switch (lodash_1.default.toLower(type)) {
|
|
140
|
+
case PERMISSIONS_TYPE.REQUESTED:
|
|
141
|
+
actionFunc = (pkg) => this.adb.getReqPermissions(pkg);
|
|
142
|
+
break;
|
|
143
|
+
case PERMISSIONS_TYPE.GRANTED:
|
|
144
|
+
actionFunc = (pkg) => this.adb.getGrantedPermissions(pkg);
|
|
145
|
+
break;
|
|
146
|
+
case PERMISSIONS_TYPE.DENIED:
|
|
147
|
+
actionFunc = (pkg) => this.adb.getDeniedPermissions(pkg);
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
throw new driver_1.errors.InvalidArgumentError(`Unknown permissions type '${type}'. ` +
|
|
151
|
+
`Only ${JSON.stringify(lodash_1.default.values(PERMISSIONS_TYPE))} types are supported`);
|
|
152
|
+
}
|
|
153
|
+
return await actionFunc(appPackage);
|
|
113
154
|
};
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZHJpdmVyIiwiX2JsdWViaXJkIiwiX3V0aWxzIiwiY29tbWFuZHMiLCJleHBvcnRzIiwiQUxMX1BFUk1JU1NJT05TX01BR0lDIiwiUE1fQUNUSU9OIiwiT2JqZWN0IiwiZnJlZXplIiwiR1JBTlQiLCJSRVZPS0UiLCJBUFBPUFNfQUNUSU9OIiwiQUxMT1ciLCJERU5ZIiwiSUdOT1JFIiwiREVGQVVMVCIsIlBFUk1JU1NJT05fVEFSR0VUIiwiUE0iLCJBUFBPUFMiLCJQRVJNSVNTSU9OU19UWVBFIiwiREVOSUVEIiwiR1JBTlRFRCIsIlJFUVVFU1RFRCIsImNoYW5nZVBlcm1pc3Npb25zVmlhUG0iLCJwZXJtaXNzaW9ucyIsImFwcFBhY2thZ2UiLCJhY3Rpb24iLCJfIiwidmFsdWVzIiwiaW5jbHVkZXMiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJhZmZlY3RlZFBlcm1pc3Npb25zIiwiaXNBcnJheSIsInRvTG93ZXIiLCJkdW1wc3lzIiwiYWRiIiwic2hlbGwiLCJncmFudGVkUGVybWlzc2lvbnMiLCJnZXRHcmFudGVkUGVybWlzc2lvbnMiLCJyZXFQZXJtaXNzb25zIiwiZ2V0UmVxUGVybWlzc2lvbnMiLCJkaWZmZXJlbmNlIiwiaXNFbXB0eSIsImxvZyIsImluZm8iLCJncmFudFBlcm1pc3Npb25zIiwiQiIsImFsbCIsIm1hcCIsIm5hbWUiLCJyZXZva2VQZXJtaXNzaW9uIiwiY2hhbmdlUGVybWlzc2lvbnNWaWFBcHBvcHMiLCJwcm9taXNlcyIsInBlcm1pc3Npb24iLCJtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyIsIm9wdHMiLCJ0YXJnZXQiLCJpc05pbCIsImJpbmQiLCJlbnN1cmVGZWF0dXJlRW5hYmxlZCIsIkFEQl9TSEVMTF9GRUFUVVJFIiwibW9iaWxlR2V0UGVybWlzc2lvbnMiLCJ0eXBlIiwiYWN0aW9uRnVuYyIsInBrZyIsImdldERlbmllZFBlcm1pc3Npb25zIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL3Blcm1pc3Npb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IEFEQl9TSEVMTF9GRUFUVVJFIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBBTExfUEVSTUlTU0lPTlNfTUFHSUMgPSAnYWxsJztcbmNvbnN0IFBNX0FDVElPTiA9IE9iamVjdC5mcmVlemUoe1xuICBHUkFOVDogJ2dyYW50JyxcbiAgUkVWT0tFOiAncmV2b2tlJyxcbn0pO1xuY29uc3QgQVBQT1BTX0FDVElPTiA9IE9iamVjdC5mcmVlemUoe1xuICBBTExPVzogJ2FsbG93JyxcbiAgREVOWTogJ2RlbnknLFxuICBJR05PUkU6ICdpZ25vcmUnLFxuICBERUZBVUxUOiAnZGVmYXVsdCcsXG59KTtcbmNvbnN0IFBFUk1JU1NJT05fVEFSR0VUID0gT2JqZWN0LmZyZWV6ZSh7XG4gIFBNOiAncG0nLFxuICBBUFBPUFM6ICdhcHBvcHMnLFxufSk7XG5jb25zdCBQRVJNSVNTSU9OU19UWVBFID0gT2JqZWN0LmZyZWV6ZSh7XG4gIERFTklFRDogJ2RlbmllZCcsXG4gIEdSQU5URUQ6ICdncmFudGVkJyxcbiAgUkVRVUVTVEVEOiAncmVxdWVzdGVkJyxcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBjaGFuZ2VQZXJtaXNzaW9uc1ZpYVBtIChwZXJtaXNzaW9ucywgYXBwUGFja2FnZSwgYWN0aW9uKSB7XG4gIGlmICghXy52YWx1ZXMoUE1fQUNUSU9OKS5pbmNsdWRlcyhhY3Rpb24pKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVW5rbm93biBhY3Rpb24gJyR7YWN0aW9ufScuIGAgK1xuICAgICAgYE9ubHkgJHtKU09OLnN0cmluZ2lmeShfLnZhbHVlcyhQTV9BQ1RJT04pKX0gYWN0aW9ucyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cblxuICBsZXQgYWZmZWN0ZWRQZXJtaXNzaW9ucyA9IF8uaXNBcnJheShwZXJtaXNzaW9ucykgPyBwZXJtaXNzaW9ucyA6IFtwZXJtaXNzaW9uc107XG4gIGlmIChfLnRvTG93ZXIocGVybWlzc2lvbnMpID09PSBBTExfUEVSTUlTU0lPTlNfTUFHSUMpIHtcbiAgICBjb25zdCBkdW1wc3lzID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkdW1wc3lzJywgJ3BhY2thZ2UnLCBhcHBQYWNrYWdlXSk7XG4gICAgY29uc3QgZ3JhbnRlZFBlcm1pc3Npb25zID0gYXdhaXQgdGhpcy5hZGIuZ2V0R3JhbnRlZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UsIGR1bXBzeXMpO1xuICAgIGlmIChhY3Rpb24gPT09IFBNX0FDVElPTi5HUkFOVCkge1xuICAgICAgY29uc3QgcmVxUGVybWlzc29ucyA9IGF3YWl0IHRoaXMuYWRiLmdldFJlcVBlcm1pc3Npb25zKGFwcFBhY2thZ2UsIGR1bXBzeXMpO1xuICAgICAgYWZmZWN0ZWRQZXJtaXNzaW9ucyA9IF8uZGlmZmVyZW5jZShyZXFQZXJtaXNzb25zLCBncmFudGVkUGVybWlzc2lvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZmZlY3RlZFBlcm1pc3Npb25zID0gZ3JhbnRlZFBlcm1pc3Npb25zO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KGFmZmVjdGVkUGVybWlzc2lvbnMpKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGAnJHthcHBQYWNrYWdlfScgY29udGFpbnMgbm8gcGVybWlzc2lvbnMgdG8gJHthY3Rpb259YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKGFjdGlvbiA9PT0gUE1fQUNUSU9OLkdSQU5UKSB7XG4gICAgYXdhaXQgdGhpcy5hZGIuZ3JhbnRQZXJtaXNzaW9ucyhhcHBQYWNrYWdlLCBhZmZlY3RlZFBlcm1pc3Npb25zKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBCLmFsbChhZmZlY3RlZFBlcm1pc3Npb25zLm1hcCgobmFtZSkgPT4gdGhpcy5hZGIucmV2b2tlUGVybWlzc2lvbihhcHBQYWNrYWdlLCBuYW1lKSkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNoYW5nZVBlcm1pc3Npb25zVmlhQXBwb3BzIChwZXJtaXNzaW9ucywgYXBwUGFja2FnZSwgYWN0aW9uKSB7XG4gIGlmICghXy52YWx1ZXMoQVBQT1BTX0FDVElPTikuaW5jbHVkZXMoYWN0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gYWN0aW9uICcke2FjdGlvbn0nLiBgICtcbiAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoQVBQT1BTX0FDVElPTikpfSBhY3Rpb25zIGFyZSBzdXBwb3J0ZWRgKTtcbiAgfVxuICBpZiAoXy50b0xvd2VyKHBlcm1pc3Npb25zKSA9PT0gQUxMX1BFUk1JU1NJT05TX01BR0lDKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJyR7QUxMX1BFUk1JU1NJT05TX01BR0lDfScgcGVybWlzc2lvbiBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgYCArXG4gICAgICBgJyR7UEVSTUlTU0lPTl9UQVJHRVQuUE19JyB0YXJnZXQuIGAgK1xuICAgICAgYENoZWNrIEFwcE9wc01hbmFnZXIuamF2YSBmcm9tIEFuZHJvaWQgcGxhdGZvcm0gc291cmNlcyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWQgQXBwT3BzIHBlcm1pc3Npb25zYCk7XG4gIH1cblxuICBjb25zdCBwcm9taXNlcyA9IChfLmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdKVxuICAgIC5tYXAoKHBlcm1pc3Npb24pID0+IHRoaXMuYWRiLnNoZWxsKFsnYXBwb3BzJywgJ3NldCcsIGFwcFBhY2thZ2UsIHBlcm1pc3Npb24sIGFjdGlvbl0pKTtcbiAgYXdhaXQgQi5hbGwocHJvbWlzZXMpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENoYW5nZVBlcm1pc3Npb25zT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfEFycmF5PHN0cmluZz59IHBlcm1pc3Npb25zXG4gKiBJZiBgdGFyZ2V0YCBpcyBzZXQgdG8gJ3BtJzpcbiAqICAgVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byBiZSBjaGFuZ2VkXG4gKiBvciBhIGxpc3Qgb2YgcGVybWlzc2lvbnMuIENoZWNrIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL01hbmlmZXN0LnBlcm1pc3Npb25cbiAqIHRvIGdldCB0aGUgZnVsbCBsaXN0IG9mIHN0YW5kYXJkIEFuZHJvaWQgcGVybXNzaW9uIG5hbWVzLiBNYW5kYXRvcnkgYXJndW1lbnQuXG4gKiBJZiAnYWxsJyBtYWdpYyBzdHJpbmcgaXMgcGFzc2VkIHRoZW4gdGhlIGNob3NlbiBhY3Rpb24gaXMgZ29pbmcgdG8gYmUgYXBwbGllZCB0byBhbGxcbiAqIHBlcm1pc2lzb25zIHJlcXVlc3RlZC9ncmFudGVkIGJ5ICdhcHBQYWNrYWdlJy5cbiAqIElmIGB0YXJnZXRgIGlzIHNldCB0byAnYXBwb3BzJzpcbiAqICAgVGhlIGZ1bGwgbmFtZSBvZiB0aGUgYXBwb3BzIHBlcm1pc3Npb24gdG8gYmUgY2hhbmdlZFxuICogb3IgYSBsaXN0IG9mIHBlcm1pc3Npb25zLiBDaGVjayBBcHBPcHNNYW5hZ2VyLmphdmEgc291cmNlcyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZlxuICogc3VwcG9ydGVkIGFwcG9wcyBwZXJtaXNzaW9uIG5hbWVzIGZvciB0aGUgZ2l2ZW4gQW5kcm9pZCBwa2xhdGZvcm0uXG4gKiBFeGFtcGxlczogJ0FDVElWSVRZX1JFQ09HTklUSU9OJywgJ1NNU19GSU5BTkNJQUxfVFJBTlNBQ1RJT05TJywgJ1JFQURfU01TJywgJ0FDQ0VTU19OT1RJRklDQVRJT05TJy5cbiAqIFRoZSAnYWxsJyBtYWdpYyBzdHJpbmcgaXMgdW5zdXBwb3J0ZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwUGFja2FnZSBbdGhpcy5vcHRzLmFwcFBhY2thZ2VdIFRoZSBhcHBsaWNhdGlvbiBwYWNrYWdlIHRvIHNldCBjaGFuZ2VcbiAqIHBlcm1pc3Npb25zIG9uLiBEZWZhdWx0cyB0byB0aGUgcGFja2FnZSBuYW1lIHVuZGVyIHRlc3QuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWN0aW9uIFtncmFudHxhbGxvd10gT25lIG9mIGBQTV9BQ1RJT05gIHZhbHVlcyBpZiBgdGFyZ2V0YCBpcyBzZXQgdG8gJ3BtJyxcbiAqIG90aGVyd2lzZSBvbmUgb2YgYEFQUE9QU19BQ1RJT05gIHZhbHVlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRhcmdldCBbcG1dIEVpdGhlciAncG0nIG9yICdhcHBvcHMnLiBUaGUgJ2FwcG9wcycgb25lIHJlcXVpcmVzXG4gKiAnYWRiX3NoZWxsJyBzZXJ2ZXIgc2VjdXJpdHkgb3B0aW9uIHRvIGJlIGVuYWJsZWQuXG4gKi9cblxuLyoqXG4gKiBDaGFuZ2VzIHBhY2thZ2UgcGVybWlzc2lvbnMgaW4gcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gez9DaGFuZ2VQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgYWN0aW9uID0gXy50b0xvd2VyKG9wdHMudGFyZ2V0KSA9PT0gUEVSTUlTU0lPTl9UQVJHRVQuQVBQT1BTID8gQVBQT1BTX0FDVElPTi5BTExPVyA6IFBNX0FDVElPTi5HUkFOVCxcbiAgICB0YXJnZXQgPSBQRVJNSVNTSU9OX1RBUkdFVC5QTSxcbiAgfSA9IG9wdHM7XG4gIGlmIChfLmlzTmlsKHBlcm1pc3Npb25zKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdwZXJtaXNzaW9ucycgYXJndW1lbnQgaXMgcmVxdWlyZWRgKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KHBlcm1pc3Npb25zKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdwZXJtaXNzaW9ucycgYXJndW1lbnQgbXVzdCBub3QgYmUgZW1wdHlgKTtcbiAgfVxuXG4gIHN3aXRjaCAoXy50b0xvd2VyKHRhcmdldCkpIHtcbiAgICBjYXNlIFBFUk1JU1NJT05fVEFSR0VULlBNOlxuICAgICAgcmV0dXJuIGF3YWl0IGNoYW5nZVBlcm1pc3Npb25zVmlhUG0uYmluZCh0aGlzKShwZXJtaXNzaW9ucywgYXBwUGFja2FnZSwgXy50b0xvd2VyKGFjdGlvbikpO1xuICAgIGNhc2UgUEVSTUlTU0lPTl9UQVJHRVQuQVBQT1BTOlxuICAgICAgdGhpcy5lbnN1cmVGZWF0dXJlRW5hYmxlZChBREJfU0hFTExfRkVBVFVSRSk7XG4gICAgICByZXR1cm4gYXdhaXQgY2hhbmdlUGVybWlzc2lvbnNWaWFBcHBvcHMuYmluZCh0aGlzKShwZXJtaXNzaW9ucywgYXBwUGFja2FnZSwgXy50b0xvd2VyKGFjdGlvbikpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAndGFyZ2V0JyBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZjogJHtfLnZhbHVlcyhQRVJNSVNTSU9OX1RBUkdFVCl9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0UGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBbcmVxdWVzdGVkXSAtIE9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHR5cGVzIHRvIGdldC5cbiAqIENhbiBiZSBhbnkgb2YgYFBFUk1JU1NJT05TX1RZUEVgIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICovXG5cbi8qKlxuICogR2V0cyBydW50aW1lIHBlcm1pc3Npb25zIGxpc3QgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7R2V0UGVybWlzc2lvbnNPcHRpb25zfSBvcHRzIC0gQXZhaWxhYmxlIG9wdGlvbnMgbWFwcGluZy5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiB0eXBlXG4gKiAoY2FuIGFsc28gYmUgZW1wdHkpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHBlcm1pc3Npb25zLlxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRCxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gIH0gPSBvcHRzO1xuXG4gIGxldCBhY3Rpb25GdW5jO1xuICBzd2l0Y2ggKF8udG9Mb3dlcih0eXBlKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5SRVFVRVNURUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKHBrZykgPT4gdGhpcy5hZGIuZ2V0UmVxUGVybWlzc2lvbnMocGtnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5HUkFOVEVEOlxuICAgICAgYWN0aW9uRnVuYyA9IChwa2cpID0+IHRoaXMuYWRiLmdldEdyYW50ZWRQZXJtaXNzaW9ucyhwa2cpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkRFTklFRDpcbiAgICAgIGFjdGlvbkZ1bmMgPSAocGtnKSA9PiB0aGlzLmFkYi5nZXREZW5pZWRQZXJtaXNzaW9ucyhwa2cpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gcGVybWlzc2lvbnMgdHlwZSAnJHt0eXBlfScuIGAgK1xuICAgICAgICBgT25seSAke0pTT04uc3RyaW5naWZ5KF8udmFsdWVzKFBFUk1JU1NJT05TX1RZUEUpKX0gdHlwZXMgYXJlIHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBhd2FpdCBhY3Rpb25GdW5jKGFwcFBhY2thZ2UpO1xufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLE1BQU1JLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFBQ0MsT0FBQSxDQUFBRCxRQUFBLEdBQUFBLFFBQUE7QUFFcEIsTUFBTUUscUJBQXFCLEdBQUcsS0FB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
|
|
155
|
+
exports.default = commands;
|
|
156
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","names":["_lodash","_interopRequireDefault","require","_driver","_bluebird","_utils","commands","exports","ALL_PERMISSIONS_MAGIC","PM_ACTION","Object","freeze","GRANT","REVOKE","APPOPS_ACTION","ALLOW","DENY","IGNORE","DEFAULT","PERMISSION_TARGET","PM","APPOPS","PERMISSIONS_TYPE","DENIED","GRANTED","REQUESTED","changePermissionsViaPm","permissions","appPackage","action","_","values","includes","errors","InvalidArgumentError","JSON","stringify","affectedPermissions","isArray","toLower","dumpsys","adb","shell","grantedPermissions","getGrantedPermissions","reqPermissons","getReqPermissions","difference","isEmpty","log","info","grantPermissions","B","all","map","name","revokePermission","changePermissionsViaAppops","promises","permission","mobileChangePermissions","opts","target","isNil","bind","ensureFeatureEnabled","ADB_SHELL_FEATURE","mobileGetPermissions","type","actionFunc","pkg","getDeniedPermissions","_default","default"],"sources":["../../../lib/commands/permissions.js"],"sourcesContent":["import _ from 'lodash';\nimport { errors } from 'appium/driver';\nimport B from 'bluebird';\nimport { ADB_SHELL_FEATURE } from '../utils';\n\nconst commands = {};\n\nconst ALL_PERMISSIONS_MAGIC = 'all';\nconst PM_ACTION = Object.freeze({\n GRANT: 'grant',\n REVOKE: 'revoke',\n});\nconst APPOPS_ACTION = Object.freeze({\n ALLOW: 'allow',\n DENY: 'deny',\n IGNORE: 'ignore',\n DEFAULT: 'default',\n});\nconst PERMISSION_TARGET = Object.freeze({\n PM: 'pm',\n APPOPS: 'appops',\n});\nconst PERMISSIONS_TYPE = Object.freeze({\n DENIED: 'denied',\n GRANTED: 'granted',\n REQUESTED: 'requested',\n});\n\nasync function changePermissionsViaPm (permissions, appPackage, action) {\n if (!_.values(PM_ACTION).includes(action)) {\n throw new errors.InvalidArgumentError(`Unknown action '${action}'. ` +\n `Only ${JSON.stringify(_.values(PM_ACTION))} actions are supported`);\n }\n\n let affectedPermissions = _.isArray(permissions) ? permissions : [permissions];\n if (_.toLower(permissions) === ALL_PERMISSIONS_MAGIC) {\n const dumpsys = await this.adb.shell(['dumpsys', 'package', appPackage]);\n const grantedPermissions = await this.adb.getGrantedPermissions(appPackage, dumpsys);\n if (action === PM_ACTION.GRANT) {\n const reqPermissons = await this.adb.getReqPermissions(appPackage, dumpsys);\n affectedPermissions = _.difference(reqPermissons, grantedPermissions);\n } else {\n affectedPermissions = grantedPermissions;\n }\n if (_.isEmpty(affectedPermissions)) {\n this.log.info(`'${appPackage}' contains no permissions to ${action}`);\n return;\n }\n }\n\n if (action === PM_ACTION.GRANT) {\n await this.adb.grantPermissions(appPackage, affectedPermissions);\n } else {\n await B.all(affectedPermissions.map((name) => this.adb.revokePermission(appPackage, name)));\n }\n}\n\nasync function changePermissionsViaAppops (permissions, appPackage, action) {\n if (!_.values(APPOPS_ACTION).includes(action)) {\n throw new errors.InvalidArgumentError(`Unknown action '${action}'. ` +\n `Only ${JSON.stringify(_.values(APPOPS_ACTION))} actions are supported`);\n }\n if (_.toLower(permissions) === ALL_PERMISSIONS_MAGIC) {\n throw new errors.InvalidArgumentError(`'${ALL_PERMISSIONS_MAGIC}' permission is only supported for ` +\n `'${PERMISSION_TARGET.PM}' target. ` +\n `Check AppOpsManager.java from Android platform sources to get the full list of supported AppOps permissions`);\n }\n\n const promises = (_.isArray(permissions) ? permissions : [permissions])\n .map((permission) => this.adb.shell(['appops', 'set', appPackage, permission, action]));\n await B.all(promises);\n}\n\n/**\n * @typedef {Object} ChangePermissionsOptions\n * @property {!string|Array<string>} permissions\n * If `target` is set to 'pm':\n * The full name of the permission to be changed\n * or a list of permissions. Check https://developer.android.com/reference/android/Manifest.permission\n * to get the full list of standard Android permssion names. Mandatory argument.\n * If 'all' magic string is passed then the chosen action is going to be applied to all\n * permisisons requested/granted by 'appPackage'.\n * If `target` is set to 'appops':\n * The full name of the appops permission to be changed\n * or a list of permissions. Check AppOpsManager.java sources to get the full list of\n * supported appops permission names for the given Android pklatform.\n * Examples: 'ACTIVITY_RECOGNITION', 'SMS_FINANCIAL_TRANSACTIONS', 'READ_SMS', 'ACCESS_NOTIFICATIONS'.\n * The 'all' magic string is unsupported.\n * @property {string} appPackage [this.opts.appPackage] The application package to set change\n * permissions on. Defaults to the package name under test.\n * @property {string} action [grant|allow] One of `PM_ACTION` values if `target` is set to 'pm',\n * otherwise one of `APPOPS_ACTION` values\n * @property {string} target [pm] Either 'pm' or 'appops'. The 'appops' one requires\n * 'adb_shell' server security option to be enabled.\n */\n\n/**\n * Changes package permissions in runtime.\n *\n * @param {?ChangePermissionsOptions} opts - Available options mapping.\n * @throws {Error} if there was a failure while changing permissions\n */\ncommands.mobileChangePermissions = async function mobileChangePermissions (opts = {}) {\n const {\n permissions,\n appPackage = this.opts.appPackage,\n action = _.toLower(opts.target) === PERMISSION_TARGET.APPOPS ? APPOPS_ACTION.ALLOW : PM_ACTION.GRANT,\n target = PERMISSION_TARGET.PM,\n } = opts;\n if (_.isNil(permissions)) {\n throw new errors.InvalidArgumentError(`'permissions' argument is required`);\n }\n if (_.isEmpty(permissions)) {\n throw new errors.InvalidArgumentError(`'permissions' argument must not be empty`);\n }\n\n switch (_.toLower(target)) {\n case PERMISSION_TARGET.PM:\n return await changePermissionsViaPm.bind(this)(permissions, appPackage, _.toLower(action));\n case PERMISSION_TARGET.APPOPS:\n this.ensureFeatureEnabled(ADB_SHELL_FEATURE);\n return await changePermissionsViaAppops.bind(this)(permissions, appPackage, _.toLower(action));\n default:\n throw new errors.InvalidArgumentError(`'target' argument must be one of: ${_.values(PERMISSION_TARGET)}`);\n }\n};\n\n/**\n * @typedef {Object} GetPermissionsOptions\n * @property {string} type [requested] - One of possible permission types to get.\n * Can be any of `PERMISSIONS_TYPE` values.\n * @property {string} appPackage [this.opts.appPackage] - The application package to set change\n * permissions on. Defaults to the package name under test.\n */\n\n/**\n * Gets runtime permissions list for the given application package.\n *\n * @param {GetPermissionsOptions} opts - Available options mapping.\n * @returns {Array<string>} The list of retrieved permissions for the given type\n * (can also be empty).\n * @throws {Error} if there was an error while getting permissions.\n */\ncommands.mobileGetPermissions = async function mobileGetPermissions (opts = {}) {\n const {\n type = PERMISSIONS_TYPE.REQUESTED,\n appPackage = this.opts.appPackage,\n } = opts;\n\n let actionFunc;\n switch (_.toLower(type)) {\n case PERMISSIONS_TYPE.REQUESTED:\n actionFunc = (pkg) => this.adb.getReqPermissions(pkg);\n break;\n case PERMISSIONS_TYPE.GRANTED:\n actionFunc = (pkg) => this.adb.getGrantedPermissions(pkg);\n break;\n case PERMISSIONS_TYPE.DENIED:\n actionFunc = (pkg) => this.adb.getDeniedPermissions(pkg);\n break;\n default:\n throw new errors.InvalidArgumentError(`Unknown permissions type '${type}'. ` +\n `Only ${JSON.stringify(_.values(PERMISSIONS_TYPE))} types are supported`);\n }\n return await actionFunc(appPackage);\n};\n\nexport { commands };\nexport default commands;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../lib/commands/permissions.js"],"names":[],"mappings":"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"}
|