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);
     }