From 9934a78d4712ce26a2d9bfa7d95221a2b9133855 Mon Sep 17 00:00:00 2001 From: Issei Suzuki Date: Wed, 10 Mar 2021 11:07:28 +0100 Subject: [PATCH] Supress IKeygaurdSerivce#setOccluded binder call from WM. When remote animation is enabled for keygaurd (un)occluded status update, KeyguardServices recieves binder call via IRemoteAnimationRunner interface when occlusion status chagnes. The only place we need to keep IKeygaurdSerivce#setOccluded call is in ServiceConnection#onServiceConnected. This is used to synchronize keyguard occluded status in WM and SysUI process when SysUI process restarts, which is handled without any animation. Bug: 166736690 Test: atest AppTransitionTests Change-Id: Idf3a1dedb81be10eb2014f5da190750caf6b6869 --- .../com/android/systemui/keyguard/KeyguardService.java | 9 +++++++-- .../server/policy/keyguard/KeyguardServiceDelegate.java | 6 +++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java index 17f7ccf0d9672..97803c1cf2fd5 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java @@ -149,9 +149,14 @@ public class KeyguardService extends Service { RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps, IRemoteAnimationFinishedCallback finishedCallback) { - // TODO(bc-unlock): Calls KeyguardViewMediator#setOccluded to update the state and - // run animation. try { + if (transit == TRANSIT_OLD_KEYGUARD_OCCLUDE) { + mBinder.setOccluded(true /* isOccluded */, true /* animate */); + } else if (transit == TRANSIT_OLD_KEYGUARD_UNOCCLUDE) { + mBinder.setOccluded(false /* isOccluded */, true /* animate */); + } + // TODO(bc-unlock): Implement occlude/unocclude animation applied on apps, + // wallpapers and nonApps. finishedCallback.onAnimationFinished(); } catch (RemoteException e) { Slog.e(TAG, "RemoteException"); diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java index a95628f633ad1..44f14b4d5b0df 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java @@ -258,8 +258,12 @@ public class KeyguardServiceDelegate { } } + /** + * @deprecated Notify occlude status change via remote animation. + */ + @Deprecated public void setOccluded(boolean isOccluded, boolean animate) { - if (mKeyguardService != null) { + if (!WindowManagerService.sEnableRemoteKeyguardAnimation && mKeyguardService != null) { if (DEBUG) Log.v(TAG, "setOccluded(" + isOccluded + ") animate=" + animate); mKeyguardService.setOccluded(isOccluded, animate); }