Merge changes from topic "cherry-pick-dropped-sensor" into qt-r1-dev
* changes: Fix issue where notif wouldn't HUN Assume sensors perform prox check
This commit is contained in:
committed by
Android (Google) Code Review
commit
1ed27213d0
@@ -196,9 +196,6 @@
|
|||||||
<!-- Doze: duration to avoid false pickup gestures triggered by notification vibrations -->
|
<!-- Doze: duration to avoid false pickup gestures triggered by notification vibrations -->
|
||||||
<integer name="doze_pickup_vibration_threshold">2000</integer>
|
<integer name="doze_pickup_vibration_threshold">2000</integer>
|
||||||
|
|
||||||
<!-- Doze: can we assume the pickup sensor includes a proximity check? -->
|
|
||||||
<bool name="doze_pickup_performs_proximity_check">false</bool>
|
|
||||||
|
|
||||||
<!-- Type of a sensor that provides a low-power estimate of the desired display
|
<!-- Type of a sensor that provides a low-power estimate of the desired display
|
||||||
brightness, suitable to listen to while the device is asleep (e.g. during
|
brightness, suitable to listen to while the device is asleep (e.g. during
|
||||||
always-on display) -->
|
always-on display) -->
|
||||||
|
|||||||
@@ -107,8 +107,7 @@ public class DozeSensors {
|
|||||||
config.dozePickupSensorAvailable(),
|
config.dozePickupSensorAvailable(),
|
||||||
DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */,
|
DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */,
|
||||||
false /* touchscreen */,
|
false /* touchscreen */,
|
||||||
false /* ignoresSetting */,
|
false /* ignoresSetting */),
|
||||||
mDozeParameters.getPickupPerformsProxCheck()),
|
|
||||||
new TriggerSensor(
|
new TriggerSensor(
|
||||||
findSensorWithType(config.doubleTapSensorType()),
|
findSensorWithType(config.doubleTapSensorType()),
|
||||||
Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
|
Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
|
||||||
@@ -205,11 +204,8 @@ public class DozeSensors {
|
|||||||
public void updateListening() {
|
public void updateListening() {
|
||||||
boolean anyListening = false;
|
boolean anyListening = false;
|
||||||
for (TriggerSensor s : mSensors) {
|
for (TriggerSensor s : mSensors) {
|
||||||
// We don't want to be listening while we're PAUSED (prox sensor is covered)
|
s.setListening(mListening);
|
||||||
// except when the sensor is already gated by prox.
|
if (mListening) {
|
||||||
boolean listen = mListening && (!mPaused || s.performsProxCheck());
|
|
||||||
s.setListening(listen);
|
|
||||||
if (listen) {
|
|
||||||
anyListening = true;
|
anyListening = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -391,7 +387,6 @@ public class DozeSensors {
|
|||||||
private final boolean mReportsTouchCoordinates;
|
private final boolean mReportsTouchCoordinates;
|
||||||
private final boolean mSettingDefault;
|
private final boolean mSettingDefault;
|
||||||
private final boolean mRequiresTouchscreen;
|
private final boolean mRequiresTouchscreen;
|
||||||
private final boolean mSensorPerformsProxCheck;
|
|
||||||
|
|
||||||
protected boolean mRequested;
|
protected boolean mRequested;
|
||||||
protected boolean mRegistered;
|
protected boolean mRegistered;
|
||||||
@@ -408,14 +403,12 @@ public class DozeSensors {
|
|||||||
boolean configured, int pulseReason, boolean reportsTouchCoordinates,
|
boolean configured, int pulseReason, boolean reportsTouchCoordinates,
|
||||||
boolean requiresTouchscreen) {
|
boolean requiresTouchscreen) {
|
||||||
this(sensor, setting, settingDef, configured, pulseReason, reportsTouchCoordinates,
|
this(sensor, setting, settingDef, configured, pulseReason, reportsTouchCoordinates,
|
||||||
requiresTouchscreen, false /* ignoresSetting */,
|
requiresTouchscreen, false /* ignoresSetting */);
|
||||||
false /* sensorPerformsProxCheck */);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private TriggerSensor(Sensor sensor, String setting, boolean settingDef,
|
private TriggerSensor(Sensor sensor, String setting, boolean settingDef,
|
||||||
boolean configured, int pulseReason, boolean reportsTouchCoordinates,
|
boolean configured, int pulseReason, boolean reportsTouchCoordinates,
|
||||||
boolean requiresTouchscreen, boolean ignoresSetting,
|
boolean requiresTouchscreen, boolean ignoresSetting) {
|
||||||
boolean sensorPerformsProxCheck) {
|
|
||||||
mSensor = sensor;
|
mSensor = sensor;
|
||||||
mSetting = setting;
|
mSetting = setting;
|
||||||
mSettingDefault = settingDef;
|
mSettingDefault = settingDef;
|
||||||
@@ -424,7 +417,6 @@ public class DozeSensors {
|
|||||||
mReportsTouchCoordinates = reportsTouchCoordinates;
|
mReportsTouchCoordinates = reportsTouchCoordinates;
|
||||||
mRequiresTouchscreen = requiresTouchscreen;
|
mRequiresTouchscreen = requiresTouchscreen;
|
||||||
mIgnoresSetting = ignoresSetting;
|
mIgnoresSetting = ignoresSetting;
|
||||||
mSensorPerformsProxCheck = sensorPerformsProxCheck;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setListening(boolean listen) {
|
public void setListening(boolean listen) {
|
||||||
@@ -498,23 +490,13 @@ public class DozeSensors {
|
|||||||
screenX = event.values[0];
|
screenX = event.values[0];
|
||||||
screenY = event.values[1];
|
screenY = event.values[1];
|
||||||
}
|
}
|
||||||
mCallback.onSensorPulse(mPulseReason, mSensorPerformsProxCheck, screenX, screenY,
|
mCallback.onSensorPulse(mPulseReason, screenX, screenY, event.values);
|
||||||
event.values);
|
|
||||||
if (!mRegistered) {
|
if (!mRegistered) {
|
||||||
updateListening(); // reregister, this sensor only fires once
|
updateListening(); // reregister, this sensor only fires once
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* If the sensor itself performs proximity checks, to avoid pocket dialing.
|
|
||||||
* Gated sensors don't need to be stopped when the {@link DozeMachine} is
|
|
||||||
* {@link DozeMachine.State#DOZE_AOD_PAUSED}.
|
|
||||||
*/
|
|
||||||
public boolean performsProxCheck() {
|
|
||||||
return mSensorPerformsProxCheck;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void registerSettingsObserver(ContentObserver settingsObserver) {
|
public void registerSettingsObserver(ContentObserver settingsObserver) {
|
||||||
if (mConfigured && !TextUtils.isEmpty(mSetting)) {
|
if (mConfigured && !TextUtils.isEmpty(mSetting)) {
|
||||||
mResolver.registerContentObserver(
|
mResolver.registerContentObserver(
|
||||||
@@ -610,8 +592,7 @@ public class DozeSensors {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (DEBUG) Log.d(TAG, "onSensorEvent: " + triggerEventToString(event));
|
if (DEBUG) Log.d(TAG, "onSensorEvent: " + triggerEventToString(event));
|
||||||
mCallback.onSensorPulse(mPulseReason, true /* sensorPerformsProxCheck */, -1, -1,
|
mCallback.onSensorPulse(mPulseReason, -1, -1, event.getValues());
|
||||||
event.getValues());
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -621,13 +602,11 @@ public class DozeSensors {
|
|||||||
/**
|
/**
|
||||||
* Called when a sensor requests a pulse
|
* Called when a sensor requests a pulse
|
||||||
* @param pulseReason Requesting sensor, e.g. {@link DozeLog#REASON_SENSOR_PICKUP}
|
* @param pulseReason Requesting sensor, e.g. {@link DozeLog#REASON_SENSOR_PICKUP}
|
||||||
* @param sensorPerformedProxCheck true if the sensor already checked for FAR proximity.
|
|
||||||
* @param screenX the location on the screen where the sensor fired or -1
|
* @param screenX the location on the screen where the sensor fired or -1
|
||||||
* if the sensor doesn't support reporting screen locations.
|
* if the sensor doesn't support reporting screen locations.
|
||||||
* @param screenY the location on the screen where the sensor fired or -1
|
* @param screenY the location on the screen where the sensor fired or -1
|
||||||
* @param rawValues raw values array from the event.
|
* @param rawValues raw values array from the event.
|
||||||
*/
|
*/
|
||||||
void onSensorPulse(int pulseReason, boolean sensorPerformedProxCheck,
|
void onSensorPulse(int pulseReason, float screenX, float screenY, float[] rawValues);
|
||||||
float screenX, float screenY, float[] rawValues);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import com.android.internal.logging.MetricsLogger;
|
|||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
import com.android.systemui.Dependency;
|
import com.android.systemui.Dependency;
|
||||||
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.dock.DockManager;
|
import com.android.systemui.dock.DockManager;
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||||
import com.android.systemui.util.Assert;
|
import com.android.systemui.util.Assert;
|
||||||
@@ -156,8 +157,7 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void onSensor(int pulseReason, boolean sensorPerformedProxCheck,
|
void onSensor(int pulseReason, float screenX, float screenY, float[] rawValues) {
|
||||||
float screenX, float screenY, float[] rawValues) {
|
|
||||||
boolean isDoubleTap = pulseReason == DozeLog.REASON_SENSOR_DOUBLE_TAP;
|
boolean isDoubleTap = pulseReason == DozeLog.REASON_SENSOR_DOUBLE_TAP;
|
||||||
boolean isTap = pulseReason == DozeLog.REASON_SENSOR_TAP;
|
boolean isTap = pulseReason == DozeLog.REASON_SENSOR_TAP;
|
||||||
boolean isPickup = pulseReason == DozeLog.REASON_SENSOR_PICKUP;
|
boolean isPickup = pulseReason == DozeLog.REASON_SENSOR_PICKUP;
|
||||||
@@ -169,10 +169,11 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
if (isWakeDisplay) {
|
if (isWakeDisplay) {
|
||||||
onWakeScreen(wakeEvent, mMachine.isExecutingTransition() ? null : mMachine.getState());
|
onWakeScreen(wakeEvent, mMachine.isExecutingTransition() ? null : mMachine.getState());
|
||||||
} else if (isLongPress) {
|
} else if (isLongPress) {
|
||||||
requestPulse(pulseReason, sensorPerformedProxCheck, null /* onPulseSupressedListener */);
|
requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
|
||||||
|
null /* onPulseSupressedListener */);
|
||||||
} else if (isWakeLockScreen) {
|
} else if (isWakeLockScreen) {
|
||||||
if (wakeEvent) {
|
if (wakeEvent) {
|
||||||
requestPulse(pulseReason, sensorPerformedProxCheck,
|
requestPulse(pulseReason, true /* alreadyPerformedProxCheck */,
|
||||||
null /* onPulseSupressedListener */);
|
null /* onPulseSupressedListener */);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -191,8 +192,7 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
} else {
|
} else {
|
||||||
mDozeHost.extendPulse(pulseReason);
|
mDozeHost.extendPulse(pulseReason);
|
||||||
}
|
}
|
||||||
}, sensorPerformedProxCheck
|
}, true /* alreadyPerformedProxCheck */, pulseReason);
|
||||||
|| (mDockManager != null && mDockManager.isDocked()), pulseReason);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isPickup) {
|
if (isPickup) {
|
||||||
@@ -278,7 +278,7 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
.setType(MetricsEvent.TYPE_OPEN)
|
.setType(MetricsEvent.TYPE_OPEN)
|
||||||
.setSubtype(DozeLog.REASON_SENSOR_WAKE_UP));
|
.setSubtype(DozeLog.REASON_SENSOR_WAKE_UP));
|
||||||
}
|
}
|
||||||
}, false /* alreadyPerformedProxCheck */, DozeLog.REASON_SENSOR_WAKE_UP);
|
}, true /* alreadyPerformedProxCheck */, DozeLog.REASON_SENSOR_WAKE_UP);
|
||||||
} else {
|
} else {
|
||||||
boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
|
boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
|
||||||
boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
|
boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
|
||||||
@@ -417,6 +417,9 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
mDozeSensors.dump(pw);
|
mDozeSensors.dump(pw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DozeSensors.ProxSensor
|
||||||
|
*/
|
||||||
private abstract class ProximityCheck implements SensorEventListener, Runnable {
|
private abstract class ProximityCheck implements SensorEventListener, Runnable {
|
||||||
private static final int TIMEOUT_DELAY_MS = 500;
|
private static final int TIMEOUT_DELAY_MS = 500;
|
||||||
|
|
||||||
@@ -428,12 +431,18 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
private boolean mRegistered;
|
private boolean mRegistered;
|
||||||
private boolean mFinished;
|
private boolean mFinished;
|
||||||
private float mMaxRange;
|
private float mMaxRange;
|
||||||
|
private boolean mUsingBrightnessSensor;
|
||||||
|
|
||||||
protected abstract void onProximityResult(int result);
|
protected abstract void onProximityResult(int result);
|
||||||
|
|
||||||
public void check() {
|
public void check() {
|
||||||
Preconditions.checkState(!mFinished && !mRegistered);
|
Preconditions.checkState(!mFinished && !mRegistered);
|
||||||
final Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
Sensor sensor = DozeSensors.findSensorWithType(mSensorManager,
|
||||||
|
mContext.getString(R.string.doze_brightness_sensor_type));
|
||||||
|
mUsingBrightnessSensor = sensor != null;
|
||||||
|
if (sensor == null) {
|
||||||
|
sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||||
|
}
|
||||||
if (sensor == null) {
|
if (sensor == null) {
|
||||||
if (DozeMachine.DEBUG) Log.d(TAG, "ProxCheck: No sensor found");
|
if (DozeMachine.DEBUG) Log.d(TAG, "ProxCheck: No sensor found");
|
||||||
finishWithResult(RESULT_UNKNOWN);
|
finishWithResult(RESULT_UNKNOWN);
|
||||||
@@ -449,6 +458,9 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
mRegistered = true;
|
mRegistered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DozeSensors.ProxSensor#onSensorChanged(SensorEvent)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onSensorChanged(SensorEvent event) {
|
public void onSensorChanged(SensorEvent event) {
|
||||||
if (event.values.length == 0) {
|
if (event.values.length == 0) {
|
||||||
@@ -458,7 +470,14 @@ public class DozeTriggers implements DozeMachine.Part {
|
|||||||
if (DozeMachine.DEBUG) {
|
if (DozeMachine.DEBUG) {
|
||||||
Log.d(TAG, "ProxCheck: Event: value=" + event.values[0] + " max=" + mMaxRange);
|
Log.d(TAG, "ProxCheck: Event: value=" + event.values[0] + " max=" + mMaxRange);
|
||||||
}
|
}
|
||||||
final boolean isNear = event.values[0] < mMaxRange;
|
final boolean isNear;
|
||||||
|
if (mUsingBrightnessSensor) {
|
||||||
|
// The custom brightness sensor is gated by the proximity sensor and will
|
||||||
|
// return 0 whenever prox is covered.
|
||||||
|
isNear = event.values[0] == 0;
|
||||||
|
} else {
|
||||||
|
isNear = event.values[0] < mMaxRange;
|
||||||
|
}
|
||||||
finishWithResult(isNear ? RESULT_NEAR : RESULT_FAR);
|
finishWithResult(isNear ? RESULT_NEAR : RESULT_FAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,10 +207,6 @@ public class DozeParameters implements TunerService.Tunable,
|
|||||||
return SystemProperties.get(propName, mContext.getString(resId));
|
return SystemProperties.get(propName, mContext.getString(resId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getPickupPerformsProxCheck() {
|
|
||||||
return mContext.getResources().getBoolean(R.bool.doze_pickup_performs_proximity_check);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPulseVisibleDurationExtended() {
|
public int getPulseVisibleDurationExtended() {
|
||||||
return 2 * getPulseVisibleDuration();
|
return 2 * getPulseVisibleDuration();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ public class DozeConfigurationUtil {
|
|||||||
when(params.getPulseOnSigMotion()).thenReturn(false);
|
when(params.getPulseOnSigMotion()).thenReturn(false);
|
||||||
when(params.getPickupVibrationThreshold()).thenReturn(0);
|
when(params.getPickupVibrationThreshold()).thenReturn(0);
|
||||||
when(params.getProxCheckBeforePulse()).thenReturn(true);
|
when(params.getProxCheckBeforePulse()).thenReturn(true);
|
||||||
when(params.getPickupPerformsProxCheck()).thenReturn(true);
|
|
||||||
when(params.getPolicy()).thenReturn(mock(AlwaysOnDisplayPolicy.class));
|
when(params.getPolicy()).thenReturn(mock(AlwaysOnDisplayPolicy.class));
|
||||||
when(params.doubleTapReportsTouchCoordinates()).thenReturn(false);
|
when(params.doubleTapReportsTouchCoordinates()).thenReturn(false);
|
||||||
when(params.getDisplayNeedsBlanking()).thenReturn(false);
|
when(params.getDisplayNeedsBlanking()).thenReturn(false);
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ package com.android.systemui.doze;
|
|||||||
import static com.android.systemui.plugins.SensorManagerPlugin.Sensor.TYPE_WAKE_LOCK_SCREEN;
|
import static com.android.systemui.plugins.SensorManagerPlugin.Sensor.TYPE_WAKE_LOCK_SCREEN;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyFloat;
|
import static org.mockito.ArgumentMatchers.anyFloat;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
@@ -79,8 +78,6 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
private AlwaysOnDisplayPolicy mAlwaysOnDisplayPolicy;
|
private AlwaysOnDisplayPolicy mAlwaysOnDisplayPolicy;
|
||||||
@Mock
|
@Mock
|
||||||
private TriggerSensor mTriggerSensor;
|
private TriggerSensor mTriggerSensor;
|
||||||
@Mock
|
|
||||||
private TriggerSensor mProxGatedTriggerSensor;
|
|
||||||
private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener;
|
private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener;
|
||||||
private TestableLooper mTestableLooper;
|
private TestableLooper mTestableLooper;
|
||||||
private DozeSensors mDozeSensors;
|
private DozeSensors mDozeSensors;
|
||||||
@@ -88,7 +85,6 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
when(mProxGatedTriggerSensor.performsProxCheck()).thenReturn(true);
|
|
||||||
mTestableLooper = TestableLooper.get(this);
|
mTestableLooper = TestableLooper.get(this);
|
||||||
when(mAmbientDisplayConfiguration.getWakeLockScreenDebounce()).thenReturn(5000L);
|
when(mAmbientDisplayConfiguration.getWakeLockScreenDebounce()).thenReturn(5000L);
|
||||||
when(mAmbientDisplayConfiguration.alwaysOnEnabled(anyInt())).thenReturn(true);
|
when(mAmbientDisplayConfiguration.alwaysOnEnabled(anyInt())).thenReturn(true);
|
||||||
@@ -106,14 +102,14 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
|
mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
|
||||||
mTestableLooper.processAllMessages();
|
mTestableLooper.processAllMessages();
|
||||||
verify(mCallback).onSensorPulse(eq(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
|
verify(mCallback).onSensorPulse(eq(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
|
||||||
anyBoolean(), anyFloat(), anyFloat(), eq(null));
|
anyFloat(), anyFloat(), eq(null));
|
||||||
|
|
||||||
mDozeSensors.requestTemporaryDisable();
|
mDozeSensors.requestTemporaryDisable();
|
||||||
reset(mCallback);
|
reset(mCallback);
|
||||||
mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
|
mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
|
||||||
mTestableLooper.processAllMessages();
|
mTestableLooper.processAllMessages();
|
||||||
verify(mCallback, never()).onSensorPulse(eq(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
|
verify(mCallback, never()).onSensorPulse(eq(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
|
||||||
anyBoolean(), anyFloat(), anyFloat(), eq(null));
|
anyFloat(), anyFloat(), eq(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -132,20 +128,17 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetPaused_onlyPausesNonGatedSensors() {
|
public void testSetPaused_doesntPause_sensors() {
|
||||||
mDozeSensors.setListening(true);
|
mDozeSensors.setListening(true);
|
||||||
verify(mTriggerSensor).setListening(eq(true));
|
verify(mTriggerSensor).setListening(eq(true));
|
||||||
verify(mProxGatedTriggerSensor).setListening(eq(true));
|
|
||||||
|
|
||||||
clearInvocations(mTriggerSensor, mProxGatedTriggerSensor);
|
clearInvocations(mTriggerSensor);
|
||||||
mDozeSensors.setPaused(true);
|
mDozeSensors.setPaused(true);
|
||||||
verify(mTriggerSensor).setListening(eq(false));
|
|
||||||
verify(mProxGatedTriggerSensor).setListening(eq(true));
|
|
||||||
|
|
||||||
clearInvocations(mTriggerSensor, mProxGatedTriggerSensor);
|
|
||||||
mDozeSensors.setPaused(false);
|
|
||||||
verify(mTriggerSensor).setListening(eq(true));
|
verify(mTriggerSensor).setListening(eq(true));
|
||||||
verify(mProxGatedTriggerSensor).setListening(eq(true));
|
|
||||||
|
clearInvocations(mTriggerSensor);
|
||||||
|
mDozeSensors.setListening(false);
|
||||||
|
verify(mTriggerSensor).setListening(eq(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TestableDozeSensors extends DozeSensors {
|
private class TestableDozeSensors extends DozeSensors {
|
||||||
@@ -161,7 +154,7 @@ public class DozeSensorsTest extends SysuiTestCase {
|
|||||||
mWakeLockScreenListener = (PluginSensor) sensor;
|
mWakeLockScreenListener = (PluginSensor) sensor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mSensors = new TriggerSensor[] {mTriggerSensor, mProxGatedTriggerSensor};
|
mSensors = new TriggerSensor[] {mTriggerSensor};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import static org.mockito.ArgumentMatchers.any;
|
|||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.clearInvocations;
|
import static org.mockito.Mockito.clearInvocations;
|
||||||
import static org.mockito.Mockito.doReturn;
|
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -134,28 +133,4 @@ public class DozeTriggersTest extends SysuiTestCase {
|
|||||||
mTriggers.transitionTo(DozeMachine.State.DOZE, DozeMachine.State.FINISH);
|
mTriggers.transitionTo(DozeMachine.State.DOZE, DozeMachine.State.FINISH);
|
||||||
verify(mDockManagerFake).removeListener(any());
|
verify(mDockManagerFake).removeListener(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnSensor_whenUndockedWithNearAndDoubleTapScreen_shouldNotWakeUp() {
|
|
||||||
mSensors.getMockProximitySensor().sendProximityResult(false /* far */);
|
|
||||||
|
|
||||||
mTriggers.onSensor(DozeLog.REASON_SENSOR_DOUBLE_TAP,
|
|
||||||
false /* sensorPerformedProxCheck */, 50 /* screenX */, 50 /* screenY */,
|
|
||||||
null /* rawValues */);
|
|
||||||
verify(mMachine, never()).wakeUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnSensor_whenDockedWithNearAndDoubleTapScreen_shouldWakeUp() {
|
|
||||||
doReturn(true).when(mDockManagerFake).isDocked();
|
|
||||||
doReturn(true).when(mParameters).getDisplayNeedsBlanking();
|
|
||||||
mSensors.getMockProximitySensor().sendProximityResult(false /* far */);
|
|
||||||
|
|
||||||
mTriggers.onSensor(DozeLog.REASON_SENSOR_DOUBLE_TAP,
|
|
||||||
false /* sensorPerformedProxCheck */, 50 /* screenX */, 50 /* screenY */,
|
|
||||||
null /* rawValues */);
|
|
||||||
|
|
||||||
verify(mHost).setAodDimmingScrim(eq(1f));
|
|
||||||
verify(mMachine).wakeUp();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user