Merge "Prevent multiple registration of ProximitySensor" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a48ee0fc6a
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user