From 17c6de8e68a972cff871fd9931861748e9879b81 Mon Sep 17 00:00:00 2001 From: Beverly Date: Tue, 8 May 2018 10:41:25 -0400 Subject: [PATCH] DO NOT MERGE Clear deprecated effects when saving zen policy - Deprecated effects are set in NotificationManagerService, so unset them before setting the NotificationPolicy - When user clicks on Custom, they are brought to the custom vis effects page instead of resetting custom values to presets Fixes: 79383781 Test: manual Test: NotificationManagerServiceTest testSetNotificationPolicy_preP_setOldNewFields Change-Id: Id6db9ce2aaeed6321389f8dbfbea65eda30c74ad --- .../settings/notification/ZenModeBackend.java | 16 ++++++++++---- .../ZenModeRestrictNotificationsSettings.java | 1 - ...eVisEffectsCustomPreferenceController.java | 22 +++++++++---------- ...EffectsCustomPreferenceControllerTest.java | 14 ------------ 4 files changed, 23 insertions(+), 30 deletions(-) diff --git a/src/com/android/settings/notification/ZenModeBackend.java b/src/com/android/settings/notification/ZenModeBackend.java index 3c6a026642f..d5792564cc2 100644 --- a/src/com/android/settings/notification/ZenModeBackend.java +++ b/src/com/android/settings/notification/ZenModeBackend.java @@ -16,6 +16,9 @@ package com.android.settings.notification; +import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_OFF; +import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_ON; + import android.app.ActivityManager; import android.app.AutomaticZenRule; import android.app.NotificationManager; @@ -146,19 +149,24 @@ public class ZenModeBackend { protected void savePolicy(int priorityCategories, int priorityCallSenders, int priorityMessageSenders, int suppressedVisualEffects) { mPolicy = new NotificationManager.Policy(priorityCategories, priorityCallSenders, - priorityMessageSenders, - suppressedVisualEffects); + priorityMessageSenders, suppressedVisualEffects); mNotificationManager.setNotificationPolicy(mPolicy); } - protected int getNewSuppressedEffects(boolean suppress, int effectType) { + private int getNewSuppressedEffects(boolean suppress, int effectType) { int effects = mPolicy.suppressedVisualEffects; + if (suppress) { effects |= effectType; } else { effects &= ~effectType; } - return effects; + + return clearDeprecatedEffects(effects); + } + + private int clearDeprecatedEffects(int effects) { + return effects & ~(SUPPRESSED_EFFECT_SCREEN_ON | SUPPRESSED_EFFECT_SCREEN_OFF); } protected boolean isEffectAllowed(int effect) { diff --git a/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java b/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java index 307dfcf2705..14b82f52836 100644 --- a/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java +++ b/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java @@ -68,7 +68,6 @@ public class ZenModeRestrictNotificationsSettings extends ZenModeSettingsBase im custom.displayPreference(getPreferenceScreen()); if (mShowMenuSelected) { - custom.select(); metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, true); } else { metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, false); diff --git a/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java index fd235e61fcb..83ab0377256 100644 --- a/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java +++ b/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java @@ -19,7 +19,6 @@ package com.android.settings.notification; import android.app.NotificationManager.Policy; import android.content.Context; import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; @@ -57,15 +56,11 @@ public class ZenModeVisEffectsCustomPreferenceController pref.setChecked(areCustomOptionsSelected()); pref.setOnGearClickListener(p -> { - new SubSettingLauncher(mContext) - .setDestination(ZenModeBlockedEffectsSettings.class.getName()) - .setTitle(R.string.zen_mode_what_to_block_title) - .setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS) - .launch(); + launchCustomSettings(); }); pref.setOnRadioButtonClickListener(p -> { - select(); + launchCustomSettings(); }); } @@ -84,9 +79,14 @@ public class ZenModeVisEffectsCustomPreferenceController protected void select() { mMetricsFeatureProvider.action(mContext, MetricsProto.MetricsEvent.ACTION_ZEN_CUSTOM, true); - mBackend.savePolicy(mBackend.mPolicy.priorityCategories, - mBackend.mPolicy.priorityCallSenders, - mBackend.mPolicy.priorityMessageSenders, - INTERRUPTIVE_EFFECTS); + } + + private void launchCustomSettings() { + select(); + new SubSettingLauncher(mContext) + .setDestination(ZenModeBlockedEffectsSettings.class.getName()) + .setTitle(R.string.zen_mode_what_to_block_title) + .setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS) + .launch(); } } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java index 56fa1c2dd1a..14de98cdf27 100644 --- a/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java @@ -150,18 +150,4 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest { verify(mockPref).setOnGearClickListener(any()); verify(mockPref).setOnRadioButtonClickListener(any()); } - - @Test - public void select() { - int interruptiveSuppressed = SUPPRESSED_EFFECT_FULL_SCREEN_INTENT - | SUPPRESSED_EFFECT_AMBIENT - | SUPPRESSED_EFFECT_LIGHTS - | SUPPRESSED_EFFECT_PEEK; - mBackend.mPolicy = new NotificationManager.Policy(0, 0, 0, 1); - mController.select(); - verify(mBackend).savePolicy(anyInt(), anyInt(), anyInt(), eq(interruptiveSuppressed)); - verify(mFeatureFactory.metricsFeatureProvider).action(eq(mContext), - eq(ACTION_ZEN_CUSTOM), - eq(true)); - } }