From 5eda411dbfa8861575db9aec1c7c3814a9f7a812 Mon Sep 17 00:00:00 2001 From: Wenhui Yang Date: Tue, 5 Mar 2024 18:57:57 +0000 Subject: Cherry pick the cl to aosp to unblock partner. Check light sensor is null for biometric logging Bug: 327330325 Test: ALSProbeTest (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:54534f9c7e2830ce98602ab50811d9aa38d3617d) Merged-In: I7604f1dd8b1314822b141e18b1c2d6fb717db4ae Change-Id: I7604f1dd8b1314822b141e18b1c2d6fb717db4ae --- .../java/com/android/server/biometrics/log/ALSProbe.java | 9 ++++++--- .../com/android/server/biometrics/log/ALSProbeTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/biometrics/log/ALSProbe.java b/services/core/java/com/android/server/biometrics/log/ALSProbe.java index d584c99cea72..d4e46a930124 100644 --- a/services/core/java/com/android/server/biometrics/log/ALSProbe.java +++ b/services/core/java/com/android/server/biometrics/log/ALSProbe.java @@ -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; diff --git a/services/tests/servicestests/src/com/android/server/biometrics/log/ALSProbeTest.java b/services/tests/servicestests/src/com/android/server/biometrics/log/ALSProbeTest.java index bb0063427339..fa1fd90e10c9 100644 --- a/services/tests/servicestests/src/com/android/server/biometrics/log/ALSProbeTest.java +++ b/services/tests/servicestests/src/com/android/server/biometrics/log/ALSProbeTest.java @@ -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(); -- cgit v1.2.3-59-g8ed1b