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

Commit e8f8d71e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Do not animate wallpaper when wakeAndUnlock" into qt-r1-dev

parents 0108bc4b bd6c92b0
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.R;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.classifier.FalsingManagerFactory;
import com.android.systemui.classifier.FalsingManagerFactory;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.util.AsyncSensorManager;
import com.android.systemui.util.AsyncSensorManager;
import com.android.systemui.util.wakelock.DelayedWakeLock;
import com.android.systemui.util.wakelock.DelayedWakeLock;
@@ -70,7 +71,7 @@ public class DozeFactory {
                new DozeScreenState(wrappedService, handler, params, wakeLock),
                new DozeScreenState(wrappedService, handler, params, wakeLock),
                createDozeScreenBrightness(context, wrappedService, sensorManager, host, params,
                createDozeScreenBrightness(context, wrappedService, sensorManager, host, params,
                        handler),
                        handler),
                new DozeWallpaperState(context),
                new DozeWallpaperState(context, getBiometricUnlockController(dozeService)),
                new DozeDockHandler(context, machine, host, config, handler, dockManager),
                new DozeDockHandler(context, machine, host, config, handler, dockManager),
                new DozeAuthRemover(dozeService)
                new DozeAuthRemover(dozeService)
        });
        });
@@ -108,4 +109,10 @@ public class DozeFactory {
        final SystemUIApplication app = (SystemUIApplication) appCandidate;
        final SystemUIApplication app = (SystemUIApplication) appCandidate;
        return app.getComponent(DozeHost.class);
        return app.getComponent(DozeHost.class);
    }
    }

    public static BiometricUnlockController getBiometricUnlockController(DozeService service) {
        Application appCandidate = service.getApplication();
        final SystemUIApplication app = (SystemUIApplication) appCandidate;
        return app.getComponent(BiometricUnlockController.class);
    }
}
}
+10 −3
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.Log;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.DozeParameters;


import java.io.PrintWriter;
import java.io.PrintWriter;
@@ -38,18 +39,22 @@ public class DozeWallpaperState implements DozeMachine.Part {


    private final IWallpaperManager mWallpaperManagerService;
    private final IWallpaperManager mWallpaperManagerService;
    private final DozeParameters mDozeParameters;
    private final DozeParameters mDozeParameters;
    private final BiometricUnlockController mBiometricUnlockController;
    private boolean mIsAmbientMode;
    private boolean mIsAmbientMode;


    public DozeWallpaperState(Context context) {
    public DozeWallpaperState(Context context,
            BiometricUnlockController biometricUnlockController) {
        this(IWallpaperManager.Stub.asInterface(
        this(IWallpaperManager.Stub.asInterface(
                ServiceManager.getService(Context.WALLPAPER_SERVICE)),
                ServiceManager.getService(Context.WALLPAPER_SERVICE)),
                biometricUnlockController,
                DozeParameters.getInstance(context));
                DozeParameters.getInstance(context));
    }
    }


    @VisibleForTesting
    @VisibleForTesting
    DozeWallpaperState(IWallpaperManager wallpaperManagerService,
    DozeWallpaperState(IWallpaperManager wallpaperManagerService,
            DozeParameters parameters) {
            BiometricUnlockController biometricUnlockController, DozeParameters parameters) {
        mWallpaperManagerService = wallpaperManagerService;
        mWallpaperManagerService = wallpaperManagerService;
        mBiometricUnlockController = biometricUnlockController;
        mDozeParameters = parameters;
        mDozeParameters = parameters;
    }
    }


@@ -76,7 +81,9 @@ public class DozeWallpaperState implements DozeMachine.Part {
        } else {
        } else {
            boolean wakingUpFromPulse = oldState == DozeMachine.State.DOZE_PULSING
            boolean wakingUpFromPulse = oldState == DozeMachine.State.DOZE_PULSING
                    && newState == DozeMachine.State.FINISH;
                    && newState == DozeMachine.State.FINISH;
            animated = !mDozeParameters.getDisplayNeedsBlanking() || wakingUpFromPulse;
            boolean fastDisplay = !mDozeParameters.getDisplayNeedsBlanking();
            animated = (fastDisplay && !mBiometricUnlockController.unlockedByWakeAndUnlock())
                    || wakingUpFromPulse;
        }
        }


        if (isAmbientMode != mIsAmbientMode) {
        if (isAmbientMode != mIsAmbientMode) {
+13 −0
Original line number Original line Diff line number Diff line
@@ -141,6 +141,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
    private BiometricSourceType mPendingAuthenticatedBioSourceType = null;
    private BiometricSourceType mPendingAuthenticatedBioSourceType = null;
    private boolean mPendingShowBouncer;
    private boolean mPendingShowBouncer;
    private boolean mHasScreenTurnedOnSinceAuthenticating;
    private boolean mHasScreenTurnedOnSinceAuthenticating;
    private boolean mFadedAwayAfterWakeAndUnlock;


    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);


@@ -368,6 +369,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
    @Override
    @Override
    public void onStartedGoingToSleep(int why) {
    public void onStartedGoingToSleep(int why) {
        resetMode();
        resetMode();
        mFadedAwayAfterWakeAndUnlock = false;
        mPendingAuthenticatedUserId = -1;
        mPendingAuthenticatedUserId = -1;
        mPendingAuthenticatedBioSourceType = null;
        mPendingAuthenticatedBioSourceType = null;
    }
    }
@@ -513,6 +515,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
    }
    }


    public void finishKeyguardFadingAway() {
    public void finishKeyguardFadingAway() {
        if (isWakeAndUnlock()) {
            mFadedAwayAfterWakeAndUnlock = true;
        }
        resetMode();
        resetMode();
    }
    }


@@ -562,6 +567,14 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
                || mMode == MODE_WAKE_AND_UNLOCK_FROM_DREAM;
                || mMode == MODE_WAKE_AND_UNLOCK_FROM_DREAM;
    }
    }


    /**
     * Successful authentication with fingerprint, face, or iris that wakes up the device.
     * This will return {@code true} even after the keyguard fades away.
     */
    public boolean unlockedByWakeAndUnlock() {
        return  isWakeAndUnlock() || mFadedAwayAfterWakeAndUnlock;
    }

    /**
    /**
     * Successful authentication with fingerprint, face, or iris when the screen was either
     * Successful authentication with fingerprint, face, or iris when the screen was either
     * on or off.
     * on or off.
+1 −0
Original line number Original line Diff line number Diff line
@@ -1230,6 +1230,7 @@ public class StatusBar extends SystemUI implements DemoMode,
                mDozeScrimController, keyguardViewMediator,
                mDozeScrimController, keyguardViewMediator,
                mScrimController, this, UnlockMethodCache.getInstance(mContext),
                mScrimController, this, UnlockMethodCache.getInstance(mContext),
                new Handler(), mKeyguardUpdateMonitor, mKeyguardBypassController);
                new Handler(), mKeyguardUpdateMonitor, mKeyguardBypassController);
        putComponent(BiometricUnlockController.class, mBiometricUnlockController);
        mStatusBarKeyguardViewManager = keyguardViewMediator.registerStatusBar(this,
        mStatusBarKeyguardViewManager = keyguardViewMediator.registerStatusBar(this,
                getBouncerContainer(), mNotificationPanel, mBiometricUnlockController,
                getBouncerContainer(), mNotificationPanel, mBiometricUnlockController,
                mStatusBarWindow.findViewById(R.id.lock_icon_container), mStackScroller,
                mStatusBarWindow.findViewById(R.id.lock_icon_container), mStackScroller,
+19 −1
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.doze;


import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;
@@ -29,6 +30,7 @@ import androidx.test.filters.SmallTest;


import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.DozeParameters;


import org.junit.Before;
import org.junit.Before;
@@ -44,12 +46,14 @@ public class DozeWallpaperStateTest extends SysuiTestCase {


    private DozeWallpaperState mDozeWallpaperState;
    private DozeWallpaperState mDozeWallpaperState;
    @Mock IWallpaperManager mIWallpaperManager;
    @Mock IWallpaperManager mIWallpaperManager;
    @Mock BiometricUnlockController mBiometricUnlockController;
    @Mock DozeParameters mDozeParameters;
    @Mock DozeParameters mDozeParameters;


    @Before
    @Before
    public void setUp() {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);
        mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mDozeParameters);
        mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mBiometricUnlockController,
                mDozeParameters);
    }
    }


    @Test
    @Test
@@ -101,6 +105,20 @@ public class DozeWallpaperStateTest extends SysuiTestCase {
        verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(0L));
        verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(0L));
    }
    }


    @Test
    public void testDoesNotAnimate_whenWakeAndUnlock() throws RemoteException {
        // Pre-conditions
        when(mDozeParameters.getAlwaysOn()).thenReturn(true);
        when(mBiometricUnlockController.unlockedByWakeAndUnlock()).thenReturn(true);

        mDozeWallpaperState.transitionTo(DozeMachine.State.UNINITIALIZED,
                DozeMachine.State.DOZE_AOD);
        clearInvocations(mIWallpaperManager);

        mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_AOD, DozeMachine.State.FINISH);
        verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(0L));
    }

    @Test
    @Test
    public void testTransitionTo_requestPulseIsAmbientMode() throws RemoteException {
    public void testTransitionTo_requestPulseIsAmbientMode() throws RemoteException {
        mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE,
        mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE,