diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 7d69a349f01d6..9b0307d6522ef 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -94,6 +94,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mLastBouncerDismissible; protected boolean mLastRemoteInputActive; private boolean mLastDozing; + private boolean mLastDeferScrimFadeOut; private OnDismissAction mAfterKeyguardGoneAction; private final ArrayList mAfterKeyguardGoneRunnables = new ArrayList<>(); @@ -371,7 +372,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration); mFingerprintUnlockController.startKeyguardFadingAway(); mBouncer.hide(true /* destroyView */); - updateStates(); if (wakeUnlockPulsing) { mStatusBarWindowManager.setKeyguardFadingAway(true); mStatusBar.fadeKeyguardWhilePulsing(); @@ -403,6 +403,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mFingerprintUnlockController.finishKeyguardFadingAway(); } } + updateStates(); mStatusBarWindowManager.setKeyguardShowing(false); mViewMediatorCallback.keyguardGone(); } @@ -574,7 +575,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mLastBouncerDismissible = bouncerDismissible; mLastRemoteInputActive = remoteInputActive; mLastDozing = mDozing; - + mLastDeferScrimFadeOut = mDeferScrimFadeOut; mStatusBar.onKeyguardViewManagerStatesUpdated(); } @@ -582,15 +583,16 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb * @return Whether the navigation bar should be made visible based on the current state. */ protected boolean isNavBarVisible() { - return !(mShowing && !mOccluded) && !mDozing || mBouncer.isShowing() || mRemoteInputActive; + return (!(mShowing && !mOccluded) && !mDozing || mBouncer.isShowing() || mRemoteInputActive) + && !mDeferScrimFadeOut; } /** * @return Whether the navigation bar was made visible based on the last known state. */ protected boolean getLastNavBarVisible() { - return !(mLastShowing && !mLastOccluded) && !mLastDozing || mLastBouncerShowing - || mLastRemoteInputActive; + return (!(mLastShowing && !mLastOccluded) && !mLastDozing || mLastBouncerShowing + || mLastRemoteInputActive) && !mLastDeferScrimFadeOut; } public boolean shouldDismissOnMenuPressed() { diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 4bc3725fecab2..126e3ec302893 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3052,13 +3052,18 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (PRINT_ANIM) Log.i(TAG, "selectAnimation in " + win + ": transit=" + transit); if (win == mStatusBar) { - boolean isKeyguard = (win.getAttrs().privateFlags & PRIVATE_FLAG_KEYGUARD) != 0; + final boolean isKeyguard = (win.getAttrs().privateFlags & PRIVATE_FLAG_KEYGUARD) != 0; + final boolean expanded = win.getAttrs().height == MATCH_PARENT + && win.getAttrs().width == MATCH_PARENT; + if (isKeyguard || expanded) { + return -1; + } if (transit == TRANSIT_EXIT || transit == TRANSIT_HIDE) { - return isKeyguard ? -1 : R.anim.dock_top_exit; + return R.anim.dock_top_exit; } else if (transit == TRANSIT_ENTER || transit == TRANSIT_SHOW) { - return isKeyguard ? -1 : R.anim.dock_top_enter; + return R.anim.dock_top_enter; } } else if (win == mNavigationBar) { if (win.getAttrs().windowAnimations != 0) { @@ -6793,7 +6798,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public boolean isScreenOn() { - return mScreenOnFully; + synchronized (mLock) { + return mScreenOnEarly; + } } /** {@inheritDoc} */