Loading libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java +14 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.service.dreams.Flags.dismissDreamOnKeyguardDismiss; import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_APPEARING; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_LOCKED; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_OCCLUDING; Loading Loading @@ -83,6 +84,7 @@ public class KeyguardTransitionHandler * @see KeyguardTransitions */ private IRemoteTransition mExitTransition = null; private IRemoteTransition mAppearTransition = null; private IRemoteTransition mOccludeTransition = null; private IRemoteTransition mOccludeByDreamTransition = null; private IRemoteTransition mUnoccludeTransition = null; Loading Loading @@ -170,26 +172,28 @@ public class KeyguardTransitionHandler // Choose a transition applicable for the changes and keyguard state. if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_GOING_AWAY) != 0) { return startAnimation(mExitTransition, "going-away", return startAnimation(mExitTransition, "going-away", transition, info, startTransaction, finishTransaction, finishCallback); } if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_APPEARING) != 0) { return startAnimation(mAppearTransition, "appearing", transition, info, startTransaction, finishTransaction, finishCallback); } // Occlude/unocclude animations are only played if the keyguard is locked. if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_LOCKED) != 0) { if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_OCCLUDING) != 0) { if (hasOpeningDream(info)) { return startAnimation(mOccludeByDreamTransition, "occlude-by-dream", return startAnimation(mOccludeByDreamTransition, "occlude-by-dream", transition, info, startTransaction, finishTransaction, finishCallback); } else { return startAnimation(mOccludeTransition, "occlude", return startAnimation(mOccludeTransition, "occlude", transition, info, startTransaction, finishTransaction, finishCallback); } } else if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_UNOCCLUDING) != 0) { return startAnimation(mUnoccludeTransition, "unocclude", return startAnimation(mUnoccludeTransition, "unocclude", transition, info, startTransaction, finishTransaction, finishCallback); } } Loading Loading @@ -359,11 +363,13 @@ public class KeyguardTransitionHandler @Override public void register( IRemoteTransition exitTransition, IRemoteTransition appearTransition, IRemoteTransition occludeTransition, IRemoteTransition occludeByDreamTransition, IRemoteTransition unoccludeTransition) { mMainExecutor.execute(() -> { mExitTransition = exitTransition; mAppearTransition = appearTransition; mOccludeTransition = occludeTransition; mOccludeByDreamTransition = occludeByDreamTransition; mUnoccludeTransition = unoccludeTransition; Loading libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitions.java +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ public interface KeyguardTransitions { */ default void register( @NonNull IRemoteTransition unlockTransition, @NonNull IRemoteTransition appearTransition, @NonNull IRemoteTransition occludeTransition, @NonNull IRemoteTransition occludeByDreamTransition, @NonNull IRemoteTransition unoccludeTransition) {} Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +35 −3 Original line number Diff line number Diff line Loading @@ -1076,6 +1076,33 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, } }; /** * For now, the keyguard-appearing animation is a no-op, because we assume that this is * happening while the screen is already off or turning off. * * TODO(b/278086361): create an animation for keyguard appearing over a non-showWhenLocked * activity. */ private final IRemoteAnimationRunner.Stub mAppearAnimationRunner = new IRemoteAnimationRunner.Stub() { @Override public void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Log.e(TAG, "Failed to finish transition", e); } } @Override public void onAnimationCancelled() { } }; private final IRemoteAnimationRunner mOccludeAnimationRunner = new OccludeActivityLaunchRemoteAnimationRunner(mOccludeAnimationController); Loading Loading @@ -1164,7 +1191,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, finishedCallback.onAnimationFinished(); mOccludeByDreamAnimator = null; } catch (RemoteException e) { e.printStackTrace(); Log.e(TAG, "Failed to finish transition", e); } } }); Loading Loading @@ -1279,7 +1306,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mInteractionJankMonitor.end(CUJ_LOCKSCREEN_OCCLUSION); } catch (RemoteException e) { e.printStackTrace(); Log.e(TAG, "Failed to finish transition", e); } } }); Loading Loading @@ -1545,6 +1572,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mKeyguardTransitions.register( KeyguardService.wrap(this, getExitAnimationRunner()), KeyguardService.wrap(this, getAppearAnimationRunner()), KeyguardService.wrap(this, getOccludeAnimationRunner()), KeyguardService.wrap(this, getOccludeByDreamAnimationRunner()), KeyguardService.wrap(this, getUnoccludeAnimationRunner())); Loading Loading @@ -2123,6 +2151,10 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, return validatingRemoteAnimationRunner(mExitAnimationRunner); } public IRemoteAnimationRunner getAppearAnimationRunner() { return validatingRemoteAnimationRunner(mAppearAnimationRunner); } public IRemoteAnimationRunner getOccludeAnimationRunner() { if (KeyguardWmStateRefactor.isEnabled()) { return validatingRemoteAnimationRunner(mWmOcclusionManager.getOccludeAnimationRunner()); Loading Loading @@ -3356,7 +3388,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, } } catch (RemoteException e) { mSurfaceBehindRemoteAnimationRequested = false; e.printStackTrace(); Log.e(TAG, "Failed to report keyguardGoingAway", e); } } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java +14 −8 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.service.dreams.Flags.dismissDreamOnKeyguardDismiss; import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_APPEARING; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_LOCKED; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_OCCLUDING; Loading Loading @@ -83,6 +84,7 @@ public class KeyguardTransitionHandler * @see KeyguardTransitions */ private IRemoteTransition mExitTransition = null; private IRemoteTransition mAppearTransition = null; private IRemoteTransition mOccludeTransition = null; private IRemoteTransition mOccludeByDreamTransition = null; private IRemoteTransition mUnoccludeTransition = null; Loading Loading @@ -170,26 +172,28 @@ public class KeyguardTransitionHandler // Choose a transition applicable for the changes and keyguard state. if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_GOING_AWAY) != 0) { return startAnimation(mExitTransition, "going-away", return startAnimation(mExitTransition, "going-away", transition, info, startTransaction, finishTransaction, finishCallback); } if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_APPEARING) != 0) { return startAnimation(mAppearTransition, "appearing", transition, info, startTransaction, finishTransaction, finishCallback); } // Occlude/unocclude animations are only played if the keyguard is locked. if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_LOCKED) != 0) { if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_OCCLUDING) != 0) { if (hasOpeningDream(info)) { return startAnimation(mOccludeByDreamTransition, "occlude-by-dream", return startAnimation(mOccludeByDreamTransition, "occlude-by-dream", transition, info, startTransaction, finishTransaction, finishCallback); } else { return startAnimation(mOccludeTransition, "occlude", return startAnimation(mOccludeTransition, "occlude", transition, info, startTransaction, finishTransaction, finishCallback); } } else if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_UNOCCLUDING) != 0) { return startAnimation(mUnoccludeTransition, "unocclude", return startAnimation(mUnoccludeTransition, "unocclude", transition, info, startTransaction, finishTransaction, finishCallback); } } Loading Loading @@ -359,11 +363,13 @@ public class KeyguardTransitionHandler @Override public void register( IRemoteTransition exitTransition, IRemoteTransition appearTransition, IRemoteTransition occludeTransition, IRemoteTransition occludeByDreamTransition, IRemoteTransition unoccludeTransition) { mMainExecutor.execute(() -> { mExitTransition = exitTransition; mAppearTransition = appearTransition; mOccludeTransition = occludeTransition; mOccludeByDreamTransition = occludeByDreamTransition; mUnoccludeTransition = unoccludeTransition; Loading
libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitions.java +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ public interface KeyguardTransitions { */ default void register( @NonNull IRemoteTransition unlockTransition, @NonNull IRemoteTransition appearTransition, @NonNull IRemoteTransition occludeTransition, @NonNull IRemoteTransition occludeByDreamTransition, @NonNull IRemoteTransition unoccludeTransition) {} Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +35 −3 Original line number Diff line number Diff line Loading @@ -1076,6 +1076,33 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, } }; /** * For now, the keyguard-appearing animation is a no-op, because we assume that this is * happening while the screen is already off or turning off. * * TODO(b/278086361): create an animation for keyguard appearing over a non-showWhenLocked * activity. */ private final IRemoteAnimationRunner.Stub mAppearAnimationRunner = new IRemoteAnimationRunner.Stub() { @Override public void onAnimationStart(@WindowManager.TransitionOldType int transit, RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { try { finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Log.e(TAG, "Failed to finish transition", e); } } @Override public void onAnimationCancelled() { } }; private final IRemoteAnimationRunner mOccludeAnimationRunner = new OccludeActivityLaunchRemoteAnimationRunner(mOccludeAnimationController); Loading Loading @@ -1164,7 +1191,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, finishedCallback.onAnimationFinished(); mOccludeByDreamAnimator = null; } catch (RemoteException e) { e.printStackTrace(); Log.e(TAG, "Failed to finish transition", e); } } }); Loading Loading @@ -1279,7 +1306,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mInteractionJankMonitor.end(CUJ_LOCKSCREEN_OCCLUSION); } catch (RemoteException e) { e.printStackTrace(); Log.e(TAG, "Failed to finish transition", e); } } }); Loading Loading @@ -1545,6 +1572,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mKeyguardTransitions.register( KeyguardService.wrap(this, getExitAnimationRunner()), KeyguardService.wrap(this, getAppearAnimationRunner()), KeyguardService.wrap(this, getOccludeAnimationRunner()), KeyguardService.wrap(this, getOccludeByDreamAnimationRunner()), KeyguardService.wrap(this, getUnoccludeAnimationRunner())); Loading Loading @@ -2123,6 +2151,10 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, return validatingRemoteAnimationRunner(mExitAnimationRunner); } public IRemoteAnimationRunner getAppearAnimationRunner() { return validatingRemoteAnimationRunner(mAppearAnimationRunner); } public IRemoteAnimationRunner getOccludeAnimationRunner() { if (KeyguardWmStateRefactor.isEnabled()) { return validatingRemoteAnimationRunner(mWmOcclusionManager.getOccludeAnimationRunner()); Loading Loading @@ -3356,7 +3388,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, } } catch (RemoteException e) { mSurfaceBehindRemoteAnimationRequested = false; e.printStackTrace(); Log.e(TAG, "Failed to report keyguardGoingAway", e); } } Loading