summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWenhui Yang <wenhuiy@google.com>2024-03-05 18:57:57 +0000
committerHung-ying Tyan <tyanh@google.com>2024-03-07 09:18:19 +0000
commit9e0da46522ec25566552e987d18095ace47458d6 (patch)
tree4eba5c4360932afe14d08bd401ddaea5e0ef5386
parentc9363add3d2ea5eb049bd75b7bc9daa6ba5d6fee (diff)
downloadbase-9e0da46522ec25566552e987d18095ace47458d6.tar.gz
Check light sensor is null for biometric logging
Bug: 327330325 Bug: 327095853 Test: ALSProbeTest (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:54534f9c7e2830ce98602ab50811d9aa38d3617d) Merged-In: I7604f1dd8b1314822b141e18b1c2d6fb717db4ae Change-Id: I7604f1dd8b1314822b141e18b1c2d6fb717db4ae (cherry picked from commit 5eda411dbfa8861575db9aec1c7c3814a9f7a812)
-rw-r--r--services/core/java/com/android/server/biometrics/log/ALSProbe.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/biometrics/log/ALSProbeTest.java15
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();