Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19449f00 authored by Yuri Lin's avatar Yuri Lin Committed by Android (Google) Code Review
Browse files

Merge "Set default classification types when enabling KEY_TYPE adjustments" into main

parents 57752c9e 5fa1fe48
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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)
+28 −0
Original line number Diff line number Diff line
@@ -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 {