Merge "Handle NLS metadata when provided as strings" into sc-dev
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java b/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java
index 68c342b..635d2dd 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java
@@ -16,6 +16,11 @@
package com.android.settings.applications.specialaccess.notificationaccess;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ALERTING;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_CONVERSATIONS;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ONGOING;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_SILENT;
+
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ServiceInfo;
@@ -129,13 +134,24 @@
int types = 0;
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
+ }
}
}
if (hasFlag(types, getType())) {
diff --git a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java
index 1aa8292..3f6103a 100644
--- a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java
@@ -152,7 +152,7 @@
public void updateState_enabled_metaData_disableFilter_notThisField() {
mSi.metaData = new Bundle();
mSi.metaData.putCharSequence(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES,
- "1,2");
+ "1,alerting");
when(mNm.isNotificationListenerAccessGranted(mCn)).thenReturn(true);
when(mNm.getListenerFilter(mCn, 0)).thenReturn(new NotificationListenerFilter());
CheckBoxPreference pref = new CheckBoxPreference(mContext);
@@ -165,7 +165,7 @@
public void updateState_enabled_metaData_disableFilter_thisField_stateIsChecked() {
mSi.metaData = new Bundle();
mSi.metaData.putCharSequence(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES,
- "1,2,32");
+ "conversations,2,32");
when(mNm.isNotificationListenerAccessGranted(mCn)).thenReturn(true);
when(mNm.getListenerFilter(mCn, 0)).thenReturn(
new NotificationListenerFilter(32, new ArraySet<>()));