From fec58c263c6e3da3fa449fac1d0c2630c8d66bd6 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Fri, 12 Feb 2016 11:12:54 -0500 Subject: [PATCH] Show topic settings inline if user has configured topics. Change-Id: Icf51faad61b3ae4261991691a1d679b190ea712a --- core/java/android/app/INotificationManager.aidl | 2 +- .../systemui/statusbar/NotificationGuts.java | 12 ++++++------ .../notification/NotificationManagerService.java | 4 ++-- .../android/server/notification/RankingConfig.java | 2 +- .../android/server/notification/RankingHelper.java | 13 ++++++------- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 0d35cf04b4a6e..3c8dfcea72825 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -56,7 +56,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); int getTopicImportance(String pkg, String topicId); - boolean doesAppUseTopics(String pkg, int uid); + boolean doesUserUseTopics(String pkg, int uid); boolean hasBannedTopics(String pkg, int uid); // TODO: Remove this when callers have been migrated to the equivalent diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java index dd6d6f381c022..7346becdb0eba 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java @@ -113,15 +113,15 @@ public class NotificationGuts extends LinearLayout { ? new Notification.Topic(Notification.TOPIC_DEFAULT, mContext.getString( com.android.internal.R.string.default_notification_topic_label)) : sbn.getNotification().getTopic(); - boolean doesAppUseTopics = false; + boolean doesUserUseTopics = false; try { - doesAppUseTopics = - mINotificationManager.doesAppUseTopics(sbn.getPackageName(), sbn.getUid()); + doesUserUseTopics = + mINotificationManager.doesUserUseTopics(sbn.getPackageName(), sbn.getUid()); } catch (RemoteException e) {} - final boolean appUsesTopics = doesAppUseTopics; + final boolean userUsesTopics = doesUserUseTopics; mApplyToTopic = (RadioButton) row.findViewById(R.id.apply_to_topic); - if (appUsesTopics) { + if (userUsesTopics) { mApplyToTopic.setChecked(true); } final View applyToApp = row.findViewById(R.id.apply_to_app); @@ -156,7 +156,7 @@ public class NotificationGuts extends LinearLayout { updateTitleAndSummary(progress); if (fromUser) { MetricsLogger.action(mContext, MetricsEvent.ACTION_MODIFY_IMPORTANCE_SLIDER); - if (appUsesTopics) { + if (userUsesTopics) { mApplyToTopic.setVisibility(View.VISIBLE); mApplyToTopic.setText( mContext.getString(R.string.apply_to_topic, mTopic.getLabel())); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 36ddbcf50f070..0519cf2370532 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -1350,9 +1350,9 @@ public class NotificationManagerService extends SystemService { } @Override - public boolean doesAppUseTopics(String pkg, int uid) { + public boolean doesUserUseTopics(String pkg, int uid) { enforceSystemOrSystemUI("Caller not system or systemui"); - return mRankingHelper.doesAppUseTopics(pkg, uid); + return mRankingHelper.doesUserUseTopics(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 17bb9075b0eba..9773474c2273d 100644 --- a/services/core/java/com/android/server/notification/RankingConfig.java +++ b/services/core/java/com/android/server/notification/RankingConfig.java @@ -36,7 +36,7 @@ public interface RankingConfig { int getImportance(String packageName, int uid, Notification.Topic topic); - boolean doesAppUseTopics(String packageName, int uid); + boolean doesUserUseTopics(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 6554bf91cf187..91eab10e12589 100644 --- a/services/core/java/com/android/server/notification/RankingHelper.java +++ b/services/core/java/com/android/server/notification/RankingHelper.java @@ -521,15 +521,14 @@ public class RankingHelper implements RankingConfig { } @Override - public boolean doesAppUseTopics(String pkgName, int uid) { + public boolean doesUserUseTopics(String pkgName, int uid) { final Record r = getOrCreateRecord(pkgName, uid); - int numTopics = r.topics.size(); - if (numTopics == 0 - || (numTopics == 1 && r.topics.containsKey(Notification.TOPIC_DEFAULT))) { - return false; - } else { - return true; + for (Topic topic : r.topics.values()) { + if (topic.importance != Ranking.IMPORTANCE_UNSPECIFIED + && r.importance != topic.importance) + return true; } + return false; } private Topic getOrCreateTopic(Record r, Notification.Topic topic) {