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

Commit 9db685ad authored by Mady Mellor's avatar Mady Mellor
Browse files

Add way to check if user has locked the bubble allowed field

Also removes an extra s from a method whoooooops

Bug: 111236845
Test: atest NotificationManagerServiceTest
Change-Id: I1f77afd10b322088aa9cb39b65d70cbd84fb6dc4
parent cba2c7c2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ interface INotificationManager
    void setBubblesAllowed(String pkg, int uid, boolean allowed);
    boolean areBubblesAllowed(String pkg);
    boolean areBubblesAllowedForPackage(String pkg, int uid);
    boolean hasUserApprovedBubblesForPackage(String pkg, int uid);

    void createNotificationChannelGroups(String pkg, in ParceledListSlice channelGroupList);
    void createNotificationChannels(String pkg, in ParceledListSlice channelsList);
+9 −3
Original line number Diff line number Diff line
@@ -2339,17 +2339,23 @@ public class NotificationManagerService extends SystemService {
        public boolean areBubblesAllowedForPackage(String pkg, int uid) {
            enforceSystemOrSystemUIOrSamePackage(pkg,
                    "Caller not system or systemui or same package");
            return mPreferencesHelper.areBubblessAllowed(pkg, uid);
            return mPreferencesHelper.areBubblesAllowed(pkg, uid);
        }

        @Override
        public void setBubblesAllowed(String pkg, int uid, boolean allowed) {
            checkCallerIsSystem();

            enforceSystemOrSystemUI("Caller not system or systemui");
            mPreferencesHelper.setBubblesAllowed(pkg, uid, allowed);
            handleSavePolicyFile();
        }

        @Override
        public boolean hasUserApprovedBubblesForPackage(String pkg, int uid) {
            enforceSystemOrSystemUI("Caller not system or systemui");
            int lockedFields = mPreferencesHelper.getAppLockedFields(pkg, uid);
            return (lockedFields & PreferencesHelper.LockableAppFields.USER_LOCKED_BUBBLE) != 0;
        }

        @Override
        public int getPackageImportance(String pkg) {
            checkCallerIsSystemOrSameApp(pkg);
+1 −2
Original line number Diff line number Diff line
@@ -473,7 +473,7 @@ public class PreferencesHelper implements RankingConfig {
     * @param uid the uid to check if bubbles are allowed for.
     * @return whether bubbles are allowed.
     */
    public boolean areBubblessAllowed(String pkg, int uid) {
    public boolean areBubblesAllowed(String pkg, int uid) {
        return getOrCreatePackagePreferences(pkg, uid).allowBubble;
    }

@@ -489,7 +489,6 @@ public class PreferencesHelper implements RankingConfig {
        return getOrCreatePackagePreferences(packageName, uid).importance;
    }


    /**
     * Returns whether the importance of the corresponding notification is user-locked and shouldn't
     * be adjusted by an assistant (via means of a blocking helper, for example). For the channel
+16 −0
Original line number Diff line number Diff line
@@ -3594,6 +3594,22 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
        assertFalse(mBinderService.areBubblesAllowedForPackage(PKG, mUid));
    }

    @Test
    public void testUserApprovedBubblesForPackage() throws Exception {
        assertFalse(mBinderService.hasUserApprovedBubblesForPackage(PKG, mUid));
        mBinderService.setBubblesAllowed(PKG, mUid, true);
        assertTrue(mBinderService.hasUserApprovedBubblesForPackage(PKG, mUid));
        assertTrue(mBinderService.areBubblesAllowedForPackage(PKG, mUid));
    }

    @Test
    public void testUserRejectsBubblesForPackage() throws Exception {
        assertFalse(mBinderService.hasUserApprovedBubblesForPackage(PKG, mUid));
        mBinderService.setBubblesAllowed(PKG, mUid, false);
        assertTrue(mBinderService.hasUserApprovedBubblesForPackage(PKG, mUid));
        assertFalse(mBinderService.areBubblesAllowedForPackage(PKG, mUid));
    }

    @Test
    public void testIsCallerInstantApp_primaryUser() throws Exception {
        ApplicationInfo info = new ApplicationInfo();
+4 −4
Original line number Diff line number Diff line
@@ -2162,20 +2162,20 @@ public class PreferencesHelperTest extends UiServiceTestCase {

    @Test
    public void testAllowBubbles_defaults() throws Exception {
        assertTrue(mHelper.areBubblessAllowed(PKG_O, UID_O));
        assertTrue(mHelper.areBubblesAllowed(PKG_O, UID_O));

        ByteArrayOutputStream baos = writeXmlAndPurge(PKG_O, UID_O, false);
        mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
        loadStreamXml(baos, false);

        assertTrue(mHelper.areBubblessAllowed(PKG_O, UID_O));
        assertTrue(mHelper.areBubblesAllowed(PKG_O, UID_O));
        assertEquals(0, mHelper.getAppLockedFields(PKG_O, UID_O));
    }

    @Test
    public void testAllowBubbles_xml() throws Exception {
        mHelper.setBubblesAllowed(PKG_O, UID_O, false);
        assertFalse(mHelper.areBubblessAllowed(PKG_O, UID_O));
        assertFalse(mHelper.areBubblesAllowed(PKG_O, UID_O));
        assertEquals(PreferencesHelper.LockableAppFields.USER_LOCKED_BUBBLE,
                mHelper.getAppLockedFields(PKG_O, UID_O));

@@ -2183,7 +2183,7 @@ public class PreferencesHelperTest extends UiServiceTestCase {
        mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
        loadStreamXml(baos, false);

        assertFalse(mHelper.areBubblessAllowed(PKG_O, UID_O));
        assertFalse(mHelper.areBubblesAllowed(PKG_O, UID_O));
        assertEquals(PreferencesHelper.LockableAppFields.USER_LOCKED_BUBBLE,
                mHelper.getAppLockedFields(PKG_O, UID_O));
    }