Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14aa28a5 authored by Robin Lee's avatar Robin Lee Committed by Android (Google) Code Review
Browse files

Revert "Revert "Hide keyguard earlier when exiting lockscreen""

This reverts commit aa75cf24.

Reason for revert: Reverted with incorrect justification
Bug: 285395021

Change-Id: I353ce81ede781d2b8611b1343ee0d964fbca6408
parent aa75cf24
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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);
                    if (lockscreenLiveWallpaperEnabled) {
                        initAlphaForAnimationTargets(t, wallpapers);
                    }
                    t.apply();
                    mFinishCallback = finishCallback;
                    runner.onAnimationStart(
+8 −4
Original line number Diff line number Diff line
@@ -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) {
            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...")
        }
    }
+15 −4
Original line number Diff line number Diff line
@@ -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) {
+5 −1
Original line number Diff line number Diff line
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.