summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Dupin <dupin@google.com>2019-07-17 09:49:52 -0700
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-07-19 03:41:05 +0000
commit62d8916eac552ce43b2740b7a0676371c3b9968f (patch)
tree7e53af1abfcb070a7c619f4ebd6b74c002e81697
parentc08f3a30764e00958e72156dd5fd25a60503e6cf (diff)
downloadbase-62d8916eac552ce43b2740b7a0676371c3b9968f.tar.gz
Do not animate wallpaper when wakeAndUnlock
Fixes: 137536016 Test: press power to go to lock scree <-> aod Test: unlock with fingerprint Test: trigger AOD2 pulse (look at wallpaper animation) Test: atest DozeWallpaperStateTest Change-Id: I46574609a00712bdde5a4652ab5c9b0c04cbeeec Merged-In: I46574609a00712bdde5a4652ab5c9b0c04cbeeec (cherry picked from commit 29e30faa4e808db7d3e3dcef0bfbad5bd062496c)
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java20
5 files changed, 51 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
index 8694d2ad607c..9c2adb36e1ae 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
@@ -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)
});
@@ -107,4 +108,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);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java b/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java
index 1b3cd881b949..35c8b741381c 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java
@@ -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) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
index 4d4818d51414..eccd70b4a597 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
@@ -132,6 +132,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
private BiometricSourceType mPendingAuthenticatedBioSourceType = null;
private boolean mPendingShowBouncer;
private boolean mHasScreenTurnedOnSinceAuthenticating;
+ private boolean mFadedAwayAfterWakeAndUnlock;
private final TunerService.Tunable mFaceDismissedKeyguardTunable = new TunerService.Tunable() {
@Override
@@ -360,6 +361,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
@Override
public void onStartedGoingToSleep(int why) {
resetMode();
+ mFadedAwayAfterWakeAndUnlock = false;
mPendingAuthenticatedUserId = -1;
mPendingAuthenticatedBioSourceType = null;
}
@@ -454,6 +456,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
}
public void finishKeyguardFadingAway() {
+ if (isWakeAndUnlock()) {
+ mFadedAwayAfterWakeAndUnlock = true;
+ }
resetMode();
}
@@ -504,6 +509,14 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
}
/**
+ * 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.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 1aa8bd79af35..7d6799bf638e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -1213,6 +1213,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mDozeScrimController, keyguardViewMediator,
mScrimController, this, UnlockMethodCache.getInstance(mContext),
new Handler(), mKeyguardUpdateMonitor, Dependency.get(TunerService.class));
+ putComponent(BiometricUnlockController.class, mBiometricUnlockController);
mStatusBarKeyguardViewManager = keyguardViewMediator.registerStatusBar(this,
getBouncerContainer(), mNotificationPanel, mBiometricUnlockController,
mStatusBarWindow.findViewById(R.id.lock_icon_container));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java
index 87ae85f6d302..f07edf331f13 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java
@@ -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
@@ -102,6 +106,20 @@ public class DozeWallpaperStateTest extends SysuiTestCase {
}
@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,
DozeMachine.State.DOZE_REQUEST_PULSE);