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

Commit c96669ea authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Allow NLS metadata fields to use name strings" into sc-dev

parents 52fbf369 910dff61
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -83,11 +83,11 @@ import java.util.Objects;
 *     </intent-filter>
 *     <meta-data
 *               android:name="android.service.notification.default_filter_types"
 *               android:value="1,2">
 *               android:value="conversations,alerting">
 *           </meta-data>
 *     <meta-data
 *               android:name="android.service.notification.disabled_filter_types"
 *               android:value="2">
 *               android:value="ongoing,silent">
 *           </meta-data>
 * &lt;/service></pre>
 *
+16 −5
Original line number Diff line number Diff line
@@ -10273,16 +10273,27 @@ public class NotificationManagerService extends SystemService {
            if (typeList != null) {
                String[] typeStrings = typeList.split(XML_SEPARATOR);
                for (int i = 0; i < typeStrings.length; i++) {
                    if (TextUtils.isEmpty(typeStrings[i])) {
                    final String typeString = typeStrings[i];
                    if (TextUtils.isEmpty(typeString)) {
                        continue;
                    }
                    if (typeString.equalsIgnoreCase("ONGOING")) {
                        types |= FLAG_FILTER_TYPE_ONGOING;
                    } else if (typeString.equalsIgnoreCase("CONVERSATIONS")) {
                        types |= FLAG_FILTER_TYPE_CONVERSATIONS;
                    } else if (typeString.equalsIgnoreCase("SILENT")) {
                        types |= FLAG_FILTER_TYPE_SILENT;
                    } else if (typeString.equalsIgnoreCase("ALERTING")) {
                        types |= FLAG_FILTER_TYPE_ALERTING;
                    } else {
                        try {
                        types |= Integer.parseInt(typeStrings[i]);
                            types |= Integer.parseInt(typeString);
                        } catch (NumberFormatException e) {
                            // skip
                        }
                    }
                }
            }
            return types;
        }

+32 −0
Original line number Diff line number Diff line
@@ -206,6 +206,22 @@ public class NotificationListenersTest extends UiServiceTestCase {
                .isEqualTo(FLAG_FILTER_TYPE_CONVERSATIONS | FLAG_FILTER_TYPE_ALERTING);
    }

    @Test
    public void testEnsureFilters_newServiceWithMetadata_namesNotNumbers() {
        ServiceInfo si = new ServiceInfo();
        si.packageName = "new";
        si.name = "comp";
        si.metaData = new Bundle();
        si.metaData.putString(NotificationListenerService.META_DATA_DEFAULT_FILTER_TYPES,
                "conversations,ALERTING");

        mListeners.ensureFilters(si, 0);

        assertThat(mListeners.getNotificationListenerFilter(
                Pair.create(si.getComponentName(), 0)).getTypes())
                .isEqualTo(FLAG_FILTER_TYPE_CONVERSATIONS | FLAG_FILTER_TYPE_ALERTING);
    }

    @Test
    public void testEnsureFilters_newServiceWithMetadata_onlyOneListed() {
        ServiceInfo si = new ServiceInfo();
@@ -236,6 +252,22 @@ public class NotificationListenersTest extends UiServiceTestCase {
                .isEqualTo(FLAG_FILTER_TYPE_SILENT | FLAG_FILTER_TYPE_ONGOING);
    }

    @Test
    public void testEnsureFilters_newServiceWithMetadata_disabledTypes_mixedText() {
        ServiceInfo si = new ServiceInfo();
        si.packageName = "new";
        si.name = "comp";
        si.metaData = new Bundle();
        si.metaData.putString(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES,
                "1,alerting");

        mListeners.ensureFilters(si, 0);

        assertThat(mListeners.getNotificationListenerFilter(
                Pair.create(si.getComponentName(), 0)).getTypes())
                .isEqualTo(FLAG_FILTER_TYPE_SILENT | FLAG_FILTER_TYPE_ONGOING);
    }

    @Test
    public void testEnsureFilters_newServiceWithMetadata_metaDataDisagrees() {
        ServiceInfo si = new ServiceInfo();