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

Commit 188e8469 authored by Bryce Lee's avatar Bryce Lee
Browse files

Update nullability of light sensor injection.

This changelist allows the light sensor to be null even if the binding
is present.

Test: SystemUI does not crash when running on devices with no light
      sensor
Test: atest AmbientLightModeMonitorTest
Flag: EXEMPT bugfix
Bug: 393222374
Change-Id: I90b746b3aab118f9fc90fc117fe31f188e7d93b9
parent 96edebcb
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import java.io.PrintWriter
import java.util.Optional
import javax.inject.Inject
import javax.inject.Named
import javax.inject.Provider

/**
 * Monitors ambient light signals, applies a debouncing algorithm, and produces the current ambient
@@ -43,7 +44,7 @@ class AmbientLightModeMonitor
constructor(
    private val algorithm: Optional<DebounceAlgorithm>,
    private val sensorManager: AsyncSensorManager,
    @Named(LIGHT_SENSOR) private val lightSensor: Optional<Sensor>,
    @Named(LIGHT_SENSOR) private val lightSensor: Optional<Provider<Sensor>>,
) : Dumpable {
    companion object {
        private const val TAG = "AmbientLightModeMonitor"
@@ -67,7 +68,7 @@ constructor(
    fun start(callback: Callback) {
        if (DEBUG) Log.d(TAG, "start monitoring ambient light mode")

        if (lightSensor.isEmpty) {
        if (lightSensor.isEmpty || lightSensor.get().get() == null) {
            if (DEBUG) Log.w(TAG, "light sensor not available")
            return
        }
@@ -80,7 +81,7 @@ constructor(
        algorithm.get().start(callback)
        sensorManager.registerListener(
            mSensorEventListener,
            lightSensor.get(),
            lightSensor.get().get(),
            SensorManager.SENSOR_DELAY_NORMAL,
        )
    }
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.lowlightclock.dagger;

import android.annotation.Nullable;
import android.content.res.Resources;
import android.hardware.Sensor;

@@ -100,6 +101,7 @@ public abstract class LowLightModule {
    abstract LowLightDisplayController bindsLowLightDisplayController();

    @BindsOptionalOf
    @Nullable
    @Named(LIGHT_SENSOR)
    abstract Sensor bindsLightSensor();

+6 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.util.sensors.AsyncSensorManager
import java.util.Optional
import javax.inject.Provider
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -50,7 +51,11 @@ class AmbientLightModeMonitorTest : SysuiTestCase() {
        MockitoAnnotations.initMocks(this)

        ambientLightModeMonitor =
            AmbientLightModeMonitor(Optional.of(algorithm), sensorManager, Optional.of(sensor))
            AmbientLightModeMonitor(
                Optional.of(algorithm),
                sensorManager,
                Optional.of(Provider { sensor }),
            )
    }

    @Test