Merge "Prevent NPE in ProximitySensor." into rvc-d1-dev

This commit is contained in:
Dave Mankoff
2020-05-04 14:08:52 +00:00
committed by Android (Google) Code Review
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;