summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWenhui Yang <wenhuiy@google.com>2024-03-05 18:57:57 +0000
committerAndroid Build Cherrypicker Worker <android-build-cherrypicker-worker@google.com>2024-03-05 18:57:57 +0000
commit5eda411dbfa8861575db9aec1c7c3814a9f7a812 (patch)
treef6322a5c6ac047e4920690cd3d67b94b5182fca4
parentb632fda9db5a2dfa9daa015a9ad0681286bcb6f7 (diff)
downloadbase-5eda411dbfa8861575db9aec1c7c3814a9f7a812.tar.gz
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
-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();