Loading services/core/java/com/android/server/notification/NotificationManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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) services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -680,6 +680,34 @@ public class NotificationAssistantsTest extends UiServiceTestCase { .contains(Adjustment.KEY_RANKING_SCORE); } @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 { Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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)
services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -680,6 +680,34 @@ public class NotificationAssistantsTest extends UiServiceTestCase { .contains(Adjustment.KEY_RANKING_SCORE); } @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 { Loading