From 831041036587efbceb395bface176752a6b560bc Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Thu, 12 Feb 2015 23:25:12 -0500 Subject: [PATCH] NLS: Add a public signal value for an undefined filter value. We have three possible defined values for getInterruptionFilter(). i.e. All/Priority/None. However, this value is only returned to listeners once connected, otherwise we return 0, an undefined value. This change gives a name to this undefined value to make it clear that callers should not infer any meaning from it. INTERRUPTION_FILTER_UNKNOWN = 0; Bug: 19288429 Change-Id: I8ae94d1723289ca5714800906f9bf4e7e8111813 --- api/current.txt | 1 + api/system-current.txt | 1 + .../notification/NotificationListenerService.java | 15 ++++++++++++--- .../notification/NotificationManagerService.java | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/api/current.txt b/api/current.txt index 3f15b2fc36507..0e87d3d2741c6 100644 --- a/api/current.txt +++ b/api/current.txt @@ -27533,6 +27533,7 @@ package android.service.notification { field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1 field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3 field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2 + field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0 field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService"; } diff --git a/api/system-current.txt b/api/system-current.txt index f89c06967e7b7..ce240eef782fe 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -29168,6 +29168,7 @@ package android.service.notification { field public static final int INTERRUPTION_FILTER_ALL = 1; // 0x1 field public static final int INTERRUPTION_FILTER_NONE = 3; // 0x3 field public static final int INTERRUPTION_FILTER_PRIORITY = 2; // 0x2 + field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0 field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService"; field public static final int TRIM_FULL = 0; // 0x0 field public static final int TRIM_LIGHT = 1; // 0x1 diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java index 3d39b188fcb6a..0860153988ec9 100644 --- a/core/java/android/service/notification/NotificationListenerService.java +++ b/core/java/android/service/notification/NotificationListenerService.java @@ -77,6 +77,14 @@ public abstract class NotificationListenerService extends Service { */ public static final int INTERRUPTION_FILTER_NONE = 3; + /** {@link #getCurrentInterruptionFilter() Interruption filter} constant - returned when + * the value is unavailable for any reason. For example, before the notification listener + * is connected. + * + * {@see #onListenerConnected()} + */ + public static final int INTERRUPTION_FILTER_UNKNOWN = 0; + /** {@link #getCurrentListenerHints() Listener hints} constant - the primary device UI * should disable notification sound, vibrating and other visual or aural effects. * This does not change the interruption filter, only the effects. **/ @@ -473,15 +481,16 @@ public abstract class NotificationListenerService extends Service { *

* Listen for updates using {@link #onInterruptionFilterChanged(int)}. * - * @return One of the INTERRUPTION_FILTER_ constants, or 0 on errors. + * @return One of the INTERRUPTION_FILTER_ constants, or INTERRUPTION_FILTER_UNKNOWN when + * unavailable. */ public final int getCurrentInterruptionFilter() { - if (!isBound()) return 0; + if (!isBound()) return INTERRUPTION_FILTER_UNKNOWN; try { return getNotificationInterface().getInterruptionFilterFromListener(mWrapper); } catch (android.os.RemoteException ex) { Log.v(TAG, "Unable to contact notification manager", ex); - return 0; + return INTERRUPTION_FILTER_UNKNOWN; } } diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 02cacd9affb66..c5672640f6216 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -207,7 +207,7 @@ public class NotificationManagerService extends SystemService { private final ArraySet mListenersDisablingEffects = new ArraySet<>(); private ComponentName mEffectsSuppressor; private int mListenerHints; // right now, all hints are global - private int mInterruptionFilter; // current ZEN mode as communicated to listeners + private int mInterruptionFilter = NotificationListenerService.INTERRUPTION_FILTER_UNKNOWN; // for enabling and disabling notification pulse behavior private boolean mScreenOn = true;