Merge "Do not animate wallpaper when wakeAndUnlock" into qt-r1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e8f8d71ea4
@@ -30,6 +30,7 @@ import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUIApplication;
|
||||
import com.android.systemui.classifier.FalsingManagerFactory;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
import com.android.systemui.util.AsyncSensorManager;
|
||||
import com.android.systemui.util.wakelock.DelayedWakeLock;
|
||||
@@ -70,7 +71,7 @@ public class DozeFactory {
|
||||
new DozeScreenState(wrappedService, handler, params, wakeLock),
|
||||
createDozeScreenBrightness(context, wrappedService, sensorManager, host, params,
|
||||
handler),
|
||||
new DozeWallpaperState(context),
|
||||
new DozeWallpaperState(context, getBiometricUnlockController(dozeService)),
|
||||
new DozeDockHandler(context, machine, host, config, handler, dockManager),
|
||||
new DozeAuthRemover(dozeService)
|
||||
});
|
||||
@@ -108,4 +109,10 @@ public class DozeFactory {
|
||||
final SystemUIApplication app = (SystemUIApplication) appCandidate;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -38,18 +39,22 @@ public class DozeWallpaperState implements DozeMachine.Part {
|
||||
|
||||
private final IWallpaperManager mWallpaperManagerService;
|
||||
private final DozeParameters mDozeParameters;
|
||||
private final BiometricUnlockController mBiometricUnlockController;
|
||||
private boolean mIsAmbientMode;
|
||||
|
||||
public DozeWallpaperState(Context context) {
|
||||
public DozeWallpaperState(Context context,
|
||||
BiometricUnlockController biometricUnlockController) {
|
||||
this(IWallpaperManager.Stub.asInterface(
|
||||
ServiceManager.getService(Context.WALLPAPER_SERVICE)),
|
||||
biometricUnlockController,
|
||||
DozeParameters.getInstance(context));
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
DozeWallpaperState(IWallpaperManager wallpaperManagerService,
|
||||
DozeParameters parameters) {
|
||||
BiometricUnlockController biometricUnlockController, DozeParameters parameters) {
|
||||
mWallpaperManagerService = wallpaperManagerService;
|
||||
mBiometricUnlockController = biometricUnlockController;
|
||||
mDozeParameters = parameters;
|
||||
}
|
||||
|
||||
@@ -76,7 +81,9 @@ public class DozeWallpaperState implements DozeMachine.Part {
|
||||
} else {
|
||||
boolean wakingUpFromPulse = oldState == DozeMachine.State.DOZE_PULSING
|
||||
&& newState == DozeMachine.State.FINISH;
|
||||
animated = !mDozeParameters.getDisplayNeedsBlanking() || wakingUpFromPulse;
|
||||
boolean fastDisplay = !mDozeParameters.getDisplayNeedsBlanking();
|
||||
animated = (fastDisplay && !mBiometricUnlockController.unlockedByWakeAndUnlock())
|
||||
|| wakingUpFromPulse;
|
||||
}
|
||||
|
||||
if (isAmbientMode != mIsAmbientMode) {
|
||||
|
||||
@@ -141,6 +141,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
|
||||
private BiometricSourceType mPendingAuthenticatedBioSourceType = null;
|
||||
private boolean mPendingShowBouncer;
|
||||
private boolean mHasScreenTurnedOnSinceAuthenticating;
|
||||
private boolean mFadedAwayAfterWakeAndUnlock;
|
||||
|
||||
private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
|
||||
|
||||
@@ -368,6 +369,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
|
||||
@Override
|
||||
public void onStartedGoingToSleep(int why) {
|
||||
resetMode();
|
||||
mFadedAwayAfterWakeAndUnlock = false;
|
||||
mPendingAuthenticatedUserId = -1;
|
||||
mPendingAuthenticatedBioSourceType = null;
|
||||
}
|
||||
@@ -513,6 +515,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
|
||||
}
|
||||
|
||||
public void finishKeyguardFadingAway() {
|
||||
if (isWakeAndUnlock()) {
|
||||
mFadedAwayAfterWakeAndUnlock = true;
|
||||
}
|
||||
resetMode();
|
||||
}
|
||||
|
||||
@@ -562,6 +567,14 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
|
||||
|| 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
|
||||
* on or off.
|
||||
|
||||
@@ -1230,6 +1230,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mDozeScrimController, keyguardViewMediator,
|
||||
mScrimController, this, UnlockMethodCache.getInstance(mContext),
|
||||
new Handler(), mKeyguardUpdateMonitor, mKeyguardBypassController);
|
||||
putComponent(BiometricUnlockController.class, mBiometricUnlockController);
|
||||
mStatusBarKeyguardViewManager = keyguardViewMediator.registerStatusBar(this,
|
||||
getBouncerContainer(), mNotificationPanel, mBiometricUnlockController,
|
||||
mStatusBarWindow.findViewById(R.id.lock_icon_container), mStackScroller,
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.doze;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.clearInvocations;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -29,6 +30,7 @@ import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -44,12 +46,14 @@ public class DozeWallpaperStateTest extends SysuiTestCase {
|
||||
|
||||
private DozeWallpaperState mDozeWallpaperState;
|
||||
@Mock IWallpaperManager mIWallpaperManager;
|
||||
@Mock BiometricUnlockController mBiometricUnlockController;
|
||||
@Mock DozeParameters mDozeParameters;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mDozeParameters);
|
||||
mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mBiometricUnlockController,
|
||||
mDozeParameters);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -101,6 +105,20 @@ public class DozeWallpaperStateTest extends SysuiTestCase {
|
||||
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
|
||||
public void testTransitionTo_requestPulseIsAmbientMode() throws RemoteException {
|
||||
mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE,
|
||||
|
||||
Reference in New Issue
Block a user