Loading core/java/android/service/notification/NotificationListenerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -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> * </service></pre> * Loading services/core/java/com/android/server/notification/NotificationManagerService.java +16 −5 Original line number Diff line number Diff line Loading @@ -10259,16 +10259,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; } Loading services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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(); Loading Loading
core/java/android/service/notification/NotificationListenerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -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> * </service></pre> * Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +16 −5 Original line number Diff line number Diff line Loading @@ -10259,16 +10259,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; } Loading
services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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(); Loading