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

Commit 71d6a81a authored by Nate Myren's avatar Nate Myren
Browse files

Clear user fixed flag when changing notification permission

Fixes: 236869490
Test: atest PermissionHelperTest
Change-Id: I6620855b48b9b2cb3622eb98ad0b3e1da22103d8
parent 45b54016
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.notification;

import static android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
@@ -176,9 +177,8 @@ public final class PermissionHelper {
                mPermManager.revokeRuntimePermission(packageName, NOTIFICATION_PERMISSION,
                        userId, TAG);
            }
            int flagMask = userSet || !grant
                    ? FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_GRANTED_BY_DEFAULT :
                    FLAG_PERMISSION_USER_SET;
            int flagMask = FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_USER_FIXED;
            flagMask = userSet || !grant ? flagMask | FLAG_PERMISSION_GRANTED_BY_DEFAULT : flagMask;
            if (userSet) {
                mPermManager.updatePermissionFlags(packageName, NOTIFICATION_PERMISSION,
                        flagMask, FLAG_PERMISSION_USER_SET, true, userId);
+8 −5
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.notification;
import static android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET;
import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
@@ -74,6 +75,8 @@ public class PermissionHelperTest extends UiServiceTestCase {

    private PermissionHelper mPermissionHelper;

    private static final int USER_FLAG_MASK = FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_USER_FIXED;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
@@ -183,7 +186,7 @@ public class PermissionHelperTest extends UiServiceTestCase {
        verify(mPermManager).grantRuntimePermission(
                "pkg", Manifest.permission.POST_NOTIFICATIONS, 10);
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_GRANTED_BY_DEFAULT,
                USER_FLAG_MASK | FLAG_PERMISSION_GRANTED_BY_DEFAULT,
                FLAG_PERMISSION_USER_SET, true, 10);
    }

@@ -202,7 +205,7 @@ public class PermissionHelperTest extends UiServiceTestCase {
        verify(mPermManager).grantRuntimePermission(
                "pkg", Manifest.permission.POST_NOTIFICATIONS, 10);
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_GRANTED_BY_DEFAULT,
                USER_FLAG_MASK | FLAG_PERMISSION_GRANTED_BY_DEFAULT,
                FLAG_PERMISSION_USER_SET, true, 10);
    }

@@ -216,7 +219,7 @@ public class PermissionHelperTest extends UiServiceTestCase {
        verify(mPermManager).revokeRuntimePermission(
                eq("pkg"), eq(Manifest.permission.POST_NOTIFICATIONS), eq(10), anyString());
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_GRANTED_BY_DEFAULT,
                USER_FLAG_MASK | FLAG_PERMISSION_GRANTED_BY_DEFAULT,
                FLAG_PERMISSION_USER_SET, true, 10);
    }

@@ -230,7 +233,7 @@ public class PermissionHelperTest extends UiServiceTestCase {
        verify(mPermManager).grantRuntimePermission(
                "pkg", Manifest.permission.POST_NOTIFICATIONS, 10);
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_USER_SET, 0, true, 10);
                USER_FLAG_MASK, 0, true, 10);
    }

    @Test
@@ -243,7 +246,7 @@ public class PermissionHelperTest extends UiServiceTestCase {
        verify(mPermManager).revokeRuntimePermission(
                eq("pkg"), eq(Manifest.permission.POST_NOTIFICATIONS), eq(10), anyString());
        verify(mPermManager).updatePermissionFlags("pkg", Manifest.permission.POST_NOTIFICATIONS,
                FLAG_PERMISSION_USER_SET | FLAG_PERMISSION_GRANTED_BY_DEFAULT, 0,
                USER_FLAG_MASK | FLAG_PERMISSION_GRANTED_BY_DEFAULT, 0,
                true, 10);
    }