Revert "Align bubble behavior with DND settings."
This reverts commit 7aa18112b52b3e369b0c03cc95848866cda0319b.
Reason for revert: b/132891091
Bug: 132891091
Change-Id: I7775bfe2d0c65908f0f6ec14e52beaf58528e19a
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 7bfd168..dcc0419 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -16,9 +16,6 @@
package com.android.systemui.bubbles;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
-import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL;
import static android.service.notification.NotificationListenerService.REASON_CANCEL;
@@ -52,7 +49,6 @@
import android.os.ServiceManager;
import android.provider.Settings;
import android.service.notification.StatusBarNotification;
-import android.service.notification.ZenModeConfig;
import android.util.Log;
import android.view.Display;
import android.view.IPinnedStackController;
@@ -79,7 +75,6 @@
import com.android.systemui.statusbar.notification.row.NotificationContentInflater.InflationFlag;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.policy.ConfigurationController;
-import com.android.systemui.statusbar.policy.ZenModeController;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@@ -145,7 +140,6 @@
// Bubbles get added to the status bar view
private final StatusBarWindowController mStatusBarWindowController;
- private final ZenModeController mZenModeController;
private StatusBarStateListener mStatusBarStateListener;
private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
@@ -207,31 +201,17 @@
@Inject
public BubbleController(Context context, StatusBarWindowController statusBarWindowController,
BubbleData data, ConfigurationController configurationController,
- NotificationInterruptionStateProvider interruptionStateProvider,
- ZenModeController zenModeController) {
+ NotificationInterruptionStateProvider interruptionStateProvider) {
this(context, statusBarWindowController, data, null /* synchronizer */,
- configurationController, interruptionStateProvider, zenModeController);
+ configurationController, interruptionStateProvider);
}
public BubbleController(Context context, StatusBarWindowController statusBarWindowController,
BubbleData data, @Nullable BubbleStackView.SurfaceSynchronizer synchronizer,
ConfigurationController configurationController,
- NotificationInterruptionStateProvider interruptionStateProvider,
- ZenModeController zenModeController) {
+ NotificationInterruptionStateProvider interruptionStateProvider) {
mContext = context;
mNotificationInterruptionStateProvider = interruptionStateProvider;
- mZenModeController = zenModeController;
- mZenModeController.addCallback(new ZenModeController.Callback() {
- @Override
- public void onZenChanged(int zen) {
- updateStackViewForZenConfig();
- }
-
- @Override
- public void onConfigChanged(ZenModeConfig config) {
- updateStackViewForZenConfig();
- }
- });
configurationController.addCallback(this /* configurationListener */);
@@ -277,8 +257,6 @@
if (mExpandListener != null) {
mStackView.setExpandListener(mExpandListener);
}
-
- updateStackViewForZenConfig();
}
}
@@ -582,28 +560,6 @@
};
/**
- * Updates the stack view's suppression flags from the latest config from the zen (do not
- * disturb) controller.
- */
- private void updateStackViewForZenConfig() {
- final int suppressedEffects = mZenModeController.getConfig().suppressedVisualEffects;
- final boolean hideNotificationDotsSelected =
- (suppressedEffects & SUPPRESSED_EFFECT_BADGE) != 0;
- final boolean dontPopNotifsOnScreenSelected =
- (suppressedEffects & SUPPRESSED_EFFECT_PEEK) != 0;
- final boolean hideFromPullDownShadeSelected =
- (suppressedEffects & SUPPRESSED_EFFECT_NOTIFICATION_LIST) != 0;
-
- final boolean dndEnabled = mZenModeController.getZen() != Settings.Global.ZEN_MODE_OFF;
-
- mStackView.setSuppressNewDot(
- dndEnabled && hideNotificationDotsSelected);
- mStackView.setSuppressFlyout(
- dndEnabled && (dontPopNotifsOnScreenSelected || hideFromPullDownShadeSelected));
- }
-
- /**
- * Lets any listeners know if bubble state has changed.
* Updates the visibility of the bubbles based on current state.
* Does not un-bubble, just hides or un-hides. Notifies any
* {@link BubbleStateChangeListener}s of visibility changes.
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
index 6391070..4ad3a33 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
@@ -285,9 +285,6 @@
private BubbleDismissView mDismissContainer;
private Runnable mAfterMagnet;
- private boolean mSuppressNewDot = false;
- private boolean mSuppressFlyout = false;
-
public BubbleStackView(Context context, BubbleData data,
@Nullable SurfaceSynchronizer synchronizer) {
super(context);
@@ -687,9 +684,6 @@
mBubbleContainer.addView(bubble.iconView, 0,
new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
ViewClippingUtil.setClippingDeactivated(bubble.iconView, true, mClippingParameters);
- if (bubble.iconView != null) {
- bubble.iconView.setSuppressDot(mSuppressNewDot, false /* animate */);
- }
animateInFlyoutForBubble(bubble);
requestUpdate();
logBubbleEvent(bubble, StatsLog.BUBBLE_UICHANGED__ACTION__POSTED);
@@ -1307,29 +1301,6 @@
}
}
- /** Sets whether all bubbles in the stack should not show the 'new' dot. */
- void setSuppressNewDot(boolean suppressNewDot) {
- mSuppressNewDot = suppressNewDot;
-
- for (int i = 0; i < mBubbleContainer.getChildCount(); i++) {
- BubbleView bv = (BubbleView) mBubbleContainer.getChildAt(i);
- bv.setSuppressDot(suppressNewDot, true /* animate */);
- }
- }
-
- /**
- * Sets whether the flyout should not appear, even if the notif otherwise would generate one.
- */
- void setSuppressFlyout(boolean suppressFlyout) {
- mSuppressFlyout = suppressFlyout;
- }
-
- /**
- * Callback to run after the flyout hides. Also called if a new flyout is shown before the
- * previous one animates out.
- */
- private Runnable mAfterFlyoutHides;
-
/**
* Animates in the flyout for the given bubble, if available, and then hides it after some time.
*/
@@ -1341,44 +1312,22 @@
if (updateMessage != null
&& !isExpanded()
&& !mIsExpansionAnimating
- && !mIsGestureInProgress
- && !mSuppressFlyout) {
+ && !mIsGestureInProgress) {
if (bubble.iconView != null) {
- // Temporarily suppress the dot while the flyout is visible.
- bubble.iconView.setSuppressDot(
- true /* suppressDot */, false /* animate */);
-
+ bubble.iconView.setSuppressDot(true /* suppressDot */, false /* animate */);
mFlyoutDragDeltaX = 0f;
mFlyout.setAlpha(0f);
- if (mAfterFlyoutHides != null) {
- mAfterFlyoutHides.run();
- }
-
- mAfterFlyoutHides = () -> {
- // If we're going to suppress the dot, make it visible first so it'll
- // visibly animate away.
- if (mSuppressNewDot) {
- bubble.iconView.setSuppressDot(
- false /* suppressDot */, false /* animate */);
- }
-
- // Reset dot suppression. If we're not suppressing due to DND, then
- // stop suppressing it with no animation (since the flyout has
- // transformed into the dot). If we are suppressing due to DND, animate
- // it away.
- bubble.iconView.setSuppressDot(
- mSuppressNewDot /* suppressDot */,
- mSuppressNewDot /* animate */);
- };
-
// Post in case layout isn't complete and getWidth returns 0.
post(() -> mFlyout.showFlyout(
updateMessage, mStackAnimationController.getStackPosition(), getWidth(),
mStackAnimationController.isStackOnLeftSide(),
- bubble.iconView.getBadgeColor(), mAfterFlyoutHides));
+ bubble.iconView.getBadgeColor(),
+ () -> {
+ bubble.iconView.setSuppressDot(
+ false /* suppressDot */, false /* animate */);
+ }));
}
-
mFlyout.removeCallbacks(mHideFlyout);
mFlyout.postDelayed(mHideFlyout, FLYOUT_HIDE_AFTER);
logBubbleEvent(bubble, StatsLog.BUBBLE_UICHANGED__ACTION__FLYOUT);
@@ -1387,10 +1336,6 @@
/** Hide the flyout immediately and cancel any pending hide runnables. */
private void hideFlyoutImmediate() {
- if (mAfterFlyoutHides != null) {
- mAfterFlyoutHides.run();
- }
-
mFlyout.removeCallbacks(mHideFlyout);
mFlyout.hideFlyout();
}
@@ -1493,7 +1438,6 @@
int bubbsCount = mBubbleContainer.getChildCount();
for (int i = 0; i < bubbsCount; i++) {
BubbleView bv = (BubbleView) mBubbleContainer.getChildAt(i);
- bv.updateDotVisibility(true /* animate */);
bv.setZ((BubbleController.MAX_BUBBLES
* getResources().getDimensionPixelSize(R.dimen.bubble_elevation)) - i);
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java
index 6f1ed28..aa32b94 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleView.java
@@ -138,6 +138,19 @@
updateDotVisibility(animate, null /* after */);
}
+ /**
+ * Changes the dot's visibility to match the bubble view's state, running the provided callback
+ * after animation if requested.
+ */
+ void updateDotVisibility(boolean animate, Runnable after) {
+ boolean showDot = getEntry().showInShadeWhenBubble() && !mSuppressDot;
+
+ if (animate) {
+ animateDot(showDot, after);
+ } else {
+ mBadgedImageView.setShowDot(showDot);
+ }
+ }
/**
* Sets whether or not to hide the dot even if we'd otherwise show it. This is used while the
@@ -165,34 +178,17 @@
}
/**
- * Changes the dot's visibility to match the bubble view's state, running the provided callback
- * after animation if requested.
- */
- private void updateDotVisibility(boolean animate, Runnable after) {
- boolean showDot = getEntry().showInShadeWhenBubble() && !mSuppressDot;
-
- if (animate) {
- animateDot(showDot, after);
- } else {
- mBadgedImageView.setShowDot(showDot);
- }
- }
-
- /**
* Animates the badge to show or hide.
*/
private void animateDot(boolean showDot, Runnable after) {
if (mBadgedImageView.isShowingDot() != showDot) {
- if (showDot) {
- mBadgedImageView.setShowDot(true);
- }
-
+ mBadgedImageView.setShowDot(showDot);
mBadgedImageView.clearAnimation();
mBadgedImageView.animate().setDuration(200)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.setUpdateListener((valueAnimator) -> {
float fraction = valueAnimator.getAnimatedFraction();
- fraction = showDot ? fraction : 1f - fraction;
+ fraction = showDot ? fraction : 1 - fraction;
mBadgedImageView.setDotScale(fraction);
}).withEndAction(() -> {
if (!showDot) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
index b3f6f4e..35a1516 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
@@ -47,7 +47,6 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Icon;
-import android.service.notification.ZenModeConfig;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.WindowManager;
@@ -70,7 +69,6 @@
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
-import com.android.systemui.statusbar.policy.ZenModeController;
import org.junit.Before;
import org.junit.Test;
@@ -101,10 +99,6 @@
private DozeParameters mDozeParameters;
@Mock
private ConfigurationController mConfigurationController;
- @Mock
- private ZenModeController mZenModeController;
- @Mock
- private ZenModeConfig mZenModeConfig;
private FrameLayout mStatusBarView;
@Captor
@@ -168,9 +162,6 @@
when(mNotificationEntryManager.getNotificationData()).thenReturn(mNotificationData);
when(mNotificationData.getChannel(mRow.getEntry().key)).thenReturn(mRow.getEntry().channel);
- mZenModeConfig.suppressedVisualEffects = 0;
- when(mZenModeController.getConfig()).thenReturn(mZenModeConfig);
-
TestableNotificationInterruptionStateProvider interruptionStateProvider =
new TestableNotificationInterruptionStateProvider(mContext);
interruptionStateProvider.setUpWithPresenter(
@@ -179,8 +170,7 @@
mock(NotificationInterruptionStateProvider.HeadsUpSuppressor.class));
mBubbleData = new BubbleData(mContext);
mBubbleController = new TestableBubbleController(mContext, mStatusBarWindowController,
- mBubbleData, mConfigurationController, interruptionStateProvider,
- mZenModeController);
+ mBubbleData, mConfigurationController, interruptionStateProvider);
mBubbleController.setBubbleStateChangeListener(mBubbleStateChangeListener);
mBubbleController.setExpandListener(mBubbleExpandListener);
@@ -638,10 +628,9 @@
TestableBubbleController(Context context,
StatusBarWindowController statusBarWindowController, BubbleData data,
ConfigurationController configurationController,
- NotificationInterruptionStateProvider interruptionStateProvider,
- ZenModeController zenModeController) {
+ NotificationInterruptionStateProvider interruptionStateProvider) {
super(context, statusBarWindowController, data, Runnable::run,
- configurationController, interruptionStateProvider, zenModeController);
+ configurationController, interruptionStateProvider);
}
@Override