From 9db685ad0f0a34e8010e1dfb3000a69d5b8a25e3 Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Wed, 23 Jan 2019 13:23:37 -0800 Subject: 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 --- core/java/android/app/INotificationManager.aidl | 1 + .../server/notification/NotificationManagerService.java | 12 +++++++++--- .../android/server/notification/PreferencesHelper.java | 3 +-- .../notification/NotificationManagerServiceTest.java | 16 ++++++++++++++++ .../server/notification/PreferencesHelperTest.java | 8 ++++---- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 199c1338c50c..cf3a18ddee7b 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -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); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index de3f50ad8c2c..b629a82e29a7 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -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); diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index 7a21aa208dfd..3f0043cecc49 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -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 diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index 9c6ab0ab9aa9..4a4fece99817 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -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(); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java index 24a1f8c19f12..bde9dde52c2f 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -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)); } -- cgit v1.2.3-59-g8ed1b