Loading core/res/res/values/config.xml +2 −0 Original line number Diff line number Diff line Loading @@ -3532,6 +3532,8 @@ mode --> <string-array translatable="false" name="config_priorityOnlyDndExemptPackages"> <item>com.android.dialer</item> <item>com.android.systemui</item> <item>android</item> </string-array> <!-- The default value for transition animation scale found in developer settings. Loading services/core/java/com/android/server/notification/ZenModeHelper.java +7 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.notification; import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_DISABLED; import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_ENABLED; import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_REMOVED; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_ANY; import android.app.AppOpsManager; import android.app.AutomaticZenRule; Loading Loading @@ -1011,21 +1012,23 @@ public class ZenModeHelper { @VisibleForTesting protected void applyRestrictions() { final boolean zenOn = mZenMode != Global.ZEN_MODE_OFF; final boolean zenPriorityOnly = mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; final boolean zenSilence = mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS; final boolean zenAlarmsOnly = mZenMode == Global.ZEN_MODE_ALARMS; final boolean allowCalls = mConsolidatedPolicy.allowCalls(); final boolean allowCalls = mConsolidatedPolicy.allowCalls() && mConsolidatedPolicy.allowCallsFrom() == PRIORITY_SENDERS_ANY; final boolean allowRepeatCallers = mConsolidatedPolicy.allowRepeatCallers(); final boolean allowSystem = mConsolidatedPolicy.allowSystem(); final boolean allowMedia = mConsolidatedPolicy.allowMedia(); final boolean allowAlarms = mConsolidatedPolicy.allowAlarms(); // notification restrictions final boolean muteNotifications = (mSuppressedEffects & SUPPRESSED_EFFECT_NOTIFICATIONS) != 0; final boolean muteNotifications = zenOn || (mSuppressedEffects & SUPPRESSED_EFFECT_NOTIFICATIONS) != 0; // call restrictions final boolean muteCalls = zenAlarmsOnly || (zenPriorityOnly && !allowCalls && !allowRepeatCallers) || (zenPriorityOnly && !(allowCalls || allowRepeatCallers)) || (mSuppressedEffects & SUPPRESSED_EFFECT_CALLS) != 0; // alarm restrictions final boolean muteAlarms = zenPriorityOnly && !allowAlarms; Loading services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +79 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,19 @@ package com.android.server.notification; import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_ANYONE; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CONVERSATIONS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_EVENTS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_REMINDERS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_SYSTEM; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_ANY; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_CONTACTS; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_STARRED; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS; Loading Loading @@ -219,7 +232,7 @@ public class ZenModeHelperTest extends UiServiceTestCase { public void testZenOff_NoMuteApplied() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_OFF; mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(eq(false), anyBoolean(), anyInt()); Loading @@ -229,11 +242,74 @@ public class ZenModeHelperTest extends UiServiceTestCase { AudioAttributes.USAGE_MEDIA); } @Test public void testZenOn_NotificationApplied() { mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; // The most permissive policy mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_MEDIA | PRIORITY_CATEGORY_MESSAGES | PRIORITY_CATEGORY_CONVERSATIONS | PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_EVENTS | PRIORITY_CATEGORY_REMINDERS | PRIORITY_CATEGORY_REPEAT_CALLERS | PRIORITY_CATEGORY_SYSTEM, PRIORITY_SENDERS_ANY, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_ANYONE); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(anyBoolean(), anyBoolean(), anyInt()); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_EVENT); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_DELAYED); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT); } @Test public void testZenOn_StarredCallers_CallTypesBlocked() { mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; // The most permissive policy mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_MEDIA | PRIORITY_CATEGORY_MESSAGES | PRIORITY_CATEGORY_CONVERSATIONS | PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_EVENTS | PRIORITY_CATEGORY_REMINDERS | PRIORITY_CATEGORY_SYSTEM, PRIORITY_SENDERS_STARRED, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_ANYONE); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(anyBoolean(), anyBoolean(), anyInt()); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_RINGTONE); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST); } @Test public void testZenOn_AllCallers_CallTypesAllowed() { mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; // The most permissive policy mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_MEDIA | PRIORITY_CATEGORY_MESSAGES | PRIORITY_CATEGORY_CONVERSATIONS | PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_EVENTS | PRIORITY_CATEGORY_REMINDERS | PRIORITY_CATEGORY_REPEAT_CALLERS | PRIORITY_CATEGORY_SYSTEM, PRIORITY_SENDERS_ANY, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_ANYONE); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(anyBoolean(), anyBoolean(), anyInt()); verify(mZenModeHelperSpy).applyRestrictions(true, false, AudioAttributes.USAGE_NOTIFICATION_RINGTONE); verify(mZenModeHelperSpy).applyRestrictions(true, false, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST); } @Test public void testZenOn_AllowAlarmsMedia_NoAlarmMediaMuteApplied() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); mZenModeHelperSpy.applyRestrictions(); verify(mZenModeHelperSpy, atLeastOnce()).applyRestrictions(true, false, Loading Loading @@ -261,7 +337,7 @@ public class ZenModeHelperTest extends UiServiceTestCase { public void testTotalSilence() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_NO_INTERRUPTIONS; mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); mZenModeHelperSpy.applyRestrictions(); // Total silence will silence alarms, media and system noises (but not vibrations) Loading Loading
core/res/res/values/config.xml +2 −0 Original line number Diff line number Diff line Loading @@ -3532,6 +3532,8 @@ mode --> <string-array translatable="false" name="config_priorityOnlyDndExemptPackages"> <item>com.android.dialer</item> <item>com.android.systemui</item> <item>android</item> </string-array> <!-- The default value for transition animation scale found in developer settings. Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +7 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.notification; import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_DISABLED; import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_ENABLED; import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_REMOVED; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_ANY; import android.app.AppOpsManager; import android.app.AutomaticZenRule; Loading Loading @@ -1011,21 +1012,23 @@ public class ZenModeHelper { @VisibleForTesting protected void applyRestrictions() { final boolean zenOn = mZenMode != Global.ZEN_MODE_OFF; final boolean zenPriorityOnly = mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; final boolean zenSilence = mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS; final boolean zenAlarmsOnly = mZenMode == Global.ZEN_MODE_ALARMS; final boolean allowCalls = mConsolidatedPolicy.allowCalls(); final boolean allowCalls = mConsolidatedPolicy.allowCalls() && mConsolidatedPolicy.allowCallsFrom() == PRIORITY_SENDERS_ANY; final boolean allowRepeatCallers = mConsolidatedPolicy.allowRepeatCallers(); final boolean allowSystem = mConsolidatedPolicy.allowSystem(); final boolean allowMedia = mConsolidatedPolicy.allowMedia(); final boolean allowAlarms = mConsolidatedPolicy.allowAlarms(); // notification restrictions final boolean muteNotifications = (mSuppressedEffects & SUPPRESSED_EFFECT_NOTIFICATIONS) != 0; final boolean muteNotifications = zenOn || (mSuppressedEffects & SUPPRESSED_EFFECT_NOTIFICATIONS) != 0; // call restrictions final boolean muteCalls = zenAlarmsOnly || (zenPriorityOnly && !allowCalls && !allowRepeatCallers) || (zenPriorityOnly && !(allowCalls || allowRepeatCallers)) || (mSuppressedEffects & SUPPRESSED_EFFECT_CALLS) != 0; // alarm restrictions final boolean muteAlarms = zenPriorityOnly && !allowAlarms; Loading
services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +79 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,19 @@ package com.android.server.notification; import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_ANYONE; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CONVERSATIONS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_EVENTS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_REMINDERS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS; import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_SYSTEM; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_ANY; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_CONTACTS; import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_STARRED; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS; Loading Loading @@ -219,7 +232,7 @@ public class ZenModeHelperTest extends UiServiceTestCase { public void testZenOff_NoMuteApplied() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_OFF; mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(eq(false), anyBoolean(), anyInt()); Loading @@ -229,11 +242,74 @@ public class ZenModeHelperTest extends UiServiceTestCase { AudioAttributes.USAGE_MEDIA); } @Test public void testZenOn_NotificationApplied() { mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; // The most permissive policy mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_MEDIA | PRIORITY_CATEGORY_MESSAGES | PRIORITY_CATEGORY_CONVERSATIONS | PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_EVENTS | PRIORITY_CATEGORY_REMINDERS | PRIORITY_CATEGORY_REPEAT_CALLERS | PRIORITY_CATEGORY_SYSTEM, PRIORITY_SENDERS_ANY, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_ANYONE); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(anyBoolean(), anyBoolean(), anyInt()); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_EVENT); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_DELAYED); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT); } @Test public void testZenOn_StarredCallers_CallTypesBlocked() { mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; // The most permissive policy mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_MEDIA | PRIORITY_CATEGORY_MESSAGES | PRIORITY_CATEGORY_CONVERSATIONS | PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_EVENTS | PRIORITY_CATEGORY_REMINDERS | PRIORITY_CATEGORY_SYSTEM, PRIORITY_SENDERS_STARRED, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_ANYONE); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(anyBoolean(), anyBoolean(), anyInt()); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_RINGTONE); verify(mZenModeHelperSpy).applyRestrictions(true, true, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST); } @Test public void testZenOn_AllCallers_CallTypesAllowed() { mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; // The most permissive policy mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_MEDIA | PRIORITY_CATEGORY_MESSAGES | PRIORITY_CATEGORY_CONVERSATIONS | PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_ALARMS | PRIORITY_CATEGORY_EVENTS | PRIORITY_CATEGORY_REMINDERS | PRIORITY_CATEGORY_REPEAT_CALLERS | PRIORITY_CATEGORY_SYSTEM, PRIORITY_SENDERS_ANY, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_ANYONE); mZenModeHelperSpy.applyRestrictions(); doNothing().when(mZenModeHelperSpy).applyRestrictions(anyBoolean(), anyBoolean(), anyInt()); verify(mZenModeHelperSpy).applyRestrictions(true, false, AudioAttributes.USAGE_NOTIFICATION_RINGTONE); verify(mZenModeHelperSpy).applyRestrictions(true, false, AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST); } @Test public void testZenOn_AllowAlarmsMedia_NoAlarmMediaMuteApplied() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); mZenModeHelperSpy.applyRestrictions(); verify(mZenModeHelperSpy, atLeastOnce()).applyRestrictions(true, false, Loading Loading @@ -261,7 +337,7 @@ public class ZenModeHelperTest extends UiServiceTestCase { public void testTotalSilence() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_NO_INTERRUPTIONS; mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS | Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0); mZenModeHelperSpy.applyRestrictions(); // Total silence will silence alarms, media and system noises (but not vibrations) Loading