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:
@@ -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) {
|
||||||
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user