summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-01-29 02:49:24 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-01-29 02:49:24 +0000
commit49db8e034b6e8ca47845145855d3197f5286e682 (patch)
treebcdd9da5574697c50443cd73c28fb5017a71c69a
parent71235246fc8ba5f7d8fd62f7ba6ec8d7f4c24dd1 (diff)
parent9db685ad0f0a34e8010e1dfb3000a69d5b8a25e3 (diff)
Merge "Add way to check if user has locked the bubble allowed field"
-rw-r--r--core/java/android/app/INotificationManager.aidl1
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java12
-rw-r--r--services/core/java/com/android/server/notification/PreferencesHelper.java3
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java16
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java8
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));
}