Prevent multiple registration of ProximitySensor

Fixes: 150454546
Test: atest SystemUITests
Change-Id: I22527a6303132108ae9908448c718fc677af39a6
This commit is contained in:
Dave Mankoff
2020-03-06 14:59:00 -05:00
parent eaebc6540c
commit 682d86f69b
2 changed files with 29 additions and 1 deletions

View File

@@ -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;

View File

@@ -103,6 +103,30 @@ public class ProximitySensorTest extends SysuiTestCase {
waitForSensorManager();
}
@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();