Merge "Hide keyguard earlier when exiting lockscreen" into udc-dev am: 049923ceca
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23515616 Change-Id: I99777acc136d91c5bfb41da9ae2805bf60fcf460 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -182,7 +182,8 @@ public class KeyguardService extends Service {
|
|||||||
|
|
||||||
// Wrap Keyguard going away animation.
|
// Wrap Keyguard going away animation.
|
||||||
// Note: Also used for wrapping occlude by Dream animation. It works (with some redundancy).
|
// 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() {
|
return new IRemoteTransition.Stub() {
|
||||||
|
|
||||||
private final ArrayMap<SurfaceControl, SurfaceControl> mLeashMap = new ArrayMap<>();
|
private final ArrayMap<SurfaceControl, SurfaceControl> mLeashMap = new ArrayMap<>();
|
||||||
@@ -213,7 +214,9 @@ public class KeyguardService extends Service {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
initAlphaForAnimationTargets(t, apps);
|
initAlphaForAnimationTargets(t, apps);
|
||||||
initAlphaForAnimationTargets(t, wallpapers);
|
if (lockscreenLiveWallpaperEnabled) {
|
||||||
|
initAlphaForAnimationTargets(t, wallpapers);
|
||||||
|
}
|
||||||
t.apply();
|
t.apply();
|
||||||
mFinishCallback = finishCallback;
|
mFinishCallback = finishCallback;
|
||||||
runner.onAnimationStart(
|
runner.onAnimationStart(
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard
|
|||||||
import android.animation.Animator
|
import android.animation.Animator
|
||||||
import android.animation.AnimatorListenerAdapter
|
import android.animation.AnimatorListenerAdapter
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
|
import android.app.WallpaperManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Matrix
|
import android.graphics.Matrix
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
@@ -148,7 +149,8 @@ class KeyguardUnlockAnimationController @Inject constructor(
|
|||||||
private val biometricUnlockControllerLazy: Lazy<BiometricUnlockController>,
|
private val biometricUnlockControllerLazy: Lazy<BiometricUnlockController>,
|
||||||
private val statusBarStateController: SysuiStatusBarStateController,
|
private val statusBarStateController: SysuiStatusBarStateController,
|
||||||
private val notificationShadeWindowController: NotificationShadeWindowController,
|
private val notificationShadeWindowController: NotificationShadeWindowController,
|
||||||
private val powerManager: PowerManager
|
private val powerManager: PowerManager,
|
||||||
|
private val wallpaperManager: WallpaperManager
|
||||||
) : KeyguardStateController.Callback, ISysuiUnlockAnimationController.Stub() {
|
) : KeyguardStateController.Callback, ISysuiUnlockAnimationController.Stub() {
|
||||||
|
|
||||||
interface KeyguardUnlockAnimationListener {
|
interface KeyguardUnlockAnimationListener {
|
||||||
@@ -686,8 +688,10 @@ class KeyguardUnlockAnimationController @Inject constructor(
|
|||||||
return@postDelayed
|
return@postDelayed
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wallpaperTargets != null) {
|
if ((wallpaperTargets?.isNotEmpty() == true) &&
|
||||||
fadeInWallpaper()
|
wallpaperManager.isLockscreenLiveWallpaperEnabled()) {
|
||||||
|
fadeInWallpaper()
|
||||||
|
hideKeyguardViewAfterRemoteAnimation()
|
||||||
} else {
|
} else {
|
||||||
keyguardViewMediator.get().exitKeyguardAndFinishSurfaceBehindRemoteAnimation(
|
keyguardViewMediator.get().exitKeyguardAndFinishSurfaceBehindRemoteAnimation(
|
||||||
false /* cancelled */)
|
false /* cancelled */)
|
||||||
@@ -961,7 +965,7 @@ class KeyguardUnlockAnimationController @Inject constructor(
|
|||||||
0 /* fadeOutDuration */
|
0 /* fadeOutDuration */
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "#hideKeyguardViewAfterRemoteAnimation called when keyguard view is not " +
|
Log.i(TAG, "#hideKeyguardViewAfterRemoteAnimation called when keyguard view is not " +
|
||||||
"showing. Ignoring...")
|
"showing. Ignoring...")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import android.app.AlarmManager;
|
|||||||
import android.app.BroadcastOptions;
|
import android.app.BroadcastOptions;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.app.StatusBarManager;
|
import android.app.StatusBarManager;
|
||||||
|
import android.app.WallpaperManager;
|
||||||
import android.app.WindowConfiguration;
|
import android.app.WindowConfiguration;
|
||||||
import android.app.trust.TrustManager;
|
import android.app.trust.TrustManager;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
@@ -280,6 +281,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
private AlarmManager mAlarmManager;
|
private AlarmManager mAlarmManager;
|
||||||
private AudioManager mAudioManager;
|
private AudioManager mAudioManager;
|
||||||
private StatusBarManager mStatusBarManager;
|
private StatusBarManager mStatusBarManager;
|
||||||
|
private WallpaperManager mWallpaperManager;
|
||||||
private final IStatusBarService mStatusBarService;
|
private final IStatusBarService mStatusBarService;
|
||||||
private final IBinder mStatusBarDisableToken = new Binder();
|
private final IBinder mStatusBarDisableToken = new Binder();
|
||||||
private final UserTracker mUserTracker;
|
private final UserTracker mUserTracker;
|
||||||
@@ -1350,11 +1352,12 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
setShowingLocked(false /* showing */, true /* forceCallbacks */);
|
setShowingLocked(false /* showing */, true /* forceCallbacks */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isLockscreenLwpEnabled = getWallpaperManager().isLockscreenLiveWallpaperEnabled();
|
||||||
mKeyguardTransitions.register(
|
mKeyguardTransitions.register(
|
||||||
KeyguardService.wrap(getExitAnimationRunner()),
|
KeyguardService.wrap(getExitAnimationRunner(), isLockscreenLwpEnabled),
|
||||||
KeyguardService.wrap(getOccludeAnimationRunner()),
|
KeyguardService.wrap(getOccludeAnimationRunner(), isLockscreenLwpEnabled),
|
||||||
KeyguardService.wrap(getOccludeByDreamAnimationRunner()),
|
KeyguardService.wrap(getOccludeByDreamAnimationRunner(), isLockscreenLwpEnabled),
|
||||||
KeyguardService.wrap(getUnoccludeAnimationRunner()));
|
KeyguardService.wrap(getUnoccludeAnimationRunner(), isLockscreenLwpEnabled));
|
||||||
|
|
||||||
final ContentResolver cr = mContext.getContentResolver();
|
final ContentResolver cr = mContext.getContentResolver();
|
||||||
|
|
||||||
@@ -1400,6 +1403,14 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
|
|||||||
mWorkLockController = new WorkLockActivityController(mContext, mUserTracker);
|
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
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.android.systemui.keyguard
|
package com.android.systemui.keyguard
|
||||||
|
|
||||||
import android.app.ActivityManager
|
import android.app.ActivityManager
|
||||||
|
import android.app.WallpaperManager
|
||||||
import android.app.WindowConfiguration
|
import android.app.WindowConfiguration
|
||||||
import android.graphics.Point
|
import android.graphics.Point
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
@@ -64,6 +65,8 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
|
|||||||
private lateinit var notificationShadeWindowController: NotificationShadeWindowController
|
private lateinit var notificationShadeWindowController: NotificationShadeWindowController
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var powerManager: PowerManager
|
private lateinit var powerManager: PowerManager
|
||||||
|
@Mock
|
||||||
|
private lateinit var wallpaperManager: WallpaperManager
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var launcherUnlockAnimationController: ILauncherUnlockAnimationController.Stub
|
private lateinit var launcherUnlockAnimationController: ILauncherUnlockAnimationController.Stub
|
||||||
@@ -94,13 +97,14 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
|
|||||||
keyguardUnlockAnimationController = KeyguardUnlockAnimationController(
|
keyguardUnlockAnimationController = KeyguardUnlockAnimationController(
|
||||||
context, keyguardStateController, { keyguardViewMediator }, keyguardViewController,
|
context, keyguardStateController, { keyguardViewMediator }, keyguardViewController,
|
||||||
featureFlags, { biometricUnlockController }, statusBarStateController,
|
featureFlags, { biometricUnlockController }, statusBarStateController,
|
||||||
notificationShadeWindowController, powerManager
|
notificationShadeWindowController, powerManager, wallpaperManager
|
||||||
)
|
)
|
||||||
keyguardUnlockAnimationController.setLauncherUnlockController(
|
keyguardUnlockAnimationController.setLauncherUnlockController(
|
||||||
launcherUnlockAnimationController)
|
launcherUnlockAnimationController)
|
||||||
|
|
||||||
whenever(keyguardViewController.viewRootImpl).thenReturn(mock(ViewRootImpl::class.java))
|
whenever(keyguardViewController.viewRootImpl).thenReturn(mock(ViewRootImpl::class.java))
|
||||||
whenever(powerManager.isInteractive).thenReturn(true)
|
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
|
// 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.
|
// appear amount setter doesn't short circuit.
|
||||||
|
|||||||
Reference in New Issue
Block a user