Merge "Allow NLS metadata fields to use name strings" into sc-dev
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 6c77585..71f90fd2 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -83,11 +83,11 @@
* </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>
*
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 53e3a0e..67fd09b3 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -10273,13 +10273,24 @@
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;
}
- try {
- types |= Integer.parseInt(typeStrings[i]);
- } catch (NumberFormatException e) {
- // skip
+ 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(typeString);
+ } catch (NumberFormatException e) {
+ // skip
+ }
}
}
}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java
index 9ac755f..ab54526 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java
@@ -207,6 +207,22 @@
}
@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();
si.packageName = "new";
@@ -237,6 +253,22 @@
}
@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();
si.packageName = "new";