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

Commit 86c7344d authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Don't immediately start listening to Prox in DozeSensors.

Bug: 146151888
Test: atest SystemUITests
Change-Id: Ia8bf8b25a9c14f60fe0e20d7dfae54e5a701a4fa
parent 9d4f6c0c
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -80,8 +80,7 @@ public class DozeSensors {

    public DozeSensors(Context context, AlarmManager alarmManager, AsyncSensorManager sensorManager,
            DozeParameters dozeParameters, AmbientDisplayConfiguration config, WakeLock wakeLock,
            Callback callback, Consumer<Boolean> proxCallback, AlwaysOnDisplayPolicy policy,
            DozeLog dozeLog) {
            Callback callback, Consumer<Boolean> proxCallback, DozeLog dozeLog) {
        mContext = context;
        mAlarmManager = alarmManager;
        mSensorManager = sensorManager;
@@ -154,7 +153,7 @@ public class DozeSensors {
        };

        mProximitySensor = new ProximitySensor(context.getResources(), sensorManager);

        setProxListening(false);  // Don't immediately start listening when we register.
        mProximitySensor.register(
                proximityEvent -> {
                    if (proximityEvent != null) {
+1 −2
Original line number Diff line number Diff line
@@ -103,8 +103,7 @@ public class DozeTriggers implements DozeMachine.Part {
        mWakeLock = wakeLock;
        mAllowPulseTriggers = allowPulseTriggers;
        mDozeSensors = new DozeSensors(context, alarmManager, mSensorManager, dozeParameters,
                config, wakeLock, this::onSensor, this::onProximityFar,
                dozeParameters.getPolicy(), dozeLog);
                config, wakeLock, this::onSensor, this::onProximityFar, dozeLog);
        mUiModeManager = mContext.getSystemService(UiModeManager.class);
        mDockManager = dockManager;
        mProxCheck = new ProximitySensor.ProximityCheck(proximitySensor, handler);
+16 −2
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static org.mockito.Mockito.when;

import android.app.AlarmManager;
import android.database.ContentObserver;
import android.hardware.Sensor;
import android.hardware.display.AmbientDisplayConfiguration;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
@@ -80,6 +81,8 @@ public class DozeSensorsTest extends SysuiTestCase {
    private TriggerSensor mTriggerSensor;
    @Mock
    private DozeLog mDozeLog;
    @Mock
    private Sensor mProximitySensor;
    private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener;
    private TestableLooper mTestableLooper;
    private DozeSensors mDozeSensors;
@@ -90,6 +93,7 @@ public class DozeSensorsTest extends SysuiTestCase {
        mTestableLooper = TestableLooper.get(this);
        when(mAmbientDisplayConfiguration.getWakeLockScreenDebounce()).thenReturn(5000L);
        when(mAmbientDisplayConfiguration.alwaysOnEnabled(anyInt())).thenReturn(true);
        when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn(mProximitySensor);
        doAnswer(invocation -> {
            ((Runnable) invocation.getArgument(0)).run();
            return null;
@@ -97,6 +101,14 @@ public class DozeSensorsTest extends SysuiTestCase {
        mDozeSensors = new TestableDozeSensors();
    }

    @Test
    public void testRegisterProx() {
        // We should not register with the sensor manager initially.
        verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
        mDozeSensors.setProxListening(true);
        verify(mSensorManager).registerListener(any(), any(Sensor.class), anyInt());
    }

    @Test
    public void testSensorDebounce() {
        mDozeSensors.setListening(true);
@@ -116,6 +128,7 @@ public class DozeSensorsTest extends SysuiTestCase {

    @Test
    public void testSetListening_firstTrue_registerSettingsObserver() {
        verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
        mDozeSensors.setListening(true);

        verify(mTriggerSensor).registerSettingsObserver(any(ContentObserver.class));
@@ -123,6 +136,7 @@ public class DozeSensorsTest extends SysuiTestCase {

    @Test
    public void testSetListening_twiceTrue_onlyRegisterSettingsObserverOnce() {
        verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
        mDozeSensors.setListening(true);
        mDozeSensors.setListening(true);

@@ -131,6 +145,7 @@ public class DozeSensorsTest extends SysuiTestCase {

    @Test
    public void testSetPaused_doesntPause_sensors() {
        verify(mSensorManager, never()).registerListener(any(), any(Sensor.class), anyInt());
        mDozeSensors.setListening(true);
        verify(mTriggerSensor).setListening(eq(true));

@@ -147,8 +162,7 @@ public class DozeSensorsTest extends SysuiTestCase {

        TestableDozeSensors() {
            super(getContext(), mAlarmManager, mSensorManager, mDozeParameters,
                    mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback,
                    mAlwaysOnDisplayPolicy, mDozeLog);
                    mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog);
            for (TriggerSensor sensor : mSensors) {
                if (sensor instanceof PluginSensor
                        && ((PluginSensor) sensor).mPluginSensor.getType()