Revert "Grant only requested permissions not the whole group."

This reverts commit e899d8d48558a6d4a8f0498c38a623115aad2205.

Bug: 23314383
Bug: 23397858
Change-Id: Ia928a4b24c60eae6b4fb16ebdbfa6b6787f6c3ae
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
index b3ac972..633336c 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
@@ -28,7 +28,6 @@
 import android.os.UserHandle;
 import android.util.ArrayMap;
 
-import com.android.internal.util.ArrayUtils;
 import com.android.packageinstaller.R;
 import com.android.packageinstaller.permission.utils.LocationUtils;
 
@@ -265,19 +264,13 @@
         return mPermissions.get(permission) != null;
     }
 
-    public boolean areRuntimePermissionsGranted(String[] filterPermissions) {
+    public boolean areRuntimePermissionsGranted() {
         if (LocationUtils.isLocked(mName, mPackageInfo.packageName)) {
             return LocationUtils.isLocationEnabled(mContext);
         }
         final int permissionCount = mPermissions.size();
         for (int i = 0; i < permissionCount; i++) {
             Permission permission = mPermissions.valueAt(i);
-
-            if (filterPermissions != null && !ArrayUtils.contains(
-                    filterPermissions, permission.getName())) {
-                continue;
-            }
-
             if (mAppSupportsRuntimePermissions) {
                 if (permission.isGranted()) {
                     return true;
@@ -290,7 +283,7 @@
         return false;
     }
 
-    public boolean grantRuntimePermissions(boolean fixedByTheUser, String[] filterPermissions) {
+    public boolean grantRuntimePermissions(boolean fixedByTheUser) {
         final boolean isSharedUser = mPackageInfo.sharedUserId != null;
         final int uid = mPackageInfo.applicationInfo.uid;
 
@@ -298,12 +291,6 @@
         // permissions, otherwise we toggle the app op corresponding
         // to the permission if the permission is granted to the app.
         for (Permission permission : mPermissions.values()) {
-
-            if (filterPermissions != null && !ArrayUtils.contains(
-                    filterPermissions, permission.getName())) {
-                continue;
-            }
-
             if (mAppSupportsRuntimePermissions) {
                 // Do not touch permissions fixed by the system.
                 if (permission.isSystemFixed()) {
@@ -384,7 +371,7 @@
         return true;
     }
 
-    public boolean revokeRuntimePermissions(boolean fixedByTheUser, String[] filterPermissions) {
+    public boolean revokeRuntimePermissions(boolean fixedByTheUser) {
         final boolean isSharedUser = mPackageInfo.sharedUserId != null;
         final int uid = mPackageInfo.applicationInfo.uid;
 
@@ -392,12 +379,6 @@
         // permissions, otherwise we toggle the app op corresponding
         // to the permission if the permission is granted to the app.
         for (Permission permission : mPermissions.values()) {
-
-            if (filterPermissions != null && !ArrayUtils.contains(
-                    filterPermissions, permission.getName())) {
-                continue;
-            }
-
             if (mAppSupportsRuntimePermissions) {
                 // Do not touch permissions fixed by the system.
                 if (permission.isSystemFixed()) {
diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java
index 09d469b..73fc708 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionApps.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java
@@ -313,15 +313,15 @@
         }
 
         public boolean areRuntimePermissionsGranted() {
-            return mAppPermissionGroup.areRuntimePermissionsGranted(null);
+            return mAppPermissionGroup.areRuntimePermissionsGranted();
         }
 
         public void grantRuntimePermissions() {
-            mAppPermissionGroup.grantRuntimePermissions(false, null);
+            mAppPermissionGroup.grantRuntimePermissions(false);
         }
 
         public void revokeRuntimePermissions() {
-            mAppPermissionGroup.revokeRuntimePermissions(false, null);
+            mAppPermissionGroup.revokeRuntimePermissions(false);
         }
 
         public boolean isPolicyFixed() {
diff --git a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
index 84a977d..52fb874 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
@@ -77,7 +77,7 @@
             for (AppPermissionGroup group : appPermissions.getPermissionGroups()) {
                 if (Utils.shouldShowPermission(group)) {
                     totalCount++;
-                    if (group.areRuntimePermissionsGranted(null)) {
+                    if (group.areRuntimePermissionsGranted()) {
                         grantedCount++;
 
                         if (Utils.OS_PKG.equals(group.getDeclaringPackage())) {
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
index 3277289..e4e904c 100644
--- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
@@ -224,7 +224,7 @@
             }
             preference.setPersistent(false);
             preference.setEnabled(!group.isPolicyFixed());
-            preference.setChecked(group.areRuntimePermissionsGranted(null));
+            preference.setChecked(group.areRuntimePermissionsGranted());
 
             if (isPlatform) {
                 screen.addPreference(preference);
@@ -281,7 +281,7 @@
             return false;
         }
         if (newValue == Boolean.TRUE) {
-            group.grantRuntimePermissions(false, null);
+            group.grantRuntimePermissions(false);
         } else {
             final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
             if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) {
@@ -294,7 +294,7 @@
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
                                 ((SwitchPreference) preference).setChecked(false);
-                                group.revokeRuntimePermissions(false, null);
+                                group.revokeRuntimePermissions(false);
                                 if (!grantedByDefault) {
                                     mHasConfirmedRevoke = true;
                                 }
@@ -303,7 +303,7 @@
                         .show();
                 return false;
             } else {
-                group.revokeRuntimePermissions(false, null);
+                group.revokeRuntimePermissions(false);
             }
         }
 
@@ -351,7 +351,7 @@
                 SwitchPreference switchPref = (SwitchPreference) preference;
                 AppPermissionGroup group = mAppPermissions.getPermissionGroup(switchPref.getKey());
                 if (group != null) {
-                    switchPref.setChecked(group.areRuntimePermissionsGranted(null));
+                    switchPref.setChecked(group.areRuntimePermissionsGranted());
                 }
             }
         }
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index a61432e..c451dd5 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -118,30 +118,21 @@
             if (!group.isUserFixed() && !group.isPolicyFixed()) {
                 switch (permissionPolicy) {
                     case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
-                        if (!group.areRuntimePermissionsGranted(mRequestedPermissions)) {
-                            group.grantRuntimePermissions(false, mRequestedPermissions);
+                        if (!group.areRuntimePermissionsGranted()) {
+                            group.grantRuntimePermissions(false);
                             group.setPolicyFixed();
                         }
                     } break;
 
                     case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: {
-                        if (group.areRuntimePermissionsGranted(mRequestedPermissions)) {
-                            group.revokeRuntimePermissions(false, mRequestedPermissions);
+                        if (!group.areRuntimePermissionsGranted()) {
+                            group.revokeRuntimePermissions(false);
                             group.setPolicyFixed();
                         }
                     } break;
 
                     default: {
-                        if (group.areRuntimePermissionsGranted(null)
-                                && !group.areRuntimePermissionsGranted(mRequestedPermissions)) {
-                            // If the group is granted but requested permissions
-                            // in it not we auto grant the these permissions.
-                            group.grantRuntimePermissions(group.isUserFixed(),
-                                    mRequestedPermissions);
-                        } else {
-                            mRequestGrantPermissionGroups.put(group.getName(),
-                                    new GroupState(group));
-                        }
+                        mRequestGrantPermissionGroups.put(group.getName(), new GroupState(group));
                     } break;
                 }
             } else {
@@ -235,10 +226,10 @@
         GroupState groupState = mRequestGrantPermissionGroups.get(name);
         if (groupState.mGroup != null) {
             if (granted) {
-                groupState.mGroup.grantRuntimePermissions(doNotAskAgain, mRequestedPermissions);
+                groupState.mGroup.grantRuntimePermissions(doNotAskAgain);
                 groupState.mState = GroupState.STATE_ALLOWED;
             } else {
-                groupState.mGroup.revokeRuntimePermissions(doNotAskAgain, mRequestedPermissions);
+                groupState.mGroup.revokeRuntimePermissions(doNotAskAgain);
                 groupState.mState = GroupState.STATE_DENIED;
             }
             updateGrantResults(groupState.mGroup);
diff --git a/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java b/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java
index 851d41d..8280ba3 100644
--- a/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java
+++ b/src/com/android/packageinstaller/permission/utils/SafetyNetLogger.java
@@ -63,7 +63,7 @@
                 builder.append(';');
             }
             builder.append(group.getName()).append('|');
-            builder.append(group.areRuntimePermissionsGranted(null)).append('|');
+            builder.append(group.areRuntimePermissionsGranted()).append('|');
             builder.append(group.getFlags());
         }