in shadows/framework/src/main/java/org/robolectric/shadows/LegacyManifestParser.java [479:548]
private static int decodeProtectionLevel(String protectionLevel) {
if (protectionLevel == null) {
return PermissionInfo.PROTECTION_NORMAL;
}
int permissions = PermissionInfo.PROTECTION_NORMAL;
String[] levels = protectionLevel.split("\\|", 0);
for (String level : levels) {
switch (level) {
case "normal":
permissions |= PermissionInfo.PROTECTION_NORMAL;
break;
case "dangerous":
permissions |= PermissionInfo.PROTECTION_DANGEROUS;
break;
case "signature":
permissions |= PermissionInfo.PROTECTION_SIGNATURE;
break;
case "signatureOrSystem":
permissions |= PermissionInfo.PROTECTION_SIGNATURE_OR_SYSTEM;
break;
case "privileged":
permissions |= PermissionInfo.PROTECTION_FLAG_PRIVILEGED;
break;
case "system":
permissions |= PermissionInfo.PROTECTION_FLAG_SYSTEM;
break;
case "development":
permissions |= PermissionInfo.PROTECTION_FLAG_DEVELOPMENT;
break;
case "appop":
permissions |= PermissionInfo.PROTECTION_FLAG_APPOP;
break;
case "pre23":
permissions |= PermissionInfo.PROTECTION_FLAG_PRE23;
break;
case "installer":
permissions |= PermissionInfo.PROTECTION_FLAG_INSTALLER;
break;
case "verifier":
permissions |= PermissionInfo.PROTECTION_FLAG_VERIFIER;
break;
case "preinstalled":
permissions |= PermissionInfo.PROTECTION_FLAG_PREINSTALLED;
break;
case "setup":
permissions |= PermissionInfo.PROTECTION_FLAG_SETUP;
break;
case "instant":
permissions |= PermissionInfo.PROTECTION_FLAG_INSTANT;
break;
case "runtime":
permissions |= PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY;
break;
case "oem":
permissions |= PermissionInfo.PROTECTION_FLAG_OEM;
break;
case "vendorPrivileged":
permissions |= PermissionInfo.PROTECTION_FLAG_VENDOR_PRIVILEGED;
break;
case "textClassifier":
permissions |= PermissionInfo.PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER;
break;
default:
throw new IllegalArgumentException("unknown protection level " + protectionLevel);
}
}
return permissions;
}