Merge "Prevent multiple registration of ProximitySensor" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-03-06 22:20:52 +00:00
committed by Android (Google) Code Review
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();