Allowing querying for apps with blocked topics.
Bug: 26882239
Change-Id: If888cb18891a412067bcb28e575f502c6091f77a
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 3288cd9..40e58af 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -55,6 +55,7 @@
void setImportance(String pkg, int uid, in Notification.Topic topic, int importance);
int getImportance(String pkg, int uid, in Notification.Topic topic);
boolean doesAppUseTopics(String pkg, int uid);
+ boolean hasBannedTopics(String pkg, int uid);
// TODO: Remove this when callers have been migrated to the equivalent
// INotificationListener method.
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index ebdb1b2..078094c 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -1265,6 +1265,12 @@
}
@Override
+ public boolean hasBannedTopics(String pkg, int uid) {
+ checkCallerIsSystem();
+ return mRankingHelper.hasBannedTopics(pkg, uid);
+ }
+
+ @Override
public ParceledListSlice<Notification.Topic> getTopics(String pkg, int uid) {
checkCallerIsSystem();
return new ParceledListSlice<Notification.Topic>(mRankingHelper.getTopics(pkg, uid));
diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java
index 7f85e1f..1a7e355 100644
--- a/services/core/java/com/android/server/notification/RankingConfig.java
+++ b/services/core/java/com/android/server/notification/RankingConfig.java
@@ -37,4 +37,6 @@
int getImportance(String packageName, int uid, Notification.Topic topic);
boolean doesAppUseTopics(String packageName, int uid);
+
+ boolean hasBannedTopics(String packageName, int uid);
}
diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java
index 827482f..aa36e29 100644
--- a/services/core/java/com/android/server/notification/RankingHelper.java
+++ b/services/core/java/com/android/server/notification/RankingHelper.java
@@ -389,6 +389,17 @@
return topics;
}
+ @Override
+ public boolean hasBannedTopics(String packageName, int uid) {
+ final Record r = getOrCreateRecord(packageName, uid);
+ for (Topic t : r.topics.values()) {
+ if (t.importance == Ranking.IMPORTANCE_NONE) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Gets priority. If a topic is given, returns the priority of that topic. Otherwise, the
* priority of the app.