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

Commit 54534f9c authored by Wenhui Yang's avatar Wenhui Yang
Browse files

Check light sensor is null for biometric logging

Bug: 327330325
Test: ALSProbeTest
Change-Id: I7604f1dd8b1314822b141e18b1c2d6fb717db4ae
parent b7b8a8cf
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -179,15 +179,18 @@ final class ALSProbe implements Probe {
            nextConsumer.consume(current);
        } else if (mNextConsumer != null) {
            mNextConsumer.add(nextConsumer);
        } else {
        } else if (mLightSensor != null) {
            mDestroyed = false;
            mNextConsumer = nextConsumer;
            enableLightSensorLoggingLocked();
        } else {
            Slog.w(TAG, "No light sensor - use current to consume");
            nextConsumer.consume(current);
        }
    }

    private void enableLightSensorLoggingLocked() {
        if (!mEnabled) {
        if (!mEnabled && mLightSensor != null) {
            mEnabled = true;
            mLastAmbientLux = -1;
            mSensorManager.registerListener(mLightSensorListener, mLightSensor,
@@ -201,7 +204,7 @@ final class ALSProbe implements Probe {
    private void disableLightSensorLoggingLocked(boolean destroying) {
        resetTimerLocked(false /* start */);

        if (mEnabled) {
        if (mEnabled && mLightSensor != null) {
            mEnabled = false;
            if (!destroying) {
                mLastAmbientLux = -1;
+15 −0
Original line number Diff line number Diff line
@@ -344,6 +344,21 @@ public class ALSProbeTest {
        verifyNoMoreInteractions(mSensorManager);
    }

    @Test
    public void testAwaitLuxWhenNoLightSensor() {
        when(mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT)).thenReturn(null);
        mProbe = new ALSProbe(mSensorManager, new Handler(mLooper.getLooper()), TIMEOUT_MS - 1);

        AtomicInteger lux = new AtomicInteger(-5);
        mProbe.awaitNextLux((v) -> lux.set(Math.round(v)), null /* handler */);

        // Verify that no light sensor will be registered.
        verify(mSensorManager, times(0)).registerListener(
                mSensorEventListenerCaptor.capture(), any(), anyInt());

        assertThat(lux.get()).isEqualTo(-1);
    }

    private void moveTimeBy(long millis) {
        mLooper.moveTimeForward(millis);
        mLooper.processAllMessages();