- 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
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;
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) {
custom.displayPreference(getPreferenceScreen());
if (mShowMenuSelected) {
- custom.select();
metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, true);
} else {
metrics.action(mContext, ACTION_ZEN_SHOW_CUSTOM, false);
import android.app.NotificationManager.Policy;
import android.content.Context;
+
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
pref.setChecked(areCustomOptionsSelected());
pref.setOnGearClickListener(p -> {
- new SubSettingLauncher(mContext)
- .setDestination(ZenModeBlockedEffectsSettings.class.getName())
- .setTitleRes(R.string.zen_mode_what_to_block_title)
- .setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS)
- .launch();
+ launchCustomSettings();
+
});
pref.setOnRadioButtonClickListener(p -> {
- select();
+ launchCustomSettings();
});
}
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())
+ .setTitleRes(R.string.zen_mode_what_to_block_title)
+ .setSourceMetricsCategory(MetricsProto.MetricsEvent.SETTINGS_ZEN_NOTIFICATIONS)
+ .launch();
}
}
\ No newline at end of file
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));
- }
}