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

Commit 5f8ab566 authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

Don't reregister AoD UDFPS gesture after trigger

Instead, the gesture will re-register on the next
AoD transition change (ie: from PULSE => AOD).

Test: atest DozeSensorsTest
Fixes: 233713099
Change-Id: I7bdd1838385d755a17eefd79e24bf4eb9f72a44c
parent e58a36c1
Loading
Loading
Loading
Loading
+24 −9
Original line number Diff line number Diff line
@@ -183,7 +183,8 @@ public class DozeSensors {
                        mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION),
                        null /* setting */,
                        dozeParameters.getPulseOnSigMotion(),
                        DozeLog.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */,
                        DozeLog.PULSE_REASON_SENSOR_SIGMOTION,
                        false /* touchCoords */,
                        false /* touchscreen */),
                new TriggerSensor(
                        mSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE),
@@ -193,7 +194,8 @@ public class DozeSensors {
                        DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */,
                        false /* touchscreen */,
                        false /* ignoresSetting */,
                        false /* requires prox */),
                        false /* requires prox */,
                        true /* immediatelyReRegister */),
                new TriggerSensor(
                        findSensor(config.doubleTapSensorType()),
                        Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
@@ -211,6 +213,7 @@ public class DozeSensors {
                        true /* touchscreen */,
                        false /* ignoresSetting */,
                        dozeParameters.singleTapUsesProx(mDevicePosture) /* requiresProx */,
                        true /* immediatelyReRegister */,
                        mDevicePosture),
                new TriggerSensor(
                        findSensor(config.longPressSensorType()),
@@ -221,7 +224,8 @@ public class DozeSensors {
                        true /* reports touch coordinates */,
                        true /* touchscreen */,
                        false /* ignoresSetting */,
                        dozeParameters.longPressUsesProx() /* requiresProx */),
                        dozeParameters.longPressUsesProx() /* requiresProx */,
                        true /* immediatelyReRegister */),
                new TriggerSensor(
                        findSensor(config.udfpsLongPressSensorType()),
                        "doze_pulse_on_auth",
@@ -231,7 +235,8 @@ public class DozeSensors {
                        true /* reports touch coordinates */,
                        true /* touchscreen */,
                        false /* ignoresSetting */,
                        dozeParameters.longPressUsesProx()),
                        dozeParameters.longPressUsesProx(),
                        false /* immediatelyReRegister */),
                new PluginSensor(
                        new SensorManagerPlugin.Sensor(TYPE_WAKE_DISPLAY),
                        Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE,
@@ -257,7 +262,8 @@ public class DozeSensors {
                        false /* requiresTouchCoordinates */,
                        false /* requiresTouchscreen */,
                        false /* ignoresSetting */,
                        false /* requiresProx */),
                        false /* requiresProx */,
                        true /* immediatelyReRegister */),
        };
        setProxListening(false);  // Don't immediately start listening when we register.
        mProximitySensor.register(
@@ -493,6 +499,10 @@ public class DozeSensors {
        private final boolean mRequiresTouchscreen;
        private final boolean mRequiresProx;

        // Whether to immediately re-register this sensor after the sensor is triggered.
        // If false, the sensor registration will be updated on the next AOD state transition.
        private final boolean mImmediatelyReRegister;

        protected boolean mRequested;
        protected boolean mRegistered;
        protected boolean mDisabled;
@@ -516,7 +526,8 @@ public class DozeSensors {
                    reportsTouchCoordinates,
                    requiresTouchscreen,
                    false /* ignoresSetting */,
                    false /* requiresProx */
                    false /* requiresProx */,
                    true /* immediatelyReRegister */
            );
        }

@@ -529,7 +540,8 @@ public class DozeSensors {
                boolean reportsTouchCoordinates,
                boolean requiresTouchscreen,
                boolean ignoresSetting,
                boolean requiresProx
                boolean requiresProx,
                boolean immediatelyReRegister
        ) {
            this(
                    new Sensor[]{ sensor },
@@ -541,6 +553,7 @@ public class DozeSensors {
                    requiresTouchscreen,
                    ignoresSetting,
                    requiresProx,
                    immediatelyReRegister,
                    DevicePostureController.DEVICE_POSTURE_UNKNOWN
            );
        }
@@ -555,6 +568,7 @@ public class DozeSensors {
                boolean requiresTouchscreen,
                boolean ignoresSetting,
                boolean requiresProx,
                boolean immediatelyReRegister,
                @DevicePostureController.DevicePostureInt int posture
        ) {
            mSensors = sensors;
@@ -567,6 +581,7 @@ public class DozeSensors {
            mIgnoresSetting = ignoresSetting;
            mRequiresProx = requiresProx;
            mPosture = posture;
            mImmediatelyReRegister = immediatelyReRegister;
        }

        /**
@@ -702,8 +717,8 @@ public class DozeSensors {
                    screenY = event.values[1];
                }
                mSensorCallback.onSensorPulse(mPulseReason, screenX, screenY, event.values);
                if (!mRegistered) {
                    updateListening();  // reregister, this sensor only fires once
                if (!mRegistered && mImmediatelyReRegister) {
                    updateListening();
                }
            }));
        }
+6 −3
Original line number Diff line number Diff line
@@ -461,7 +461,8 @@ public class DozeSensorsTest extends SysuiTestCase {
                    /* reportsTouchCoordinate*/ false,
                    /* requiresTouchscreen */ false,
                    /* ignoresSetting */ false,
                    requiresTouchScreen);
                    requiresTouchScreen,
                    /* immediatelyReRegister */ true);
        }

        public TriggerSensor createDozeSensor(
@@ -477,7 +478,8 @@ public class DozeSensorsTest extends SysuiTestCase {
                    /* reportsTouchCoordinate*/ false,
                    /* requiresTouchscreen */ false,
                    /* ignoresSetting */ false,
                    /* requiresTouchScreen */false);
                    /* requiresTouchScreen */ false,
                    /* immediatelyReRegister*/ true);
        }

        /**
@@ -493,6 +495,7 @@ public class DozeSensorsTest extends SysuiTestCase {
                    /* requiresTouchscreen */ false,
                    /* ignoresSetting */ true,
                    /* requiresProx */ false,
                    /* immediatelyReRegister */ true,
                    posture);
        }