diff options
| author | 2019-01-29 02:49:24 +0000 | |
|---|---|---|
| committer | 2019-01-29 02:49:24 +0000 | |
| commit | 49db8e034b6e8ca47845145855d3197f5286e682 (patch) | |
| tree | bcdd9da5574697c50443cd73c28fb5017a71c69a | |
| parent | 71235246fc8ba5f7d8fd62f7ba6ec8d7f4c24dd1 (diff) | |
| parent | 9db685ad0f0a34e8010e1dfb3000a69d5b8a25e3 (diff) | |
Merge "Add way to check if user has locked the bubble allowed field"
5 files changed, 31 insertions, 9 deletions
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 9ea39f7606a8..8953940952a8 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 b81e2007c939..1369f7b226e2 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -2340,18 +2340,24 @@ 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); return mPreferencesHelper.getImportance(pkg, Binder.getCallingUid()); 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 @@ -3595,6 +3595,22 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @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(); info.privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT; 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)); } |