diff options
| author | 2020-03-06 14:59:00 -0500 | |
|---|---|---|
| committer | 2020-03-06 15:33:13 -0500 | |
| commit | 682d86f69b39d6f39b5cd75ac4c0dd08209d354a (patch) | |
| tree | cb8bfeabcf090d35af25234ba3338c57e7965552 | |
| parent | eaebc6540cb8f7015842bbc3c72d888781b9acd4 (diff) | |
Prevent multiple registration of ProximitySensor
Fixes: 150454546
Test: atest SystemUITests
Change-Id: I22527a6303132108ae9908448c718fc677af39a6
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java | 6 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java | 24 |
2 files changed, 29 insertions, 1 deletions
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 13ba1a3cbf31..378dde284747 100644 --- a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java @@ -170,7 +170,11 @@ public class ProximitySensor { return false; } - mListeners.add(listener); + if (mListeners.contains(listener)) { + Log.d(TAG, "ProxListener registered multiple times: " + listener); + } else { + mListeners.add(listener); + } registerInternal(); return true; diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java index 37b315fec26e..526fba726e9d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorTest.java @@ -104,6 +104,30 @@ public class ProximitySensorTest extends SysuiTestCase { } @Test + public void testDuplicateListener() { + TestableListener listenerA = new TestableListener(); + + assertFalse(mProximitySensor.isRegistered()); + + mProximitySensor.register(listenerA); + waitForSensorManager(); + assertTrue(mProximitySensor.isRegistered()); + mProximitySensor.register(listenerA); + waitForSensorManager(); + assertTrue(mProximitySensor.isRegistered()); + assertNull(listenerA.mLastEvent); + + mFakeProximitySensor.sendProximityResult(true); + assertFalse(listenerA.mLastEvent.getNear()); + assertEquals(listenerA.mCallCount, 1); + mFakeProximitySensor.sendProximityResult(false); + assertTrue(listenerA.mLastEvent.getNear()); + assertEquals(listenerA.mCallCount, 2); + + mProximitySensor.unregister(listenerA); + waitForSensorManager(); + } + @Test public void testUnregister() { TestableListener listener = new TestableListener(); |