Merge changes from topic "am-81126cf1-3777-4130-82b2-fbb9b5f9bcf8" into oc-dev
* changes:
[automerger] RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package." am: 95a3e91846 am: 94e1a09bc6 am: 84756be0be am: 276f6cbb70 skipped: 50861d59c2
[automerger] RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package." am: 95a3e91846 am: 94e1a09bc6 am: 84756be0be am: 276f6cbb70
[automerger] RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package." am: 95a3e91846 am: 94e1a09bc6 am: 84756be0be
[automerger] RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package." am: 95a3e91846 am: 94e1a09bc6
[automerger] RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package." am: 95a3e91846
RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package."
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index ec9d00e..2f4e948 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -276,7 +276,6 @@
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.PermissionsState.PermissionState;
-import com.android.server.pm.PackageSetting;
import com.android.server.pm.Settings.DatabaseVersion;
import com.android.server.pm.Settings.VersionInfo;
import com.android.server.pm.dex.DexManager;
@@ -603,8 +602,6 @@
*/
private static final boolean DEFAULT_PACKAGE_PARSER_CACHE_ENABLED = true;
- private static final int PROTECTION_MASK_BASE = 0xf;
-
final ServiceThread mHandlerThread;
final PackageHandler mHandler;
@@ -5356,10 +5353,8 @@
private static void enforceDeclaredAsUsedAndRuntimeOrDevelopmentPermission(
PackageParser.Package pkg, BasePermission bp) {
- final PackageSetting pkgSetting = (PackageSetting) pkg.mExtras;
- final PermissionsState permsState = pkgSetting.getPermissionsState();
int index = pkg.requestedPermissions.indexOf(bp.name);
- if (!permsState.hasRequestedPermission(bp.name) && index == -1) {
+ if (index == -1) {
throw new SecurityException("Package " + pkg.packageName
+ " has not requested permission " + bp.name);
}
@@ -5502,12 +5497,11 @@
@Override
public void revokeRuntimePermission(String packageName, String name, int userId) {
- revokeRuntimePermission(packageName, name, userId, false /* Only if not fixed by policy */,
- mSettings.getPermission(name));
+ revokeRuntimePermission(packageName, name, userId, false /* Only if not fixed by policy */);
}
private void revokeRuntimePermission(String packageName, String name, int userId,
- boolean overridePolicy, BasePermission bp) {
+ boolean overridePolicy) {
if (!sUserManager.exists(userId)) {
Log.e(TAG, "No such user:" + userId);
return;
@@ -5533,6 +5527,7 @@
|| filterAppAccessLPr(ps, Binder.getCallingUid(), userId)) {
throw new IllegalArgumentException("Unknown package: " + packageName);
}
+ final BasePermission bp = mSettings.mPermissions.get(name);
if (bp == null) {
throw new IllegalArgumentException("Unknown permission: " + name);
}
@@ -5654,7 +5649,7 @@
try {
revokeRuntimePermission(packageName, permissionName, userId,
- false, mSettings.getPermission(permissionName));
+ false);
} catch (IllegalArgumentException e) {
Slog.e(TAG, "Could not revoke " + permissionName + " from "
+ packageName, e);
@@ -12270,10 +12265,7 @@
if (DEBUG_REMOVE) Log.d(TAG, " Activities: " + r);
}
- final ArrayList<String> allPackageNames = new ArrayList<>(mPackages.keySet());
-
N = pkg.permissions.size();
- List<BasePermission> bps = new ArrayList<BasePermission>(N);
r = null;
for (i=0; i<N; i++) {
PackageParser.Permission p = pkg.permissions.get(i);
@@ -12282,10 +12274,6 @@
bp = mSettings.mPermissionTrees.get(p.info.name);
}
if (bp != null && bp.perm == p) {
- if (((p.info.protectionLevel & PROTECTION_MASK_BASE) &
- PermissionInfo.PROTECTION_DANGEROUS) != 0) {
- bps.add(bp);
- }
bp.perm = null;
if (DEBUG_REMOVE && chatty) {
if (r == null) {
@@ -12303,45 +12291,6 @@
}
}
}
-
- AsyncTask.execute(() -> {
- final int numRemovedPermissions = bps.size();
- for (int permissionNum = 0; permissionNum < numRemovedPermissions; permissionNum++) {
- final int[] userIds = mUserManagerInternal.getUserIds();
- final int numUserIds = userIds.length;
-
- final int numPackages = allPackageNames.size();
- for (int packageNum = 0; packageNum < numPackages; packageNum++) {
- final String packageName = allPackageNames.get(packageNum);
- final PackageManagerInternal packageManagerInt =
- LocalServices.getService(PackageManagerInternal.class);
- final ApplicationInfo applicationInfo = packageManagerInt.getApplicationInfo(
- packageName, 0, Process.SYSTEM_UID, UserHandle.USER_SYSTEM);
- if (applicationInfo != null
- && applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
- continue;
- }
- for (int userIdNum = 0; userIdNum < numUserIds; userIdNum++) {
- final int userId = userIds[userIdNum];
- final String permissionName = bps.get(permissionNum).name;
- if (checkPermission(permissionName, packageName,
- userId) == PackageManager.PERMISSION_GRANTED) {
- try {
- revokeRuntimePermission(packageName,
- permissionName,
- userId,
- false,
- bps.get(permissionNum));
- } catch (IllegalArgumentException e) {
- Slog.e(TAG, "Could not revoke " + permissionName + " from "
- + packageName, e);
- }
- }
- }
- }
- }
- });
-
if (r != null) {
if (DEBUG_REMOVE) Log.d(TAG, " Permissions: " + r);
}
@@ -24747,7 +24696,7 @@
public void revokeRuntimePermission(String packageName, String name, int userId,
boolean overridePolicy) {
PackageManagerService.this.revokeRuntimePermission(packageName, name, userId,
- overridePolicy, mSettings.getPermission(name));
+ overridePolicy);
}
@Override
diff --git a/services/core/java/com/android/server/pm/PermissionsState.java b/services/core/java/com/android/server/pm/PermissionsState.java
index d494e33..8a427cd 100644
--- a/services/core/java/com/android/server/pm/PermissionsState.java
+++ b/services/core/java/com/android/server/pm/PermissionsState.java
@@ -291,14 +291,6 @@
}
/**
- * Returns whether the state has any known request for the given permission name,
- * whether or not it has been granted.
- */
- public boolean hasRequestedPermission(String name) {
- return mPermissions != null && (mPermissions.get(name) != null);
- }
-
- /**
* Gets all permissions for a given device user id regardless if they
* are install time or runtime permissions.
*
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 1f8990b..45d0c58 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -448,17 +448,6 @@
mBackupStoppedPackagesFilename = new File(mSystemDir, "packages-stopped-backup.xml");
}
- public @Nullable BasePermission getPermission(@NonNull String permName) {
- synchronized (mLock) {
- return getPermissionLocked(permName);
- }
- }
-
- @GuardedBy("mLock")
- @Nullable BasePermission getPermissionLocked(@NonNull String permName) {
- return mPermissions.get(permName);
- }
-
PackageSetting getPackageLPr(String pkgName) {
return mPackages.get(pkgName);
}