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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mListeners.contains(listener)) {
|
||||||
|
Log.d(TAG, "ProxListener registered multiple times: " + listener);
|
||||||
|
} else {
|
||||||
mListeners.add(listener);
|
mListeners.add(listener);
|
||||||
|
}
|
||||||
registerInternal();
|
registerInternal();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -103,6 +103,30 @@ public class ProximitySensorTest extends SysuiTestCase {
|
|||||||
waitForSensorManager();
|
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
|
@Test
|
||||||
public void testUnregister() {
|
public void testUnregister() {
|
||||||
TestableListener listener = new TestableListener();
|
TestableListener listener = new TestableListener();
|
||||||
|
|||||||
Reference in New Issue
Block a user