diff options
4 files changed, 20 insertions, 0 deletions
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 3288cd91856d..40e58af57204 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -55,6 +55,7 @@ interface INotificationManager 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 ebdb1b242e66..078094cfef7a 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 @@ public class NotificationManagerService extends SystemService { } @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 7f85e1f8123d..1a7e3550d8e3 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 @@ public interface RankingConfig { 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 827482ff2a4b..aa36e298bb45 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 @@ public class RankingHelper implements RankingConfig { 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. |