Merge "Prevent NPE in ProximitySensor." into rvc-d1-dev am: a88064cf5b am: 413ac1cb65

Change-Id: I8234028367ef0e8cd749f79a843e0238745b74c1
This commit is contained in:
Dave Mankoff
2020-05-04 14:39:17 +00:00
committed by Automerger Merge Worker
2 changed files with 33 additions and 2 deletions

View File

@@ -92,11 +92,11 @@ public class ProximitySensor implements ThresholdSensor {
}
logDebug("Secondary sensor event: " + event.getBelow() + ".");
onSensorEvent(event);
// Check this sensor again in a moment.
mCancelSecondaryRunnable = mDelayableExecutor.executeDelayed(
mSecondaryThresholdSensor::resume, SECONDARY_PING_INTERVAL_MS);
onSensorEvent(event);
}
};

View File

@@ -262,6 +262,37 @@ public class ProximitySensorDualTest extends SysuiTestCase {
mProximitySensor.unregister(listener);
}
@Test
public void testSecondaryCancelsSecondary() {
TestableListener listener = new TestableListener();
ThresholdSensor.Listener cancelingListener = new ThresholdSensor.Listener() {
@Override
public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent event) {
mProximitySensor.pause();
}
};
mProximitySensor.register(listener);
mProximitySensor.register(cancelingListener);
assertNull(listener.mLastEvent);
assertEquals(0, listener.mCallCount);
mThresholdSensorPrimary.triggerEvent(true, 0);
assertNull(listener.mLastEvent);
assertEquals(0, listener.mCallCount);
mThresholdSensorSecondary.triggerEvent(true, 0);
assertTrue(listener.mLastEvent.getBelow());
assertEquals(1, listener.mCallCount);
// The proximity sensor should now be canceled. Advancing the clock should do nothing.
assertEquals(0, mFakeExecutor.numPending());
mThresholdSensorSecondary.triggerEvent(false, 1);
assertTrue(listener.mLastEvent.getBelow());
assertEquals(1, listener.mCallCount);
mProximitySensor.unregister(listener);
}
private static class TestableListener implements ThresholdSensor.Listener {
ThresholdSensor.ThresholdSensorEvent mLastEvent;
int mCallCount = 0;