Continued the bypass experience
The lock icon now hides as soon as the notifications are showing
to avoid the overlap introduced in the previous CL.
We're also introducing a new listener that one can listen to
for when the notifications are fully hidden.
That same listener is now used to hide and show the aod icons
Bug: 130327302
Change-Id: I5694a38e542b82bf2738d66bdff28d122a9f89e7
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 91a8ab5..4c52b132 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -75,6 +75,7 @@
"--extra-packages",
"com.android.keyguard",
],
+ kotlincflags: ["-Xjvm-default=enable"],
plugins: ["dagger2-compiler-2.19"],
}
@@ -128,6 +129,7 @@
"telephony-common",
"android.test.base",
],
+ kotlincflags: ["-Xjvm-default=enable"],
aaptflags: [
"--extra-packages",
"com.android.keyguard:com.android.systemui",
@@ -155,6 +157,8 @@
"telephony-common",
],
+ kotlincflags: ["-Xjvm-default=enable"],
+
dxflags: ["--multi-dex"],
aaptflags: [
"--extra-packages",
@@ -191,6 +195,8 @@
"telephony-common",
],
+ kotlincflags: ["-Xjvm-default=enable"],
+
srcs: [
"legacy/recents/src/**/*.java",
"legacy/recents/src/**/I*.aidl",
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index 34cc70c..73b8c94 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -48,9 +48,11 @@
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
import com.android.systemui.statusbar.notification.collection.NotificationData;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.KeyguardBouncer;
+import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
import com.android.systemui.statusbar.phone.LockIcon;
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
@@ -145,10 +147,14 @@
}
public NotificationIconAreaController createNotificationIconAreaController(Context context,
- StatusBar statusBar, StatusBarStateController statusBarStateController,
+ StatusBar statusBar,
+ NotificationWakeUpCoordinator wakeUpCoordinator,
+ KeyguardBypassController keyguardBypassController,
+ StatusBarStateController statusBarStateController,
NotificationListener listener) {
return new NotificationIconAreaController(context, statusBar, statusBarStateController,
- listener, Dependency.get(NotificationMediaManager.class));
+ wakeUpCoordinator, keyguardBypassController, listener,
+ Dependency.get(NotificationMediaManager.class));
}
public KeyguardIndicationController createKeyguardIndicationController(Context context,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
index 8ca744b5..bdc4d2a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
@@ -93,6 +93,7 @@
get() = mFalsingManager.isFalseTouch
var qsExpanded: Boolean = false
var pulseExpandAbortListener: Runnable? = null
+ var bouncerShowing: Boolean = false
init {
mMinDragDistance = context.resources.getDimensionPixelSize(
@@ -107,7 +108,8 @@
}
private fun maybeStartExpansion(event: MotionEvent): Boolean {
- if (!wakeUpCoordinator.canShowPulsingHuns || qsExpanded) {
+ if (!wakeUpCoordinator.canShowPulsingHuns || qsExpanded
+ || bouncerShowing) {
return false
}
if (velocityTracker == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
index 389b0aa..95af9fd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
@@ -66,7 +66,9 @@
private var mLinearVisibilityAmount = 0.0f
private var mWakingUp = false
private val mEntrySetToClearWhenFinished = mutableSetOf<NotificationEntry>()
- private val mDozeParameters: DozeParameters;
+ private val mDozeParameters: DozeParameters
+ private var pulseExpanding: Boolean = false
+ private val wakeUpListeners = arrayListOf<WakeUpListener>()
var fullyAwake: Boolean = false
var willWakeUp = false
@@ -89,6 +91,16 @@
}
}
+ var notificationsFullyHidden: Boolean = false
+ private set(value) {
+ if (field != value) {
+ field = value
+ for (listener in wakeUpListeners) {
+ listener.onFullyHiddenChanged(value)
+ }
+ }
+ }
+
/**
* True if we can show pulsing heads up notifications
*/
@@ -104,7 +116,6 @@
return canShow
}
-
init {
mHeadsUpManagerPhone.addListener(this)
mStatusBarStateController.addCallback(this)
@@ -113,8 +124,19 @@
fun setStackScroller(stackScroller: NotificationStackScrollLayout) {
mStackScroller = stackScroller
+ pulseExpanding = stackScroller.isPulseExpanding
+ stackScroller.setOnPulseHeightChangedListener {
+ val nowExpanding = isPulseExpanding()
+ val changed = nowExpanding != pulseExpanding
+ pulseExpanding = nowExpanding
+ for (listener in wakeUpListeners) {
+ listener.onPulseExpansionChanged(changed)
+ }
+ }
}
+ fun isPulseExpanding(): Boolean = mStackScroller.isPulseExpanding
+
/**
* @param visible should notifications be visible
* @param animate should this change be animated
@@ -132,6 +154,14 @@
}
}
+ fun addListener(listener: WakeUpListener) {
+ wakeUpListeners.add(listener);
+ }
+
+ fun removeFullyHiddenChangedListener(listener: WakeUpListener) {
+ wakeUpListeners.remove(listener);
+ }
+
private fun updateNotificationVisibility(animate: Boolean, increaseSpeed: Boolean) {
// TODO: handle Lockscreen wakeup for bypass when we're not pulsing anymore
var visible = mNotificationsVisibleForExpansion || mHeadsUpManagerPhone.hasNotifications()
@@ -244,7 +274,7 @@
val linearAmount = Math.min(1.0f - mLinearVisibilityAmount, mLinearDozeAmount)
val amount = Math.min(1.0f - mVisibilityAmount, mDozeAmount)
mStackScroller.setHideAmount(linearAmount, amount)
- iconAreaController.setFullyHidden(linearAmount == 1.0f);
+ notificationsFullyHidden = linearAmount == 1.0f;
}
private fun notifyAnimationStart(awake: Boolean) {
@@ -300,4 +330,17 @@
private fun shouldAnimateVisibility() =
mDozeParameters.getAlwaysOn() && !mDozeParameters.getDisplayNeedsBlanking()
+
+ interface WakeUpListener {
+ /**
+ * Called whenever the notifications are fully hidden or shown
+ */
+ @JvmDefault fun onFullyHiddenChanged(isFullyHidden: Boolean) {}
+
+ /**
+ * Called whenever the pulseExpansion changes
+ * @param expandingChanged if the user has started or stopped expanding
+ */
+ @JvmDefault fun onPulseExpansionChanged(expandingChanged: Boolean) {}
+ }
}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index 3c21699..e76f752 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -3278,7 +3278,7 @@
@Override
@ShadeViewRefactor(RefactorComponent.STATE_RESOLVER)
public void generateAddAnimation(ExpandableView child, boolean fromMoreCard) {
- if (mIsExpanded && mAnimationsEnabled && !mChangePositionInProgress) {
+ if (mIsExpanded && mAnimationsEnabled && !mChangePositionInProgress && !isFullyHidden()) {
// Generate Animations
mChildrenToAddAnimated.add(child);
if (fromMoreCard) {
@@ -3286,7 +3286,8 @@
}
mNeedsAnimation = true;
}
- if (isHeadsUp(child) && mAnimationsEnabled && !mChangePositionInProgress) {
+ if (isHeadsUp(child) && mAnimationsEnabled && !mChangePositionInProgress
+ && !isFullyHidden()) {
mAddedHeadsUpChildren.add(child);
mChildrenToAddAnimated.remove(child);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
index 07436f8..2eadd12 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
@@ -47,6 +47,8 @@
import com.android.systemui.dock.DockManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.KeyguardAffordanceView;
+import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
import com.android.systemui.statusbar.phone.ScrimController.ScrimVisibility;
import com.android.systemui.statusbar.policy.AccessibilityController;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -64,7 +66,8 @@
*/
public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChangedListener,
StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener,
- UnlockMethodCache.OnUnlockMethodChangedListener {
+ UnlockMethodCache.OnUnlockMethodChangedListener,
+ NotificationWakeUpCoordinator.WakeUpListener {
private static final int STATE_LOCKED = 0;
private static final int STATE_LOCK_OPEN = 1;
@@ -78,6 +81,8 @@
private final DockManager mDockManager;
private final Handler mMainHandler;
private final KeyguardMonitor mKeyguardMonitor;
+ private final KeyguardBypassController mBypassController;
+ private final NotificationWakeUpCoordinator mWakeUpCoordinator;
private int mLastState = 0;
private boolean mTransientBiometricsError;
@@ -92,6 +97,7 @@
private int mIconColor;
private float mDozeAmount;
private int mIconRes;
+ private boolean mBouncerShowing;
private boolean mWasPulsingOnThisFrame;
private boolean mWakeAndUnlockRunning;
private boolean mKeyguardShowing;
@@ -150,6 +156,8 @@
StatusBarStateController statusBarStateController,
ConfigurationController configurationController,
AccessibilityController accessibilityController,
+ KeyguardBypassController bypassController,
+ NotificationWakeUpCoordinator wakeUpCoordinator,
KeyguardMonitor keyguardMonitor,
@Nullable DockManager dockManager,
@Named(MAIN_HANDLER_NAME) Handler mainHandler) {
@@ -160,6 +168,8 @@
mAccessibilityController = accessibilityController;
mConfigurationController = configurationController;
mStatusBarStateController = statusBarStateController;
+ mBypassController = bypassController;
+ mWakeUpCoordinator = wakeUpCoordinator;
mKeyguardMonitor = keyguardMonitor;
mDockManager = dockManager;
mMainHandler = mainHandler;
@@ -173,6 +183,7 @@
mKeyguardMonitor.addCallback(mKeyguardMonitorCallback);
mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback);
mUnlockMethodCache.addListener(this);
+ mWakeUpCoordinator.addListener(this);
mSimLocked = mKeyguardUpdateMonitor.isSimPinSecure();
if (mDockManager != null) {
mDockManager.addListener(mDockEventListener);
@@ -187,6 +198,7 @@
mConfigurationController.removeCallback(this);
mKeyguardUpdateMonitor.removeCallback(mUpdateMonitorCallback);
mKeyguardMonitor.removeCallback(mKeyguardMonitorCallback);
+ mWakeUpCoordinator.removeFullyHiddenChangedListener(this);
mUnlockMethodCache.removeListener(this);
if (mDockManager != null) {
mDockManager.removeListener(mDockEventListener);
@@ -279,6 +291,12 @@
boolean onAodNotPulsingOrDocked = mDozing && (!mPulsing || mDocked);
boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning
|| mShowingLaunchAffordance;
+ if (mBypassController.getBypassEnabled()
+ && mStatusBarStateController.getState() == StatusBarState.KEYGUARD
+ && !mWakeUpCoordinator.getNotificationsFullyHidden()
+ && !mBouncerShowing) {
+ invisible = true;
+ }
setVisibility(invisible ? INVISIBLE : VISIBLE);
updateClickability();
}
@@ -369,6 +387,20 @@
return -1;
}
+ @Override
+ public void onFullyHiddenChanged(boolean isFullyHidden) {
+ if (mBypassController.getBypassEnabled()) {
+ update();
+ }
+ }
+
+ public void setBouncerShowing(boolean bouncerShowing) {
+ mBouncerShowing = bouncerShowing;
+ if (mBypassController.getBypassEnabled()) {
+ update();
+ }
+ }
+
@Retention(RetentionPolicy.SOURCE)
@IntDef({ERROR, UNLOCK, LOCK, SCANNING, LOCK_IN})
@interface LockAnimIndex {}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java
index 4fb5b98..5310a54 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java
@@ -29,6 +29,7 @@
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationUtils;
+import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
@@ -41,7 +42,8 @@
* normally reserved for notifications.
*/
public class NotificationIconAreaController implements DarkReceiver,
- StatusBarStateController.StateListener {
+ StatusBarStateController.StateListener,
+ NotificationWakeUpCoordinator.WakeUpListener {
public static final String HIGH_PRIORITY = "high_priority";
private static final long AOD_ICONS_APPEAR_DURATION = 200;
@@ -51,6 +53,8 @@
private final Runnable mUpdateStatusBarIcons = this::updateStatusBarIcons;
private final StatusBarStateController mStatusBarStateController;
private final NotificationMediaManager mMediaManager;
+ private final NotificationWakeUpCoordinator mWakeUpCoordinator;
+ private final KeyguardBypassController mBypassController;
private final DozeParameters mDozeParameters;
@VisibleForTesting
final NotificationListener.NotificationSettingsListener mSettingsListener =
@@ -91,6 +95,8 @@
public NotificationIconAreaController(Context context, StatusBar statusBar,
StatusBarStateController statusBarStateController,
+ NotificationWakeUpCoordinator wakeUpCoordinator,
+ KeyguardBypassController keyguardBypassController,
NotificationListener notificationListener,
NotificationMediaManager notificationMediaManager) {
mStatusBar = statusBar;
@@ -102,6 +108,9 @@
mMediaManager = notificationMediaManager;
notificationListener.addNotificationSettingsListener(mSettingsListener);
mDozeParameters = DozeParameters.getInstance(mContext);
+ mWakeUpCoordinator = wakeUpCoordinator;
+ wakeUpCoordinator.addListener(this);
+ mBypassController = keyguardBypassController;
initializeNotificationAreaViews(context);
reloadAodColor();
@@ -238,7 +247,8 @@
protected boolean shouldShowNotificationIcon(NotificationEntry entry,
boolean showAmbient, boolean showLowPriority, boolean hideDismissed,
- boolean hideRepliedMessages, boolean hideCurrentMedia, boolean hideCenteredIcon) {
+ boolean hideRepliedMessages, boolean hideCurrentMedia, boolean hideCenteredIcon,
+ boolean hidePulsing) {
final boolean isCenteredNotificationIcon = entry.centeredIcon != null
&& Objects.equals(entry.centeredIcon, mCenteredIconView);
@@ -270,6 +280,9 @@
if (!showAmbient && entry.shouldSuppressStatusBar()) {
return false;
}
+ if (hidePulsing && entry.showingPulsing()) {
+ return false;
+ }
return true;
}
@@ -292,7 +305,8 @@
false /* hideDismissed */,
false /* hideRepliedMessages */,
false /* hideCurrentMedia */,
- true /* hide centered icon */);
+ true /* hide centered icon */,
+ false /* hidePulsing */);
}
public void updateStatusBarIcons() {
@@ -302,7 +316,8 @@
true /* hideDismissed */,
true /* hideRepliedMessages */,
false /* hideCurrentMedia */,
- true /* hide centered icon */);
+ true /* hide centered icon */,
+ false /* hidePulsing */);
}
private void updateCenterIcon() {
@@ -312,7 +327,8 @@
false /* hideDismissed */,
false /* hideRepliedMessages */,
false /* hideCurrentMedia */,
- false /* hide centered icon */);
+ false /* hide centered icon */,
+ false /* hidePulsing */);
}
public void updateAodIcons() {
@@ -322,7 +338,8 @@
true /* hideDismissed */,
true /* hideRepliedMessages */,
true /* hideCurrentMedia */,
- true /* hide centered icon */);
+ true /* hide centered icon */,
+ mBypassController.getBypassEnabled() /* hidePulsing */);
}
@VisibleForTesting
@@ -338,11 +355,12 @@
* @param showAmbient should ambient notification icons be shown
* @param hideDismissed should dismissed icons be hidden
* @param hideRepliedMessages should messages that have been replied to be hidden
+ * @param hidePulsing should pulsing notifications be hidden
*/
private void updateIconsForLayout(Function<NotificationEntry, StatusBarIconView> function,
NotificationIconContainer hostLayout, boolean showAmbient, boolean showLowPriority,
boolean hideDismissed, boolean hideRepliedMessages, boolean hideCurrentMedia,
- boolean hideCenteredIcon) {
+ boolean hideCenteredIcon, boolean hidePulsing) {
ArrayList<StatusBarIconView> toShow = new ArrayList<>(
mNotificationScrollLayout.getChildCount());
@@ -352,7 +370,7 @@
if (view instanceof ExpandableNotificationRow) {
NotificationEntry ent = ((ExpandableNotificationRow) view).getEntry();
if (shouldShowNotificationIcon(ent, showAmbient, showLowPriority, hideDismissed,
- hideRepliedMessages, hideCurrentMedia, hideCenteredIcon)) {
+ hideRepliedMessages, hideCurrentMedia, hideCenteredIcon, hidePulsing)) {
StatusBarIconView iconView = function.apply(ent);
if (iconView != null) {
toShow.add(iconView);
@@ -514,6 +532,7 @@
@Override
public void onStateChanged(int newState) {
+ updateAodIconsVisibility();
updateAnimations();
}
@@ -562,17 +581,31 @@
}
}
- public void setFullyHidden(boolean fullyHidden) {
- if (mFullyHidden != fullyHidden) {
- mFullyHidden = fullyHidden;
- if (fullyHidden) {
- appearAodIcons();
- }
+ @Override
+ public void onFullyHiddenChanged(boolean fullyHidden) {
+ if (fullyHidden && !mBypassController.getBypassEnabled()) {
+ appearAodIcons();
+ }
+ updateAodIconsVisibility();
+ updateAodIcons();
+ }
+
+ @Override
+ public void onPulseExpansionChanged(boolean expandingChanged) {
+ if (expandingChanged) {
updateAodIconsVisibility();
}
}
private void updateAodIconsVisibility() {
- mAodIcons.setVisibility(mFullyHidden ? View.VISIBLE : View.INVISIBLE);
+ boolean visible = mBypassController.getBypassEnabled()
+ || mWakeUpCoordinator.getNotificationsFullyHidden();
+ if (mStatusBarStateController.getState() != StatusBarState.KEYGUARD) {
+ visible = false;
+ }
+ if (visible && mWakeUpCoordinator.isPulseExpanding()) {
+ visible = false;
+ }
+ mAodIcons.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index fa401fe..e805575 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -113,7 +113,8 @@
KeyguardAffordanceHelper.Callback, NotificationStackScrollLayout.OnEmptySpaceClickListener,
OnHeadsUpChangedListener, QS.HeightListener, ZenModeController.Callback,
ConfigurationController.ConfigurationListener, StateListener,
- PulseExpansionHandler.ExpansionCallback, DynamicPrivacyController.Listener {
+ PulseExpansionHandler.ExpansionCallback, DynamicPrivacyController.Listener,
+ NotificationWakeUpCoordinator.WakeUpListener {
private static final boolean DEBUG = false;
@@ -429,16 +430,16 @@
mWakeUpCoordinator.setStackScroller(mNotificationStackScroller);
mQsFrame = findViewById(R.id.qs_frame);
mPulseExpansionHandler.setUp(mNotificationStackScroller, this, mShadeController);
-
-
- mNotificationStackScroller.setOnPulseHeightChangedListener(
- () -> {
- if (mKeyguardBypassController.getBypassEnabled()) {
- // Position the notifications while dragging down while pulsing
- requestScrollerTopPaddingUpdate(false /* animate */);
- updateQSPulseExpansion();
- }
- });
+ mWakeUpCoordinator.addListener(new NotificationWakeUpCoordinator.WakeUpListener() {
+ @Override
+ public void onPulseExpansionChanged(boolean expandingChanged) {
+ if (mKeyguardBypassController.getBypassEnabled()) {
+ // Position the notifications while dragging down while pulsing
+ requestScrollerTopPaddingUpdate(false /* animate */);
+ updateQSPulseExpansion();
+ }
+ }
+ });
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 2d4c1aa..96e7efe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -799,6 +799,7 @@
mNotificationIconAreaController = SystemUIFactory.getInstance()
.createNotificationIconAreaController(context, this,
+ mWakeUpCoordinator, mKeyguardBypassController,
mStatusBarStateController, mNotificationListener);
mWakeUpCoordinator.setIconAreaController(mNotificationIconAreaController);
inflateShelf();
@@ -3572,6 +3573,8 @@
public void setBouncerShowing(boolean bouncerShowing) {
mBouncerShowing = bouncerShowing;
mKeyguardBypassController.setBouncerShowing(bouncerShowing);
+ mPulseExpansionHandler.setBouncerShowing(bouncerShowing);
+ mStatusBarWindow.setBouncerShowing(bouncerShowing);
if (mStatusBarView != null) mStatusBarView.setBouncerShowing(bouncerShowing);
updateHideIconsForBouncer(true /* animate */);
mCommandQueue.recomputeDisableFlags(mDisplayId, true /* animate */);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 9417295..a82e14e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -525,6 +525,12 @@
mBypassController = bypassController;
}
+ public void setBouncerShowing(boolean bouncerShowing) {
+ if (mLockIcon != null) {
+ mLockIcon.setBouncerShowing(bouncerShowing);
+ }
+ }
+
public class LayoutParams extends FrameLayout.LayoutParams {
public boolean ignoreRightInset;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java
index 61b7530..b1d5d26 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java
@@ -33,12 +33,12 @@
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationMediaManager;
+import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@SmallTest
@@ -57,6 +57,10 @@
@Mock
StatusBarStateController mStatusBarStateController;
@Mock
+ NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
+ @Mock
+ KeyguardBypassController mBypassController;
+ @Mock
private NotificationMediaManager mMediaManager;
private NotificationIconAreaController mController;
@@ -67,7 +71,8 @@
when(mStatusBarWindowView.findViewById(R.id.clock_notification_icon_container)).thenReturn(
mIconContainer);
mController = new NotificationIconAreaController(mContext, mStatusBar,
- mStatusBarStateController, mListener, mMediaManager);
+ mStatusBarStateController, mNotificationWakeUpCoordinator, mBypassController,
+ mListener, mMediaManager);
}
@Test