summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yuri Lin <yurilin@google.com> 2025-03-24 12:13:18 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-24 12:13:18 -0700
commit19449f00867a45db212a5b9c4d7ed3db39fbce75 (patch)
tree915391344718b648175c5522fa5df05365a256b8
parent57752c9e4e8e26e10f6d87f70bed4ccc878820b6 (diff)
parent5fa1fe4839ad2a000f988f655758ba7cf4bcf8a6 (diff)
Merge "Set default classification types when enabling KEY_TYPE adjustments" into main
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java13
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java28
2 files changed, 41 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index de20b82f505c..cc5de3cc01ed 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -12689,6 +12689,16 @@ public class NotificationManagerService extends SystemService {
return Log.isLoggable("notification_assistant", Log.VERBOSE);
}
+ private void addDefaultClassificationTypes() {
+ // Add the default classification types if the list is empty
+ synchronized (mLock) {
+ if (mAllowedClassificationTypes.isEmpty()) {
+ mAllowedClassificationTypes.addAll(
+ List.of(DEFAULT_ALLOWED_ADJUSTMENT_KEY_TYPES));
+ }
+ }
+ }
+
@FlaggedApi(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
@GuardedBy("mNotificationLock")
public void allowAdjustmentType(@Adjustment.Keys String key) {
@@ -12699,6 +12709,9 @@ public class NotificationManagerService extends SystemService {
for (final ManagedServiceInfo info : NotificationAssistants.this.getServices()) {
mHandler.post(() -> notifyCapabilitiesChanged(info));
}
+ if (KEY_TYPE.equals(key)) {
+ addDefaultClassificationTypes();
+ }
}
@FlaggedApi(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
index aef3d30dba93..bfa13d10c348 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java
@@ -681,6 +681,34 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
}
@Test
+ @EnableFlags(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
+ public void testAllowAdjustmentType_classifListEmpty_resetDefaultClassificationTypes() {
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, false);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_SOCIAL_MEDIA, false);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, false);
+ assertThat(mAssistants.getAllowedClassificationTypes()).isEmpty();
+ mAssistants.disallowAdjustmentType(Adjustment.KEY_TYPE);
+ mAssistants.allowAdjustmentType(Adjustment.KEY_TYPE);
+ assertThat(mAssistants.getAllowedClassificationTypes()).asList()
+ .contains(TYPE_PROMOTION);
+ }
+
+ @Test
+ @EnableFlags(android.service.notification.Flags.FLAG_NOTIFICATION_CLASSIFICATION)
+ public void testAllowAdjustmentType_classifListNotEmpty_doNotResetDefaultClassificationTypes() {
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_PROMOTION, false);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_SOCIAL_MEDIA, false);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_CONTENT_RECOMMENDATION, false);
+ mAssistants.setAssistantAdjustmentKeyTypeState(TYPE_NEWS, true);
+ assertThat(mAssistants.getAllowedClassificationTypes()).isNotEmpty();
+ mAssistants.disallowAdjustmentType(Adjustment.KEY_TYPE);
+ mAssistants.allowAdjustmentType(Adjustment.KEY_TYPE);
+ assertThat(mAssistants.getAllowedClassificationTypes()).asList()
+ .containsExactly(TYPE_NEWS);
+ }
+
+ @Test
@EnableFlags(Flags.FLAG_NOTIFICATION_CLASSIFICATION_UI)
public void testDisallowAdjustmentType_readWriteXml_entries() throws Exception {
int userId = ActivityManager.getCurrentUser();