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.