Loading packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -2732,6 +2732,7 @@ public final class NotificationPanelViewController implements Dumpable { public void setIsLaunchAnimationRunning(boolean running) { public void setIsLaunchAnimationRunning(boolean running) { boolean wasRunning = mIsLaunchAnimationRunning; boolean wasRunning = mIsLaunchAnimationRunning; mIsLaunchAnimationRunning = running; mIsLaunchAnimationRunning = running; mCentralSurfaces.updateIsKeyguard(); if (wasRunning != mIsLaunchAnimationRunning) { if (wasRunning != mIsLaunchAnimationRunning) { mShadeExpansionStateManager.notifyLaunchingActivityChanged(running); mShadeExpansionStateManager.notifyLaunchingActivityChanged(running); } } Loading Loading @@ -3789,6 +3790,10 @@ public final class NotificationPanelViewController implements Dumpable { return mClosing || mIsLaunchAnimationRunning; return mClosing || mIsLaunchAnimationRunning; } } public boolean isLaunchAnimationRunning() { return mIsLaunchAnimationRunning; } public boolean isTracking() { public boolean isTracking() { return mTracking; return mTracking; } } Loading packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -301,9 +301,11 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW } } private void applyKeyguardFlags(NotificationShadeWindowState state) { private void applyKeyguardFlags(NotificationShadeWindowState state) { final boolean keyguardOrAod = state.keyguardShowing // Keyguard is visible if it's showing or if it's fading away (in which case we're animating // it out, but the wallpaper should remain visible as a backdrop for the animation); final boolean keyguardOrAodVisible = (state.keyguardShowing || state.keyguardFadingAway) || (state.dozing && mDozeParameters.getAlwaysOn()); || (state.dozing && mDozeParameters.getAlwaysOn()); if ((keyguardOrAod && !state.mediaBackdropShowing && !state.lightRevealScrimOpaque) if ((keyguardOrAodVisible && !state.mediaBackdropShowing && !state.lightRevealScrimOpaque) || mKeyguardViewMediator.isAnimatingBetweenKeyguardAndSurfaceBehind()) { || mKeyguardViewMediator.isAnimatingBetweenKeyguardAndSurfaceBehind()) { // Show the wallpaper if we're on keyguard/AOD and the wallpaper is not occluded by a // Show the wallpaper if we're on keyguard/AOD and the wallpaper is not occluded by a // solid backdrop. Also, show it if we are currently animating between the // solid backdrop. Also, show it if we are currently animating between the Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -1007,6 +1007,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { // The light reveal scrim should always be fully revealed by the time the keyguard // The light reveal scrim should always be fully revealed by the time the keyguard // is done going away. Double check that this is true. // is done going away. Double check that this is true. if (!mKeyguardStateController.isKeyguardGoingAway()) { if (!mKeyguardStateController.isKeyguardGoingAway()) { updateIsKeyguard(); if (mLightRevealScrim.getRevealAmount() != 1f) { if (mLightRevealScrim.getRevealAmount() != 1f) { Log.e(TAG, "Keyguard is done going away, but someone left the light reveal " Log.e(TAG, "Keyguard is done going away, but someone left the light reveal " + "scrim at reveal amount: " + mLightRevealScrim.getRevealAmount()); + "scrim at reveal amount: " + mLightRevealScrim.getRevealAmount()); Loading Loading @@ -2893,6 +2895,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { showKeyguardImpl(); showKeyguardImpl(); } } } else { } else { final boolean isLaunchingOrGoingAway = mNotificationPanelViewController.isLaunchAnimationRunning() || mKeyguardStateController.isKeyguardGoingAway(); // During folding a foldable device this might be called as a result of // During folding a foldable device this might be called as a result of // 'onScreenTurnedOff' call for the inner display. // 'onScreenTurnedOff' call for the inner display. // In this case: // In this case: Loading @@ -2904,7 +2910,14 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { if (!mScreenOffAnimationController.isKeyguardHideDelayed() if (!mScreenOffAnimationController.isKeyguardHideDelayed() // If we're animating occluded, there's an activity launching over the keyguard // If we're animating occluded, there's an activity launching over the keyguard // UI. Wait to hide it until after the animation concludes. // UI. Wait to hide it until after the animation concludes. && !mKeyguardViewMediator.isOccludeAnimationPlaying()) { && !mKeyguardViewMediator.isOccludeAnimationPlaying() // If we're occluded, but playing an animation (launch or going away animations) // the keyguard is visible behind the animation. && !(mKeyguardStateController.isOccluded() && isLaunchingOrGoingAway)) { // If we're going away and occluded, it means we are launching over the // unsecured keyguard, which will subsequently go away. Wait to hide it until // after the animation concludes to avoid the lockscreen UI changing into the // shade UI behind the launch animation. return hideKeyguardImpl(forceStateChange); return hideKeyguardImpl(forceStateChange); } } } } Loading packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -222,6 +222,16 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue(); assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue(); } } @Test public void attach_fadingAway_wallpaperVisible() { clearInvocations(mWindowManager); mNotificationShadeWindowController.attach(); mNotificationShadeWindowController.setKeyguardFadingAway(true); verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture()); assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue(); } @Test @Test public void setBackgroundBlurRadius_expandedWithBlurs() { public void setBackgroundBlurRadius_expandedWithBlurs() { mNotificationShadeWindowController.setBackgroundBlurRadius(10); mNotificationShadeWindowController.setBackgroundBlurRadius(10); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -1286,6 +1286,18 @@ public class CentralSurfacesImplTest extends SysuiTestCase { verify(mPowerManagerService, never()).wakeUp(anyLong(), anyInt(), anyString(), anyString()); verify(mPowerManagerService, never()).wakeUp(anyLong(), anyInt(), anyString(), anyString()); } } @Test public void keyguard_notHidden_ifGoingAwayAndOccluded() { setKeyguardShowingAndOccluded(true /* showing */, false /* occluded */); when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true); when(mKeyguardStateController.isOccluded()).thenReturn(true); mCentralSurfaces.updateIsKeyguard(false); verify(mStatusBarStateController, never()).setState(eq(SHADE), anyBoolean()); } @Test @Test public void frpLockedDevice_shadeDisabled() { public void frpLockedDevice_shadeDisabled() { when(mDeviceProvisionedController.isFrpActive()).thenReturn(true); when(mDeviceProvisionedController.isFrpActive()).thenReturn(true); Loading Loading
packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -2732,6 +2732,7 @@ public final class NotificationPanelViewController implements Dumpable { public void setIsLaunchAnimationRunning(boolean running) { public void setIsLaunchAnimationRunning(boolean running) { boolean wasRunning = mIsLaunchAnimationRunning; boolean wasRunning = mIsLaunchAnimationRunning; mIsLaunchAnimationRunning = running; mIsLaunchAnimationRunning = running; mCentralSurfaces.updateIsKeyguard(); if (wasRunning != mIsLaunchAnimationRunning) { if (wasRunning != mIsLaunchAnimationRunning) { mShadeExpansionStateManager.notifyLaunchingActivityChanged(running); mShadeExpansionStateManager.notifyLaunchingActivityChanged(running); } } Loading Loading @@ -3789,6 +3790,10 @@ public final class NotificationPanelViewController implements Dumpable { return mClosing || mIsLaunchAnimationRunning; return mClosing || mIsLaunchAnimationRunning; } } public boolean isLaunchAnimationRunning() { return mIsLaunchAnimationRunning; } public boolean isTracking() { public boolean isTracking() { return mTracking; return mTracking; } } Loading
packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +4 −2 Original line number Original line Diff line number Diff line Loading @@ -301,9 +301,11 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW } } private void applyKeyguardFlags(NotificationShadeWindowState state) { private void applyKeyguardFlags(NotificationShadeWindowState state) { final boolean keyguardOrAod = state.keyguardShowing // Keyguard is visible if it's showing or if it's fading away (in which case we're animating // it out, but the wallpaper should remain visible as a backdrop for the animation); final boolean keyguardOrAodVisible = (state.keyguardShowing || state.keyguardFadingAway) || (state.dozing && mDozeParameters.getAlwaysOn()); || (state.dozing && mDozeParameters.getAlwaysOn()); if ((keyguardOrAod && !state.mediaBackdropShowing && !state.lightRevealScrimOpaque) if ((keyguardOrAodVisible && !state.mediaBackdropShowing && !state.lightRevealScrimOpaque) || mKeyguardViewMediator.isAnimatingBetweenKeyguardAndSurfaceBehind()) { || mKeyguardViewMediator.isAnimatingBetweenKeyguardAndSurfaceBehind()) { // Show the wallpaper if we're on keyguard/AOD and the wallpaper is not occluded by a // Show the wallpaper if we're on keyguard/AOD and the wallpaper is not occluded by a // solid backdrop. Also, show it if we are currently animating between the // solid backdrop. Also, show it if we are currently animating between the Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +14 −1 Original line number Original line Diff line number Diff line Loading @@ -1007,6 +1007,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { // The light reveal scrim should always be fully revealed by the time the keyguard // The light reveal scrim should always be fully revealed by the time the keyguard // is done going away. Double check that this is true. // is done going away. Double check that this is true. if (!mKeyguardStateController.isKeyguardGoingAway()) { if (!mKeyguardStateController.isKeyguardGoingAway()) { updateIsKeyguard(); if (mLightRevealScrim.getRevealAmount() != 1f) { if (mLightRevealScrim.getRevealAmount() != 1f) { Log.e(TAG, "Keyguard is done going away, but someone left the light reveal " Log.e(TAG, "Keyguard is done going away, but someone left the light reveal " + "scrim at reveal amount: " + mLightRevealScrim.getRevealAmount()); + "scrim at reveal amount: " + mLightRevealScrim.getRevealAmount()); Loading Loading @@ -2893,6 +2895,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { showKeyguardImpl(); showKeyguardImpl(); } } } else { } else { final boolean isLaunchingOrGoingAway = mNotificationPanelViewController.isLaunchAnimationRunning() || mKeyguardStateController.isKeyguardGoingAway(); // During folding a foldable device this might be called as a result of // During folding a foldable device this might be called as a result of // 'onScreenTurnedOff' call for the inner display. // 'onScreenTurnedOff' call for the inner display. // In this case: // In this case: Loading @@ -2904,7 +2910,14 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { if (!mScreenOffAnimationController.isKeyguardHideDelayed() if (!mScreenOffAnimationController.isKeyguardHideDelayed() // If we're animating occluded, there's an activity launching over the keyguard // If we're animating occluded, there's an activity launching over the keyguard // UI. Wait to hide it until after the animation concludes. // UI. Wait to hide it until after the animation concludes. && !mKeyguardViewMediator.isOccludeAnimationPlaying()) { && !mKeyguardViewMediator.isOccludeAnimationPlaying() // If we're occluded, but playing an animation (launch or going away animations) // the keyguard is visible behind the animation. && !(mKeyguardStateController.isOccluded() && isLaunchingOrGoingAway)) { // If we're going away and occluded, it means we are launching over the // unsecured keyguard, which will subsequently go away. Wait to hide it until // after the animation concludes to avoid the lockscreen UI changing into the // shade UI behind the launch animation. return hideKeyguardImpl(forceStateChange); return hideKeyguardImpl(forceStateChange); } } } } Loading
packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +10 −0 Original line number Original line Diff line number Diff line Loading @@ -222,6 +222,16 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue(); assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue(); } } @Test public void attach_fadingAway_wallpaperVisible() { clearInvocations(mWindowManager); mNotificationShadeWindowController.attach(); mNotificationShadeWindowController.setKeyguardFadingAway(true); verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture()); assertThat((mLayoutParameters.getValue().flags & FLAG_SHOW_WALLPAPER) != 0).isTrue(); } @Test @Test public void setBackgroundBlurRadius_expandedWithBlurs() { public void setBackgroundBlurRadius_expandedWithBlurs() { mNotificationShadeWindowController.setBackgroundBlurRadius(10); mNotificationShadeWindowController.setBackgroundBlurRadius(10); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -1286,6 +1286,18 @@ public class CentralSurfacesImplTest extends SysuiTestCase { verify(mPowerManagerService, never()).wakeUp(anyLong(), anyInt(), anyString(), anyString()); verify(mPowerManagerService, never()).wakeUp(anyLong(), anyInt(), anyString(), anyString()); } } @Test public void keyguard_notHidden_ifGoingAwayAndOccluded() { setKeyguardShowingAndOccluded(true /* showing */, false /* occluded */); when(mKeyguardStateController.isKeyguardGoingAway()).thenReturn(true); when(mKeyguardStateController.isOccluded()).thenReturn(true); mCentralSurfaces.updateIsKeyguard(false); verify(mStatusBarStateController, never()).setState(eq(SHADE), anyBoolean()); } @Test @Test public void frpLockedDevice_shadeDisabled() { public void frpLockedDevice_shadeDisabled() { when(mDeviceProvisionedController.isFrpActive()).thenReturn(true); when(mDeviceProvisionedController.isFrpActive()).thenReturn(true); Loading