Merge "Prevent multiple registration of ProximitySensor" into rvc-dev am: a48ee0fc6a

Change-Id: I441122f98e352d10b38b58484a64d2d6f57cdf8b
This commit is contained in:
Automerger Merge Worker
2020-03-06 22:32:56 +00:00
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();