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

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

Merge "Force an initial event to be sent to ProximitySensor." into sc-dev am: 831b21f4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15455734

Change-Id: I18307b7b86a23a7f5271375766b0f8cd16789f30
parents 8b82e5e9 831b21f4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ public class DozeSensors {
        mSecureSettings = secureSettings;
        mCallback = callback;
        mProximitySensor = proximitySensor;
        mProximitySensor.setTag(TAG);
        mSelectivelyRegisterProxSensors = dozeParameters.getSelectivelyRegisterSensorsUsingProx();
        mListeningProxSensors = !mSelectivelyRegisterProxSensors;
        mScreenOffUdfpsEnabled =
+5 −2
Original line number Diff line number Diff line
@@ -290,15 +290,18 @@ public class ProximitySensor implements ThresholdSensor {
            return;
        }

        if (!mSecondaryThresholdSensor.isLoaded()) {

        if (!mSecondaryThresholdSensor.isLoaded()) {  // No secondary
            logDebug("Primary sensor event: " + event.getBelow() + ". No secondary.");
            onSensorEvent(event);
        } else if (event.getBelow()) {
        } else if (event.getBelow()) {  // Covered? Check secondary.
            logDebug("Primary sensor event: " + event.getBelow() + ". Checking secondary.");
            if (mCancelSecondaryRunnable != null) {
                mCancelSecondaryRunnable.run();
            }
            mSecondaryThresholdSensor.resume();
        } else {  // Uncovered. Report immediately.
            onSensorEvent(event);
        }
    }

+63 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.util.sensors;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

@@ -60,7 +61,8 @@ public class ProximitySensorDualTest extends SysuiTestCase {
    }

    @Test
    public void testPrimaryBelowDoesNotInvokeSecondary() {
    public void testInitiallyAbovePrimary() {

        TestableListener listener = new TestableListener();

        mProximitySensor.register(listener);
@@ -70,12 +72,71 @@ public class ProximitySensorDualTest extends SysuiTestCase {
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        // Trigger primary sensor. Our secondary sensor is not registered.
        mThresholdSensorPrimary.triggerEvent(false, 0);
        assertNotNull(listener.mLastEvent);
        assertFalse(listener.mLastEvent.getBelow());
        assertEquals(1, listener.mCallCount);
    }

    @Test
    public void testInitiallyBelowPrimaryAboveSecondary() {

        TestableListener listener = new TestableListener();

        mProximitySensor.register(listener);
        assertTrue(mProximitySensor.isRegistered());
        assertFalse(mThresholdSensorPrimary.isPaused());
        assertTrue(mThresholdSensorSecondary.isPaused());
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        mThresholdSensorPrimary.triggerEvent(true, 0);
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        mThresholdSensorSecondary.triggerEvent(false, 1);
        assertNotNull(listener.mLastEvent);
        assertFalse(listener.mLastEvent.getBelow());
        assertEquals(1, listener.mCallCount);
    }

    @Test
    public void testInitiallyBelowPrimaryAndSecondary() {

        TestableListener listener = new TestableListener();

        mProximitySensor.register(listener);
        assertTrue(mProximitySensor.isRegistered());
        assertFalse(mThresholdSensorPrimary.isPaused());
        assertTrue(mThresholdSensorSecondary.isPaused());
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        mThresholdSensorPrimary.triggerEvent(true, 0);
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        mThresholdSensorSecondary.triggerEvent(true, 1);
        assertNotNull(listener.mLastEvent);
        assertTrue(listener.mLastEvent.getBelow());
        assertEquals(1, listener.mCallCount);
    }

    @Test
    public void testPrimaryBelowDoesNotInvokeSecondary() {
        TestableListener listener = new TestableListener();

        mProximitySensor.register(listener);
        assertTrue(mProximitySensor.isRegistered());
        assertFalse(mThresholdSensorPrimary.isPaused());
        assertTrue(mThresholdSensorSecondary.isPaused());
        assertNull(listener.mLastEvent);
        assertEquals(0, listener.mCallCount);

        // Trigger primary sensor. Our secondary sensor is not registered.
        mThresholdSensorPrimary.triggerEvent(false, 0);
        assertFalse(mThresholdSensorPrimary.isPaused());
        assertTrue(mThresholdSensorSecondary.isPaused());
    }

    @Test