diff --git a/core/java/android/hardware/display/AmbientDisplayConfiguration.java b/core/java/android/hardware/display/AmbientDisplayConfiguration.java index 7dc1eaabdc9c8..93e5a0ea18f33 100644 --- a/core/java/android/hardware/display/AmbientDisplayConfiguration.java +++ b/core/java/android/hardware/display/AmbientDisplayConfiguration.java @@ -52,7 +52,8 @@ public class AmbientDisplayConfiguration { || wakeDisplayGestureEnabled(user) || pickupGestureEnabled(user) || tapGestureEnabled(user) - || doubleTapGestureEnabled(user); + || doubleTapGestureEnabled(user) + || quickPickupSensorEnabled(user); } /** {@hide} */ @@ -99,6 +100,13 @@ public class AmbientDisplayConfiguration { return !TextUtils.isEmpty(doubleTapSensorType()); } + /** {@hide} */ + public boolean quickPickupSensorEnabled(int user) { + return boolSettingDefaultOff(Settings.Secure.DOZE_QUICK_PICKUP_GESTURE, user) + && !TextUtils.isEmpty(quickPickupSensorType()) + && !alwaysOnEnabled(user); + } + /** {@hide} */ public boolean wakeScreenGestureAvailable() { return mContext.getResources() @@ -142,6 +150,11 @@ public class AmbientDisplayConfiguration { return mContext.getResources().getString(R.string.config_dozeUdfpsLongPressSensorType); } + /** {@hide} */ + public String quickPickupSensorType() { + return mContext.getResources().getString(R.string.config_quickPickupSensorType); + } + /** {@hide} */ public boolean pulseOnLongPressEnabled(int user) { return pulseOnLongPressAvailable() && boolSettingDefaultOff( diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 85cef84d8d30c..2b8877aff64d4 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -8361,6 +8361,14 @@ public final class Settings { @Readable public static final String DOZE_WAKE_DISPLAY_GESTURE = "doze_wake_display_gesture"; + /** + * Gesture that wakes up the display on quick pickup, toggling between + * {@link Display.STATE_OFF} and {@link Display.STATE_DOZE}. + * @hide + */ + @Readable + public static final String DOZE_QUICK_PICKUP_GESTURE = "doze_quick_pickup_gesture"; + /** * Whether the device should suppress the current doze configuration and disable dozing. * @hide diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 247ca16cc2f10..683cdd15a68c0 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2268,6 +2268,9 @@ false 300 + + + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 00cc81639608c..98bb49297d816 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3590,6 +3590,7 @@ + diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index ed2b6c92530b2..e8e10a4def3ec 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -153,6 +153,7 @@ public class SecureSettingsValidators { VALIDATORS.put(Secure.DOZE_TAP_SCREEN_GESTURE, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.DOZE_WAKE_DISPLAY_GESTURE, BOOLEAN_VALIDATOR); + VALIDATORS.put(Secure.DOZE_QUICK_PICKUP_GESTURE, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.NFC_PAYMENT_DEFAULT_COMPONENT, COMPONENT_NAME_VALIDATOR); VALIDATORS.put( Secure.AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, NON_NEGATIVE_INTEGER_VALIDATOR); diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index 4dc6d1475c4a7..c520568a78e56 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -745,6 +745,7 @@ public class SettingsBackupTest { Settings.Secure.SILENCE_GESTURE, Settings.Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE, Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE, + Settings.Secure.DOZE_QUICK_PICKUP_GESTURE, Settings.Secure.FACE_UNLOCK_RE_ENROLL, Settings.Secure.TAP_GESTURE, Settings.Secure.NEARBY_SHARING_COMPONENT, // not user configurable diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index b75a0bc1525a9..816d36cc41ae1 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -180,6 +180,9 @@ 2000 + + 5000 + diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java index c26cc4466c6db..d8ade2bdd21f3 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java @@ -225,8 +225,8 @@ public class DozeLog implements Dumpable { * Appends wake-display event to the logs. * @param wake if we're waking up or sleeping. */ - public void traceWakeDisplay(boolean wake) { - mLogger.logWakeDisplay(wake); + public void traceWakeDisplay(boolean wake, @Reason int reason) { + mLogger.logWakeDisplay(wake, reason); } /** @@ -380,6 +380,7 @@ public class DozeLog implements Dumpable { case REASON_SENSOR_WAKE_UP: return "wakeup"; case REASON_SENSOR_TAP: return "tap"; case REASON_SENSOR_UDFPS_LONG_PRESS: return "udfps"; + case REASON_SENSOR_QUICK_PICKUP: return "quickPickup"; default: throw new IllegalArgumentException("invalid reason: " + pulseReason); } } @@ -389,7 +390,7 @@ public class DozeLog implements Dumpable { PULSE_REASON_SENSOR_SIGMOTION, REASON_SENSOR_PICKUP, REASON_SENSOR_DOUBLE_TAP, PULSE_REASON_SENSOR_LONG_PRESS, PULSE_REASON_DOCKING, REASON_SENSOR_WAKE_UP, PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN, REASON_SENSOR_TAP, - REASON_SENSOR_UDFPS_LONG_PRESS}) + REASON_SENSOR_UDFPS_LONG_PRESS, REASON_SENSOR_QUICK_PICKUP}) public @interface Reason {} public static final int PULSE_REASON_NONE = -1; public static final int PULSE_REASON_INTENT = 0; @@ -403,6 +404,7 @@ public class DozeLog implements Dumpable { public static final int PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN = 8; public static final int REASON_SENSOR_TAP = 9; public static final int REASON_SENSOR_UDFPS_LONG_PRESS = 10; + public static final int REASON_SENSOR_QUICK_PICKUP = 11; - public static final int TOTAL_REASONS = 11; + public static final int TOTAL_REASONS = 12; } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt b/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt index fddefae6f5b69..9bc74be9b9c3c 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt @@ -16,6 +16,7 @@ package com.android.systemui.doze +import android.view.Display import com.android.systemui.doze.DozeLog.Reason import com.android.systemui.doze.DozeLog.reasonToString import com.android.systemui.log.LogBuffer @@ -161,17 +162,18 @@ class DozeLogger @Inject constructor( fun logDisplayStateChanged(displayState: Int) { buffer.log(TAG, INFO, { - int1 = displayState + str1 = Display.stateToString(displayState) }, { - "Display state changed to $int1" + "Display state changed to $str1" }) } - fun logWakeDisplay(isAwake: Boolean) { + fun logWakeDisplay(isAwake: Boolean, @Reason reason: Int) { buffer.log(TAG, DEBUG, { bool1 = isAwake + int1 = reason }, { - "Display wakefulness changed, isAwake=$bool1" + "Display wakefulness changed, isAwake=$bool1, reason=${reasonToString(int1)}" }) } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index c542e5b07d9b8..52c9f164a16e2 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -113,6 +113,8 @@ public class DozeSensors { mCallback = callback; mProximitySensor = proximitySensor; + boolean udfpsEnrolled = + authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser()); boolean alwaysOn = mConfig.alwaysOnEnabled(UserHandle.USER_CURRENT); mSensors = new TriggerSensor[] { new TriggerSensor( @@ -159,7 +161,7 @@ public class DozeSensors { findSensorWithType(config.udfpsLongPressSensorType()), "doze_pulse_on_auth", true /* settingDef */, - authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser()), + udfpsEnrolled, DozeLog.REASON_SENSOR_UDFPS_LONG_PRESS, true /* reports touch coordinates */, true /* touchscreen */, @@ -181,6 +183,15 @@ public class DozeSensors { false /* touchscreen */, mConfig.getWakeLockScreenDebounce(), dozeLog), + new TriggerSensor( + findSensorWithType(config.quickPickupSensorType()), + Settings.Secure.DOZE_QUICK_PICKUP_GESTURE, + false /* setting default */, + config.quickPickupSensorEnabled(KeyguardUpdateMonitor.getCurrentUser()) + && udfpsEnrolled, + DozeLog.REASON_SENSOR_QUICK_PICKUP, + false /* touchCoords */, + false /* touchscreen */, dozeLog), }; setProxListening(false); // Don't immediately start listening when we register. diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index c617f3d751d0e..04b46705226f7 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -42,10 +42,13 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.Dependency; import com.android.systemui.biometrics.AuthController; import com.android.systemui.broadcast.BroadcastDispatcher; +import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.dagger.DozeScope; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.Assert; +import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.settings.SecureSettings; @@ -76,6 +79,7 @@ public class DozeTriggers implements DozeMachine.Part { * Assuming that the screen should start on. */ private static boolean sWakeDisplaySensorState = true; + private Runnable mQuickPickupDozeCancellable; private static final int PROXIMITY_TIMEOUT_DELAY_MS = 500; @@ -96,6 +100,8 @@ public class DozeTriggers implements DozeMachine.Part { private final ProximitySensor.ProximityCheck mProxCheck; private final BroadcastDispatcher mBroadcastDispatcher; private final AuthController mAuthController; + private final DelayableExecutor mMainExecutor; + private final DelayableExecutor mBgExecutor; private long mNotificationPulseTime; private boolean mPulsePending; @@ -135,7 +141,10 @@ public class DozeTriggers implements DozeMachine.Part { DOZING_UPDATE_SENSOR_TAP(441), @UiEvent(doc = "Dozing updated because on display auth was triggered from AOD.") - DOZING_UPDATE_AUTH_TRIGGERED(657); + DOZING_UPDATE_AUTH_TRIGGERED(657), + + @UiEvent(doc = "Dozing updated because quick pickup sensor woke up.") + DOZING_UPDATE_QUICK_PICKUP(708); private final int mId; @@ -160,6 +169,7 @@ public class DozeTriggers implements DozeMachine.Part { case 8: return DOZING_UPDATE_SENSOR_WAKE_LOCKSCREEN; case 9: return DOZING_UPDATE_SENSOR_TAP; case 10: return DOZING_UPDATE_AUTH_TRIGGERED; + case 11: return DOZING_UPDATE_QUICK_PICKUP; default: return null; } } @@ -172,7 +182,8 @@ public class DozeTriggers implements DozeMachine.Part { WakeLock wakeLock, DockManager dockManager, ProximitySensor proximitySensor, ProximitySensor.ProximityCheck proxCheck, DozeLog dozeLog, BroadcastDispatcher broadcastDispatcher, - SecureSettings secureSettings, AuthController authController) { + SecureSettings secureSettings, AuthController authController, + @Main DelayableExecutor mainExecutor, @Background DelayableExecutor bgExecutor) { mContext = context; mDozeHost = dozeHost; mConfig = config; @@ -189,6 +200,8 @@ public class DozeTriggers implements DozeMachine.Part { mDozeLog = dozeLog; mBroadcastDispatcher = broadcastDispatcher; mAuthController = authController; + mMainExecutor = mainExecutor; + mBgExecutor = bgExecutor; } @Override @@ -262,18 +275,22 @@ public class DozeTriggers implements DozeMachine.Part { boolean isTap = pulseReason == DozeLog.REASON_SENSOR_TAP; boolean isPickup = pulseReason == DozeLog.REASON_SENSOR_PICKUP; boolean isLongPress = pulseReason == DozeLog.PULSE_REASON_SENSOR_LONG_PRESS; - boolean isWakeDisplay = pulseReason == DozeLog.REASON_SENSOR_WAKE_UP; - boolean isWakeLockScreen = pulseReason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN; + boolean isWakeOnPresence = pulseReason == DozeLog.REASON_SENSOR_WAKE_UP; + boolean isWakeOnReach = pulseReason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN; boolean isUdfpsLongPress = pulseReason == DozeLog.REASON_SENSOR_UDFPS_LONG_PRESS; - boolean wakeEvent = rawValues != null && rawValues.length > 0 && rawValues[0] != 0; + boolean isQuickPickup = pulseReason == DozeLog.REASON_SENSOR_QUICK_PICKUP; + boolean isWakeDisplayEvent = isQuickPickup || ((isWakeOnPresence || isWakeOnReach) + && rawValues != null && rawValues.length > 0 && rawValues[0] != 0); - if (isWakeDisplay) { - onWakeScreen(wakeEvent, mMachine.isExecutingTransition() ? null : mMachine.getState()); + if (isWakeOnPresence || isQuickPickup) { + onWakeScreen(isQuickPickup || isWakeDisplayEvent, + mMachine.isExecutingTransition() ? null : mMachine.getState(), + pulseReason); } else if (isLongPress) { requestPulse(pulseReason, true /* alreadyPerformedProxCheck */, null /* onPulseSuppressedListener */); - } else if (isWakeLockScreen) { - if (wakeEvent) { + } else if (isWakeOnReach) { + if (isWakeDisplayEvent) { requestPulse(pulseReason, true /* alreadyPerformedProxCheck */, null /* onPulseSuppressedListener */); } @@ -370,13 +387,17 @@ public class DozeTriggers implements DozeMachine.Part { * @param state The current state, or null if the state could not be determined due to enqueued * transitions. */ - private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state) { - mDozeLog.traceWakeDisplay(wake); - sWakeDisplaySensorState = wake; + private void onWakeScreen(boolean wake, @Nullable DozeMachine.State state, int reason) { + mDozeLog.traceWakeDisplay(wake, reason); + final boolean isWakeOnPresence = reason == DozeLog.REASON_SENSOR_WAKE_UP; + final boolean isQuickPickup = reason == DozeLog.REASON_SENSOR_QUICK_PICKUP; + if (isWakeOnPresence) { + sWakeDisplaySensorState = wake; + } if (wake) { proximityCheckThenCall((result) -> { - if (result != null && result) { + if (result != null && result) { // In pocket, drop event. return; } @@ -385,26 +406,51 @@ public class DozeTriggers implements DozeMachine.Part { // Logs AOD open due to sensor wake up. mMetricsLogger.write(new LogMaker(MetricsEvent.DOZING) .setType(MetricsEvent.TYPE_OPEN) - .setSubtype(DozeLog.REASON_SENSOR_WAKE_UP)); + .setSubtype(reason)); + + if (isQuickPickup) { + // schedule runnable to go back to DOZE + onQuickPickup(); + } + } else if (state == DozeMachine.State.DOZE_AOD && isQuickPickup) { + // elongate time in DOZE_AOD, schedule new runnable to go back to DOZE + onQuickPickup(); } - }, true /* alreadyPerformedProxCheck */, DozeLog.REASON_SENSOR_WAKE_UP); + }, isQuickPickup /* alreadyPerformedProxCheck */, reason); } else { boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED); boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING); + boolean pulse = (state == DozeMachine.State.DOZE_REQUEST_PULSE) + || (state == DozeMachine.State.DOZE_PULSING) + || (state == DozeMachine.State.DOZE_PULSING_BRIGHT); + boolean docked = (state == DozeMachine.State.DOZE_AOD_DOCKED); if (!pausing && !paused) { + if (isQuickPickup && (pulse || docked)) { + return; + } mMachine.requestState(DozeMachine.State.DOZE); // Logs AOD close due to sensor wake up. mMetricsLogger.write(new LogMaker(MetricsEvent.DOZING) .setType(MetricsEvent.TYPE_CLOSE) - .setSubtype(DozeLog.REASON_SENSOR_WAKE_UP)); + .setSubtype(reason)); } } } + private void onQuickPickup() { + cancelQuickPickupDelayableDoze(); + mQuickPickupDozeCancellable = mMainExecutor.executeDelayed(() -> { + onWakeScreen(false, + mMachine.isExecutingTransition() ? null : mMachine.getState(), + DozeLog.REASON_SENSOR_QUICK_PICKUP); + }, mDozeParameters.getQuickPickupAodDuration()); + } + @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { switch (newState) { case INITIALIZED: + sWakeDisplaySensorState = true; mBroadcastReceiver.register(mBroadcastDispatcher); mDozeHost.addCallback(mHostCallback); mDockManager.addListener(mDockEventListener); @@ -417,7 +463,7 @@ public class DozeTriggers implements DozeMachine.Part { mWantSensors = true; mWantTouchScreenSensors = true; if (newState == DozeMachine.State.DOZE_AOD && !sWakeDisplaySensorState) { - onWakeScreen(false, newState); + onWakeScreen(false, newState, DozeLog.REASON_SENSOR_WAKE_UP); } break; case DOZE_AOD_PAUSED: @@ -437,6 +483,7 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors.requestTemporaryDisable(); break; case FINISH: + cancelQuickPickupDelayableDoze(); mBroadcastReceiver.unregister(mBroadcastDispatcher); mDozeHost.removeCallback(mHostCallback); mDockManager.removeListener(mDockEventListener); @@ -460,6 +507,17 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors); } + /** + * Cancels last scheduled Runnable that transitions to STATE_DOZE (blank screen) after + * going into STATE_AOD (AOD screen) from the quick pickup gesture. + */ + private void cancelQuickPickupDelayableDoze() { + if (mQuickPickupDozeCancellable != null) { + mQuickPickupDozeCancellable.run(); + mQuickPickupDozeCancellable = null; + } + } + private void checkTriggersAtInit() { if (mUiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR || mDozeHost.isBlockingDoze() diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java index 85d8df8e60575..c23f1ad6f9c9e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java @@ -148,6 +148,11 @@ public class DozeParameters implements TunerService.Tunable, return getInt("doze.pickup.vibration.threshold", R.integer.doze_pickup_vibration_threshold); } + public int getQuickPickupAodDuration() { + return getInt("doze.gesture.quickpickup.duration", + R.integer.doze_quick_pickup_aod_duration); + } + /** * For how long a wallpaper can be visible in AoD before it fades aways. * @return duration in millis. @@ -175,6 +180,10 @@ public class DozeParameters implements TunerService.Tunable, return mDozeAlwaysOn && !mBatteryController.isAodPowerSave(); } + public boolean isQuickPickupEnabled() { + return mAmbientDisplayConfiguration.quickPickupSensorEnabled(UserHandle.USER_CURRENT); + } + /** * Some screens need to be completely black before changing the display power mode, * unexpected behavior might happen if this parameter isn't respected. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java index 48c97a2fd79c9..9b8b7160c95ce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java @@ -140,11 +140,13 @@ public enum ScrimState { @Override public void prepare(ScrimState previousState) { final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn(); + final boolean quickPickupEnabled = mDozeParameters.isQuickPickupEnabled(); final boolean isDocked = mDockManager.isDocked(); mBlankScreen = mDisplayRequiresBlanking; mFrontTint = Color.BLACK; - mFrontAlpha = (alwaysOnEnabled || isDocked) ? mAodFrontScrimAlpha : 1f; + mFrontAlpha = (alwaysOnEnabled || isDocked || quickPickupEnabled) + ? mAodFrontScrimAlpha : 1f; mBehindTint = Color.BLACK; mBehindAlpha = ScrimController.TRANSPARENT; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java index 9fd9b470a83b6..1aeb0d8a5361b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java @@ -60,6 +60,7 @@ public class DozeConfigurationUtil { when(config.tapSensorType()).thenReturn(null); when(config.longPressSensorType()).thenReturn(null); when(config.udfpsLongPressSensorType()).thenReturn(null); + when(config.quickPickupSensorType()).thenReturn(null); when(config.tapGestureEnabled(anyInt())).thenReturn(true); when(config.tapSensorAvailable()).thenReturn(true); @@ -67,6 +68,7 @@ public class DozeConfigurationUtil { when(config.dozePickupSensorAvailable()).thenReturn(false); when(config.wakeScreenGestureAvailable()).thenReturn(false); + when(config.quickPickupSensorEnabled(anyInt())).thenReturn(false); doneHolder[0] = true; return config; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java index 27187a85c0406..1817fdfd4cdca 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java @@ -104,7 +104,7 @@ public class DozeTriggersTest extends SysuiTestCase { mTriggers = new DozeTriggers(mContext, mHost, mAlarmManager, config, parameters, asyncSensorManager, wakeLock, mDockManager, mProximitySensor, mProximityCheck, mock(DozeLog.class), mBroadcastDispatcher, new FakeSettings(), - mAuthController); + mAuthController, mExecutor, mExecutor); mTriggers.setDozeMachine(mMachine); waitForSensorManager(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java index bdde82289e86d..8b5ba38485008 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java @@ -174,6 +174,7 @@ public class DozeServiceHostTest extends SysuiTestCase { DozeLog.PULSE_REASON_SENSOR_LONG_PRESS, DozeLog.PULSE_REASON_DOCKING, DozeLog.REASON_SENSOR_WAKE_UP, + DozeLog.REASON_SENSOR_QUICK_PICKUP, DozeLog.REASON_SENSOR_TAP)); HashSet reasonsThatDontPulse = new HashSet<>( Arrays.asList(DozeLog.REASON_SENSOR_PICKUP,