diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java index 06806d0e6ab6c..6a648bdf8cd43 100644 --- a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java @@ -347,6 +347,7 @@ public class ProximitySensor implements ThresholdSensor { public void check(long timeoutMs, Consumer callback) { if (!mSensor.isLoaded()) { callback.accept(null); + return; } mCallbacks.add(callback); if (!mRegistered.getAndSet(true)) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java index c5a197eef2d49..242fe9f5fffe3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximityCheckTest.java @@ -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());