summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robin Lee <rgl@google.com> 2023-06-01 21:56:31 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-06-01 21:56:31 +0000
commit14aa28a5e12b8208f730d5c82ed5ea8ccdc30eb2 (patch)
tree617c89f313d0b3e1bc1053f16355b64cbebeacfe
parentaa75cf24cab90d3bb552af697017e5261639bfe9 (diff)
Revert "Revert "Hide keyguard earlier when exiting lockscreen""
This reverts commit aa75cf24cab90d3bb552af697017e5261639bfe9. Reason for revert: Reverted with incorrect justification Bug: 285395021 Change-Id: I353ce81ede781d2b8611b1343ee0d964fbca6408
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java19
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt6
4 files changed, 33 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
index a8d22c48e709..ac408a2abcab 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java
@@ -159,7 +159,8 @@ public class KeyguardService extends Service {
// Wrap Keyguard going away animation.
// Note: Also used for wrapping occlude by Dream animation. It works (with some redundancy).
- public static IRemoteTransition wrap(IRemoteAnimationRunner runner) {
+ public static IRemoteTransition wrap(IRemoteAnimationRunner runner,
+ boolean lockscreenLiveWallpaperEnabled) {
return new IRemoteTransition.Stub() {
private final ArrayMap<SurfaceControl, SurfaceControl> mLeashMap = new ArrayMap<>();
@@ -188,7 +189,9 @@ public class KeyguardService extends Service {
}
}
initAlphaForAnimationTargets(t, apps);
- initAlphaForAnimationTargets(t, wallpapers);
+ if (lockscreenLiveWallpaperEnabled) {
+ initAlphaForAnimationTargets(t, wallpapers);
+ }
t.apply();
mFinishCallback = finishCallback;
runner.onAnimationStart(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt
index 29a7fe7d061a..c616992cb523 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.ValueAnimator
+import android.app.WallpaperManager
import android.content.Context
import android.graphics.Matrix
import android.graphics.Rect
@@ -148,7 +149,8 @@ class KeyguardUnlockAnimationController @Inject constructor(
private val biometricUnlockControllerLazy: Lazy<BiometricUnlockController>,
private val statusBarStateController: SysuiStatusBarStateController,
private val notificationShadeWindowController: NotificationShadeWindowController,
- private val powerManager: PowerManager
+ private val powerManager: PowerManager,
+ private val wallpaperManager: WallpaperManager
) : KeyguardStateController.Callback, ISysuiUnlockAnimationController.Stub() {
interface KeyguardUnlockAnimationListener {
@@ -679,8 +681,10 @@ class KeyguardUnlockAnimationController @Inject constructor(
return@postDelayed
}
- if (wallpaperTargets != null) {
- fadeInWallpaper()
+ if ((wallpaperTargets?.isNotEmpty() == true) &&
+ wallpaperManager.isLockscreenLiveWallpaperEnabled()) {
+ fadeInWallpaper()
+ hideKeyguardViewAfterRemoteAnimation()
} else {
keyguardViewMediator.get().exitKeyguardAndFinishSurfaceBehindRemoteAnimation(
false /* cancelled */)
@@ -954,7 +958,7 @@ class KeyguardUnlockAnimationController @Inject constructor(
0 /* fadeOutDuration */
)
} else {
- Log.e(TAG, "#hideKeyguardViewAfterRemoteAnimation called when keyguard view is not " +
+ Log.i(TAG, "#hideKeyguardViewAfterRemoteAnimation called when keyguard view is not " +
"showing. Ignoring...")
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 3b40d8602e6f..9e1f461ef60b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -45,6 +45,7 @@ import android.app.AlarmManager;
import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.app.StatusBarManager;
+import android.app.WallpaperManager;
import android.app.WindowConfiguration;
import android.app.trust.TrustManager;
import android.content.BroadcastReceiver;
@@ -280,6 +281,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
private AlarmManager mAlarmManager;
private AudioManager mAudioManager;
private StatusBarManager mStatusBarManager;
+ private WallpaperManager mWallpaperManager;
private final IStatusBarService mStatusBarService;
private final IBinder mStatusBarDisableToken = new Binder();
private final UserTracker mUserTracker;
@@ -1350,11 +1352,12 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
setShowingLocked(false /* showing */, true /* forceCallbacks */);
}
+ boolean isLockscreenLwpEnabled = getWallpaperManager().isLockscreenLiveWallpaperEnabled();
mKeyguardTransitions.register(
- KeyguardService.wrap(getExitAnimationRunner()),
- KeyguardService.wrap(getOccludeAnimationRunner()),
- KeyguardService.wrap(getOccludeByDreamAnimationRunner()),
- KeyguardService.wrap(getUnoccludeAnimationRunner()));
+ KeyguardService.wrap(getExitAnimationRunner(), isLockscreenLwpEnabled),
+ KeyguardService.wrap(getOccludeAnimationRunner(), isLockscreenLwpEnabled),
+ KeyguardService.wrap(getOccludeByDreamAnimationRunner(), isLockscreenLwpEnabled),
+ KeyguardService.wrap(getUnoccludeAnimationRunner(), isLockscreenLwpEnabled));
final ContentResolver cr = mContext.getContentResolver();
@@ -1400,6 +1403,14 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mWorkLockController = new WorkLockActivityController(mContext, mUserTracker);
}
+ // TODO(b/273443374) remove, temporary util to get a feature flag
+ private WallpaperManager getWallpaperManager() {
+ if (mWallpaperManager == null) {
+ mWallpaperManager = mContext.getSystemService(WallpaperManager.class);
+ }
+ return mWallpaperManager;
+ }
+
@Override
public void start() {
synchronized (this) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt
index 477e076669b7..001f81af5c2b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt
@@ -1,6 +1,7 @@
package com.android.systemui.keyguard
import android.app.ActivityManager
+import android.app.WallpaperManager
import android.app.WindowConfiguration
import android.graphics.Point
import android.graphics.Rect
@@ -64,6 +65,8 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
private lateinit var notificationShadeWindowController: NotificationShadeWindowController
@Mock
private lateinit var powerManager: PowerManager
+ @Mock
+ private lateinit var wallpaperManager: WallpaperManager
@Mock
private lateinit var launcherUnlockAnimationController: ILauncherUnlockAnimationController.Stub
@@ -94,13 +97,14 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
keyguardUnlockAnimationController = KeyguardUnlockAnimationController(
context, keyguardStateController, { keyguardViewMediator }, keyguardViewController,
featureFlags, { biometricUnlockController }, statusBarStateController,
- notificationShadeWindowController, powerManager
+ notificationShadeWindowController, powerManager, wallpaperManager
)
keyguardUnlockAnimationController.setLauncherUnlockController(
launcherUnlockAnimationController)
whenever(keyguardViewController.viewRootImpl).thenReturn(mock(ViewRootImpl::class.java))
whenever(powerManager.isInteractive).thenReturn(true)
+ whenever(wallpaperManager.isLockscreenLiveWallpaperEnabled).thenReturn(false)
// All of these fields are final, so we can't mock them, but are needed so that the surface
// appear amount setter doesn't short circuit.