Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af8c918e authored by Ian Pedowitz's avatar Ian Pedowitz Committed by Android Git Automerger
Browse files

am ab1e5900: Merge "Revert "Grant only requested permissions not the whole group."" into mnc-dev

* commit 'ab1e5900':
  Revert "Grant only requested permissions not the whole group."
parents 4a399b32 ab1e5900
Loading
Loading
Loading
Loading
+3 −22
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.os.Build;
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 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        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 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        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 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        // 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 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        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 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        // 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()) {
+3 −3
Original line number Diff line number Diff line
@@ -313,15 +313,15 @@ public class PermissionApps {
        }

        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() {
+1 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
            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())) {
+5 −5
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader
            }
            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 @@ public final class AppPermissionsFragment extends SettingsWithHeader
            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 @@ public final class AppPermissionsFragment extends SettingsWithHeader
                            @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 @@ public final class AppPermissionsFragment extends SettingsWithHeader
                        .show();
                return false;
            } else {
                group.revokeRuntimePermissions(false, null);
                group.revokeRuntimePermissions(false);
            }
        }

@@ -351,7 +351,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader
                SwitchPreference switchPref = (SwitchPreference) preference;
                AppPermissionGroup group = mAppPermissions.getPermissionGroup(switchPref.getKey());
                if (group != null) {
                    switchPref.setChecked(group.areRuntimePermissionsGranted(null));
                    switchPref.setChecked(group.areRuntimePermissionsGranted());
                }
            }
        }
+7 −16
Original line number Diff line number Diff line
@@ -118,30 +118,21 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
            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 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
        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);
Loading