Merge "Ensure that ProxCheck doesn't run a callback twice." into sc-dev

This commit is contained in:
TreeHugger Robot
2021-02-23 15:54:26 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 0 deletions

View File

@@ -347,6 +347,7 @@ public class ProximitySensor implements ThresholdSensor {
public void check(long timeoutMs, Consumer<Boolean> callback) {
if (!mSensor.isLoaded()) {
callback.accept(null);
return;
}
mCallbacks.add(callback);
if (!mRegistered.getAndSet(true)) {

View File

@@ -16,6 +16,8 @@
package com.android.systemui.util.sensors;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
@@ -85,6 +87,29 @@ public class ProximityCheckTest extends SysuiTestCase {
assertNull(mTestableCallback.mLastResult);
}
@Test
public void testNotLoaded() {
mFakeProximitySensor.setSensorAvailable(false);
assertThat(mTestableCallback.mLastResult).isNull();
assertThat(mTestableCallback.mNumCalls).isEqualTo(0);
mProximityCheck.check(100, mTestableCallback);
assertThat(mTestableCallback.mLastResult).isNull();
assertThat(mTestableCallback.mNumCalls).isEqualTo(1);
mFakeProximitySensor.setSensorAvailable(true);
mProximityCheck.check(100, mTestableCallback);
mFakeProximitySensor.setLastEvent(new ProximitySensor.ThresholdSensorEvent(true, 0));
mFakeProximitySensor.alertListeners();
assertThat(mTestableCallback.mLastResult).isNotNull();
assertThat(mTestableCallback.mNumCalls).isEqualTo(2);
}
@Test
public void testProxDoesntCancelOthers() {
assertFalse(mFakeProximitySensor.isRegistered());