Merge "Revert "Align bubble behavior with DND settings."" into qt-dev
This commit is contained in:
@@ -16,9 +16,6 @@
|
|||||||
|
|
||||||
package com.android.systemui.bubbles;
|
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;
|
||||||
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL;
|
import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL;
|
||||||
import static android.service.notification.NotificationListenerService.REASON_CANCEL;
|
import static android.service.notification.NotificationListenerService.REASON_CANCEL;
|
||||||
@@ -52,7 +49,6 @@ import android.os.RemoteException;
|
|||||||
import android.os.ServiceManager;
|
import android.os.ServiceManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.service.notification.StatusBarNotification;
|
import android.service.notification.StatusBarNotification;
|
||||||
import android.service.notification.ZenModeConfig;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.IPinnedStackController;
|
import android.view.IPinnedStackController;
|
||||||
@@ -79,7 +75,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
|||||||
import com.android.systemui.statusbar.notification.row.NotificationContentInflater.InflationFlag;
|
import com.android.systemui.statusbar.notification.row.NotificationContentInflater.InflationFlag;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
@@ -145,7 +140,6 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
|||||||
|
|
||||||
// Bubbles get added to the status bar view
|
// Bubbles get added to the status bar view
|
||||||
private final StatusBarWindowController mStatusBarWindowController;
|
private final StatusBarWindowController mStatusBarWindowController;
|
||||||
private final ZenModeController mZenModeController;
|
|
||||||
private StatusBarStateListener mStatusBarStateListener;
|
private StatusBarStateListener mStatusBarStateListener;
|
||||||
|
|
||||||
private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
|
private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
|
||||||
@@ -207,31 +201,17 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
|||||||
@Inject
|
@Inject
|
||||||
public BubbleController(Context context, StatusBarWindowController statusBarWindowController,
|
public BubbleController(Context context, StatusBarWindowController statusBarWindowController,
|
||||||
BubbleData data, ConfigurationController configurationController,
|
BubbleData data, ConfigurationController configurationController,
|
||||||
NotificationInterruptionStateProvider interruptionStateProvider,
|
NotificationInterruptionStateProvider interruptionStateProvider) {
|
||||||
ZenModeController zenModeController) {
|
|
||||||
this(context, statusBarWindowController, data, null /* synchronizer */,
|
this(context, statusBarWindowController, data, null /* synchronizer */,
|
||||||
configurationController, interruptionStateProvider, zenModeController);
|
configurationController, interruptionStateProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BubbleController(Context context, StatusBarWindowController statusBarWindowController,
|
public BubbleController(Context context, StatusBarWindowController statusBarWindowController,
|
||||||
BubbleData data, @Nullable BubbleStackView.SurfaceSynchronizer synchronizer,
|
BubbleData data, @Nullable BubbleStackView.SurfaceSynchronizer synchronizer,
|
||||||
ConfigurationController configurationController,
|
ConfigurationController configurationController,
|
||||||
NotificationInterruptionStateProvider interruptionStateProvider,
|
NotificationInterruptionStateProvider interruptionStateProvider) {
|
||||||
ZenModeController zenModeController) {
|
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mNotificationInterruptionStateProvider = interruptionStateProvider;
|
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 */);
|
configurationController.addCallback(this /* configurationListener */);
|
||||||
|
|
||||||
@@ -277,8 +257,6 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
|||||||
if (mExpandListener != null) {
|
if (mExpandListener != null) {
|
||||||
mStackView.setExpandListener(mExpandListener);
|
mStackView.setExpandListener(mExpandListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateStackViewForZenConfig();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,28 +560,6 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
* Updates the visibility of the bubbles based on current state.
|
||||||
* Does not un-bubble, just hides or un-hides. Notifies any
|
* Does not un-bubble, just hides or un-hides. Notifies any
|
||||||
* {@link BubbleStateChangeListener}s of visibility changes.
|
* {@link BubbleStateChangeListener}s of visibility changes.
|
||||||
|
|||||||
@@ -286,9 +286,6 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
private BubbleDismissView mDismissContainer;
|
private BubbleDismissView mDismissContainer;
|
||||||
private Runnable mAfterMagnet;
|
private Runnable mAfterMagnet;
|
||||||
|
|
||||||
private boolean mSuppressNewDot = false;
|
|
||||||
private boolean mSuppressFlyout = false;
|
|
||||||
|
|
||||||
public BubbleStackView(Context context, BubbleData data,
|
public BubbleStackView(Context context, BubbleData data,
|
||||||
@Nullable SurfaceSynchronizer synchronizer) {
|
@Nullable SurfaceSynchronizer synchronizer) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -690,9 +687,6 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
mBubbleContainer.addView(bubble.iconView, 0,
|
mBubbleContainer.addView(bubble.iconView, 0,
|
||||||
new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
|
new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
|
||||||
ViewClippingUtil.setClippingDeactivated(bubble.iconView, true, mClippingParameters);
|
ViewClippingUtil.setClippingDeactivated(bubble.iconView, true, mClippingParameters);
|
||||||
if (bubble.iconView != null) {
|
|
||||||
bubble.iconView.setSuppressDot(mSuppressNewDot, false /* animate */);
|
|
||||||
}
|
|
||||||
animateInFlyoutForBubble(bubble);
|
animateInFlyoutForBubble(bubble);
|
||||||
requestUpdate();
|
requestUpdate();
|
||||||
logBubbleEvent(bubble, StatsLog.BUBBLE_UICHANGED__ACTION__POSTED);
|
logBubbleEvent(bubble, StatsLog.BUBBLE_UICHANGED__ACTION__POSTED);
|
||||||
@@ -1310,29 +1304,6 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 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.
|
* Animates in the flyout for the given bubble, if available, and then hides it after some time.
|
||||||
*/
|
*/
|
||||||
@@ -1344,44 +1315,22 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
if (updateMessage != null
|
if (updateMessage != null
|
||||||
&& !isExpanded()
|
&& !isExpanded()
|
||||||
&& !mIsExpansionAnimating
|
&& !mIsExpansionAnimating
|
||||||
&& !mIsGestureInProgress
|
&& !mIsGestureInProgress) {
|
||||||
&& !mSuppressFlyout) {
|
|
||||||
if (bubble.iconView != null) {
|
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;
|
mFlyoutDragDeltaX = 0f;
|
||||||
mFlyout.setAlpha(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 in case layout isn't complete and getWidth returns 0.
|
||||||
post(() -> mFlyout.showFlyout(
|
post(() -> mFlyout.showFlyout(
|
||||||
updateMessage, mStackAnimationController.getStackPosition(), getWidth(),
|
updateMessage, mStackAnimationController.getStackPosition(), getWidth(),
|
||||||
mStackAnimationController.isStackOnLeftSide(),
|
mStackAnimationController.isStackOnLeftSide(),
|
||||||
bubble.iconView.getBadgeColor(), mAfterFlyoutHides));
|
bubble.iconView.getBadgeColor(),
|
||||||
|
() -> {
|
||||||
|
bubble.iconView.setSuppressDot(
|
||||||
|
false /* suppressDot */, false /* animate */);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
mFlyout.removeCallbacks(mHideFlyout);
|
mFlyout.removeCallbacks(mHideFlyout);
|
||||||
mFlyout.postDelayed(mHideFlyout, FLYOUT_HIDE_AFTER);
|
mFlyout.postDelayed(mHideFlyout, FLYOUT_HIDE_AFTER);
|
||||||
logBubbleEvent(bubble, StatsLog.BUBBLE_UICHANGED__ACTION__FLYOUT);
|
logBubbleEvent(bubble, StatsLog.BUBBLE_UICHANGED__ACTION__FLYOUT);
|
||||||
@@ -1390,10 +1339,6 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
|
|
||||||
/** Hide the flyout immediately and cancel any pending hide runnables. */
|
/** Hide the flyout immediately and cancel any pending hide runnables. */
|
||||||
private void hideFlyoutImmediate() {
|
private void hideFlyoutImmediate() {
|
||||||
if (mAfterFlyoutHides != null) {
|
|
||||||
mAfterFlyoutHides.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
mFlyout.removeCallbacks(mHideFlyout);
|
mFlyout.removeCallbacks(mHideFlyout);
|
||||||
mFlyout.hideFlyout();
|
mFlyout.hideFlyout();
|
||||||
}
|
}
|
||||||
@@ -1496,7 +1441,6 @@ public class BubbleStackView extends FrameLayout {
|
|||||||
int bubbsCount = mBubbleContainer.getChildCount();
|
int bubbsCount = mBubbleContainer.getChildCount();
|
||||||
for (int i = 0; i < bubbsCount; i++) {
|
for (int i = 0; i < bubbsCount; i++) {
|
||||||
BubbleView bv = (BubbleView) mBubbleContainer.getChildAt(i);
|
BubbleView bv = (BubbleView) mBubbleContainer.getChildAt(i);
|
||||||
bv.updateDotVisibility(true /* animate */);
|
|
||||||
bv.setZ((BubbleController.MAX_BUBBLES
|
bv.setZ((BubbleController.MAX_BUBBLES
|
||||||
* getResources().getDimensionPixelSize(R.dimen.bubble_elevation)) - i);
|
* getResources().getDimensionPixelSize(R.dimen.bubble_elevation)) - i);
|
||||||
|
|
||||||
|
|||||||
@@ -138,6 +138,19 @@ public class BubbleView extends FrameLayout {
|
|||||||
updateDotVisibility(animate, null /* after */);
|
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
|
* Sets whether or not to hide the dot even if we'd otherwise show it. This is used while the
|
||||||
@@ -164,35 +177,18 @@ public class BubbleView extends FrameLayout {
|
|||||||
return mBadgedImageView.getDotPosition();
|
return mBadgedImageView.getDotPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
* Animates the badge to show or hide.
|
||||||
*/
|
*/
|
||||||
private void animateDot(boolean showDot, Runnable after) {
|
private void animateDot(boolean showDot, Runnable after) {
|
||||||
if (mBadgedImageView.isShowingDot() != showDot) {
|
if (mBadgedImageView.isShowingDot() != showDot) {
|
||||||
if (showDot) {
|
mBadgedImageView.setShowDot(showDot);
|
||||||
mBadgedImageView.setShowDot(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
mBadgedImageView.clearAnimation();
|
mBadgedImageView.clearAnimation();
|
||||||
mBadgedImageView.animate().setDuration(200)
|
mBadgedImageView.animate().setDuration(200)
|
||||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||||
.setUpdateListener((valueAnimator) -> {
|
.setUpdateListener((valueAnimator) -> {
|
||||||
float fraction = valueAnimator.getAnimatedFraction();
|
float fraction = valueAnimator.getAnimatedFraction();
|
||||||
fraction = showDot ? fraction : 1f - fraction;
|
fraction = showDot ? fraction : 1 - fraction;
|
||||||
mBadgedImageView.setDotScale(fraction);
|
mBadgedImageView.setDotScale(fraction);
|
||||||
}).withEndAction(() -> {
|
}).withEndAction(() -> {
|
||||||
if (!showDot) {
|
if (!showDot) {
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.graphics.drawable.Icon;
|
import android.graphics.drawable.Icon;
|
||||||
import android.service.notification.ZenModeConfig;
|
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.testing.TestableLooper;
|
import android.testing.TestableLooper;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
@@ -70,7 +69,6 @@ import com.android.systemui.statusbar.phone.DozeParameters;
|
|||||||
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
import com.android.systemui.statusbar.phone.StatusBarWindowController;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -101,10 +99,6 @@ public class BubbleControllerTest extends SysuiTestCase {
|
|||||||
private DozeParameters mDozeParameters;
|
private DozeParameters mDozeParameters;
|
||||||
@Mock
|
@Mock
|
||||||
private ConfigurationController mConfigurationController;
|
private ConfigurationController mConfigurationController;
|
||||||
@Mock
|
|
||||||
private ZenModeController mZenModeController;
|
|
||||||
@Mock
|
|
||||||
private ZenModeConfig mZenModeConfig;
|
|
||||||
|
|
||||||
private FrameLayout mStatusBarView;
|
private FrameLayout mStatusBarView;
|
||||||
@Captor
|
@Captor
|
||||||
@@ -168,9 +162,6 @@ public class BubbleControllerTest extends SysuiTestCase {
|
|||||||
when(mNotificationEntryManager.getNotificationData()).thenReturn(mNotificationData);
|
when(mNotificationEntryManager.getNotificationData()).thenReturn(mNotificationData);
|
||||||
when(mNotificationData.getChannel(mRow.getEntry().key)).thenReturn(mRow.getEntry().channel);
|
when(mNotificationData.getChannel(mRow.getEntry().key)).thenReturn(mRow.getEntry().channel);
|
||||||
|
|
||||||
mZenModeConfig.suppressedVisualEffects = 0;
|
|
||||||
when(mZenModeController.getConfig()).thenReturn(mZenModeConfig);
|
|
||||||
|
|
||||||
TestableNotificationInterruptionStateProvider interruptionStateProvider =
|
TestableNotificationInterruptionStateProvider interruptionStateProvider =
|
||||||
new TestableNotificationInterruptionStateProvider(mContext);
|
new TestableNotificationInterruptionStateProvider(mContext);
|
||||||
interruptionStateProvider.setUpWithPresenter(
|
interruptionStateProvider.setUpWithPresenter(
|
||||||
@@ -179,8 +170,7 @@ public class BubbleControllerTest extends SysuiTestCase {
|
|||||||
mock(NotificationInterruptionStateProvider.HeadsUpSuppressor.class));
|
mock(NotificationInterruptionStateProvider.HeadsUpSuppressor.class));
|
||||||
mBubbleData = new BubbleData(mContext);
|
mBubbleData = new BubbleData(mContext);
|
||||||
mBubbleController = new TestableBubbleController(mContext, mStatusBarWindowController,
|
mBubbleController = new TestableBubbleController(mContext, mStatusBarWindowController,
|
||||||
mBubbleData, mConfigurationController, interruptionStateProvider,
|
mBubbleData, mConfigurationController, interruptionStateProvider);
|
||||||
mZenModeController);
|
|
||||||
mBubbleController.setBubbleStateChangeListener(mBubbleStateChangeListener);
|
mBubbleController.setBubbleStateChangeListener(mBubbleStateChangeListener);
|
||||||
mBubbleController.setExpandListener(mBubbleExpandListener);
|
mBubbleController.setExpandListener(mBubbleExpandListener);
|
||||||
|
|
||||||
@@ -638,10 +628,9 @@ public class BubbleControllerTest extends SysuiTestCase {
|
|||||||
TestableBubbleController(Context context,
|
TestableBubbleController(Context context,
|
||||||
StatusBarWindowController statusBarWindowController, BubbleData data,
|
StatusBarWindowController statusBarWindowController, BubbleData data,
|
||||||
ConfigurationController configurationController,
|
ConfigurationController configurationController,
|
||||||
NotificationInterruptionStateProvider interruptionStateProvider,
|
NotificationInterruptionStateProvider interruptionStateProvider) {
|
||||||
ZenModeController zenModeController) {
|
|
||||||
super(context, statusBarWindowController, data, Runnable::run,
|
super(context, statusBarWindowController, data, Runnable::run,
|
||||||
configurationController, interruptionStateProvider, zenModeController);
|
configurationController, interruptionStateProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user