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
This commit is contained in:
Beverly
2018-05-08 10:41:25 -04:00
committed by Beverly Tai
parent e30007dcc0
commit 17c6de8e68
4 changed files with 23 additions and 30 deletions

View File

@@ -16,6 +16,9 @@
package com.android.settings.notification; 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.ActivityManager;
import android.app.AutomaticZenRule; import android.app.AutomaticZenRule;
import android.app.NotificationManager; import android.app.NotificationManager;
@@ -146,19 +149,24 @@ public class ZenModeBackend {
protected void savePolicy(int priorityCategories, int priorityCallSenders, protected void savePolicy(int priorityCategories, int priorityCallSenders,
int priorityMessageSenders, int suppressedVisualEffects) { int priorityMessageSenders, int suppressedVisualEffects) {
mPolicy = new NotificationManager.Policy(priorityCategories, priorityCallSenders, mPolicy = new NotificationManager.Policy(priorityCategories, priorityCallSenders,
priorityMessageSenders, priorityMessageSenders, suppressedVisualEffects);
suppressedVisualEffects);
mNotificationManager.setNotificationPolicy(mPolicy); mNotificationManager.setNotificationPolicy(mPolicy);
} }
protected int getNewSuppressedEffects(boolean suppress, int effectType) { private int getNewSuppressedEffects(boolean suppress, int effectType) {
int effects = mPolicy.suppressedVisualEffects; int effects = mPolicy.suppressedVisualEffects;
if (suppress) { if (suppress) {
effects |= effectType; effects |= effectType;
} else { } else {
effects &= ~effectType; 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) { protected boolean isEffectAllowed(int effect) {

View File

@@ -68,7 +68,6 @@ public class ZenModeRestrictNotificationsSettings extends ZenModeSettingsBase im
custom.displayPreference(getPreferenceScreen()); custom.displayPreference(getPreferenceScreen());
if (mShowMenuSelected) { if (mShowMenuSelected) {
custom.select();
metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, true); metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, true);
} else { } else {
metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, false); metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, false);

View File

@@ -19,7 +19,6 @@ package com.android.settings.notification;
import android.app.NotificationManager.Policy; import android.app.NotificationManager.Policy;
import android.content.Context; import android.content.Context;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
@@ -57,15 +56,11 @@ public class ZenModeVisEffectsCustomPreferenceController
pref.setChecked(areCustomOptionsSelected()); pref.setChecked(areCustomOptionsSelected());
pref.setOnGearClickListener(p -> { pref.setOnGearClickListener(p -> {
new SubSettingLauncher(mContext) launchCustomSettings();
.setDestination(ZenModeBlockedEffectsSettings.class.getName())
.setTitle(R.string.zen_mode_what_to_block_title)
.setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS)
.launch();
}); });
pref.setOnRadioButtonClickListener(p -> { pref.setOnRadioButtonClickListener(p -> {
select(); launchCustomSettings();
}); });
} }
@@ -84,9 +79,14 @@ public class ZenModeVisEffectsCustomPreferenceController
protected void select() { protected void select() {
mMetricsFeatureProvider.action(mContext, mMetricsFeatureProvider.action(mContext,
MetricsProto.MetricsEvent.ACTION_ZEN_CUSTOM, true); MetricsProto.MetricsEvent.ACTION_ZEN_CUSTOM, true);
mBackend.savePolicy(mBackend.mPolicy.priorityCategories, }
mBackend.mPolicy.priorityCallSenders,
mBackend.mPolicy.priorityMessageSenders, private void launchCustomSettings() {
INTERRUPTIVE_EFFECTS); select();
new SubSettingLauncher(mContext)
.setDestination(ZenModeBlockedEffectsSettings.class.getName())
.setTitle(R.string.zen_mode_what_to_block_title)
.setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS)
.launch();
} }
} }

View File

@@ -150,18 +150,4 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest {
verify(mockPref).setOnGearClickListener(any()); verify(mockPref).setOnGearClickListener(any());
verify(mockPref).setOnRadioButtonClickListener(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));
}
} }