Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ed1d22b authored by Dave Mankoff's avatar Dave Mankoff Committed by Automerger Merge Worker
Browse files

Merge "Prevent NPE in ProximitySensor." into rvc-d1-dev am: a88064cf am:...

Merge "Prevent NPE in ProximitySensor." into rvc-d1-dev am: a88064cf am: 08483615 am: 379ae998

Change-Id: Icf632690669c08dd7e798a152579f5b3f62b41ef
parents bc96542d 379ae998
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -92,11 +92,11 @@ public class ProximitySensor implements ThresholdSensor {
            }
            logDebug("Secondary sensor event: " + event.getBelow() + ".");

            onSensorEvent(event);

            // Check this sensor again in a moment.
            mCancelSecondaryRunnable = mDelayableExecutor.executeDelayed(
                    mSecondaryThresholdSensor::resume, SECONDARY_PING_INTERVAL_MS);

            onSensorEvent(event);
        }
    };

+31 −0
Original line number Diff line number Diff line
@@ -262,6 +262,37 @@ public class ProximitySensorDualTest extends SysuiTestCase {
        mProximitySensor.unregister(listener);
    }

    @Test
    public void testSecondaryCancelsSecondary() {
        TestableListener listener = new TestableListener();
        ThresholdSensor.Listener cancelingListener = new ThresholdSensor.Listener() {
            @Override
            public void onThresholdCrossed(ThresholdSensor.ThresholdSensorEvent event) {
                mProximitySensor.pause();
            }
        };

        mProximitySensor.register(listener);
        mProximitySensor.register(cancelingListener);
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        mThresholdSensorPrimary.triggerEvent(true, 0);
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);
        mThresholdSensorSecondary.triggerEvent(true, 0);
        assertTrue(listener.mLastEvent.getBelow());
        assertEquals(1, listener.mCallCount);

        // The proximity sensor should now be canceled. Advancing the clock should do nothing.
        assertEquals(0, mFakeExecutor.numPending());
        mThresholdSensorSecondary.triggerEvent(false, 1);
        assertTrue(listener.mLastEvent.getBelow());
        assertEquals(1, listener.mCallCount);

        mProximitySensor.unregister(listener);
    }

    private static class TestableListener implements ThresholdSensor.Listener {
        ThresholdSensor.ThresholdSensorEvent mLastEvent;
        int mCallCount = 0;