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

Commit 6a500c73 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Only set perm that is changed to policy-fixed

Otherwise we set permissions to policy fixed that have an unknown grant
state.

Bug: 133871568
Test: atest --test-mapping packages/apps/PermissionController/src/com/android/packageinstaller/permission/ui:all
Change-Id: I15c03ed8fae0c11e5b5d29668cd34e0c6bef8dda
parent f8bc5a09
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -1020,12 +1020,19 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
        return wasAllRevoked;
    }

    public void setPolicyFixed() {
        final int permissionCount = mPermissions.size();
        for (int i = 0; i < permissionCount; i++) {
            Permission permission = mPermissions.valueAt(i);
    /**
     * Mark permissions in this group as policy fixed.
     *
     * @param filterPermissions The permissions to mark
     */
    public void setPolicyFixed(@NonNull String[] filterPermissions) {
        for (String permissionName : filterPermissions) {
            Permission permission = mPermissions.get(permissionName);

            if (permission != null) {
                permission.setPolicyFixed(true);
            }
        }

        if (!mDelayChanges) {
            persistChanges(false);
+5 −3
Original line number Diff line number Diff line
@@ -181,9 +181,10 @@ public class GrantPermissionsActivity extends Activity
        boolean skipGroup = false;
        switch (getPermissionPolicy()) {
            case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
                group.grantRuntimePermissions(false, new String[]{permName});
                final String[] filterPermissions = new String[]{permName};
                group.grantRuntimePermissions(false, filterPermissions);
                group.setPolicyFixed(filterPermissions);
                state.mState = GroupState.STATE_ALLOWED;
                group.setPolicyFixed();
                skipGroup = true;

                reportRequestResult(permName,
@@ -191,8 +192,9 @@ public class GrantPermissionsActivity extends Activity
            } break;

            case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: {
                final String[] filterPermissions = new String[]{permName};
                group.setPolicyFixed(filterPermissions);
                state.mState = GroupState.STATE_DENIED;
                group.setPolicyFixed();
                skipGroup = true;

                reportRequestResult(permName,
+18 −0
Original line number Diff line number Diff line
@@ -13,6 +13,24 @@
            "options": [
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrantOfDisallowedPermissionWhileOtherPermIsGranted"
                },
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrant"
                },
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionPolicy"
                },
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionMixedPolicies"
                },
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionAppUpdate"
                },
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testPermissionGrantPreMApp"
                },
                {
                    "include-filter": "com.android.cts.devicepolicy.MixedManagedProfileOwnerTestApi25#testPermissionGrantPreMApp"
                }
            ]
        }