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

Commit 28df4381 authored by William Escande's avatar William Escande
Browse files

SystemServer: AutoOn: Satellite override

Suspend timer during Satellite time

Bug: 323060869
Bug: 316946334
Test: atest ServiceBluetoothRoboTest
Change-Id: Ia2f6e1b540477793084cac6e70edd977cc68d523
parent 1fbc702c
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.os.Looper
import android.provider.Settings
import androidx.annotation.VisibleForTesting
import com.android.modules.expresslog.Counter
import com.android.server.bluetooth.satellite.isOn as isSatelliteModeOn
import java.time.LocalDateTime
import java.time.LocalTime
import java.time.temporal.ChronoUnit
@@ -53,6 +54,10 @@ public fun resetAutoOnTimerForUser(
        Log.d(TAG, "Bluetooth already in ${state}, no need for timer")
        return
    }
    if (isSatelliteModeOn) {
        Log.d(TAG, "Satellite prevent feature activation")
        return
    }

    timer = Timer.start(looper, context, callback_on)
}
+17 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import com.android.server.bluetooth.isUserSupported
import com.android.server.bluetooth.notifyBluetoothOn
import com.android.server.bluetooth.pause
import com.android.server.bluetooth.resetAutoOnTimerForUser
import com.android.server.bluetooth.satellite.isOn as isSatelliteModeOn
import com.android.server.bluetooth.satellite.test.ModeListenerTest as SatelliteListener
import com.android.server.bluetooth.setUserEnabled
import com.android.server.bluetooth.timer
import com.google.common.truth.Expect
@@ -303,4 +305,19 @@ class AutoOnFeatureTest {
        expect.that(callback_count).isEqualTo(1)
        expectNoStorageTime()
    }

    @Test
    fun setupTimer_whenSatelliteIsOn_isNotScheduled() {
        val satelliteCallback: (m: Boolean) -> Unit = { _: Boolean -> }

        SatelliteListener.setupSatelliteModeToOn(resolver, looper, satelliteCallback)
        assertThat(isSatelliteModeOn).isTrue()

        setupTimer()

        SatelliteListener.setupSatelliteModeToOff(resolver, looper)
        expect.that(timer).isNull()
        expect.that(callback_count).isEqualTo(0)
        expectNoStorageTime()
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -546,9 +546,14 @@ class BluetoothManagerService {
                    BluetoothProtoEnums.ENABLE_DISABLE_REASON_SATELLITE_MODE,
                    mContext.getPackageName());
        } else if (!shouldBluetoothBeOn(isSatelliteModeOn) && getState() != STATE_OFF) {
            AutoOnFeature.pause();
            sendDisableMsg(
                    BluetoothProtoEnums.ENABLE_DISABLE_REASON_SATELLITE_MODE,
                    mContext.getPackageName());
        } else if (!isSatelliteModeOn
                && !shouldBluetoothBeOn(isSatelliteModeOn)
                && getState() != STATE_ON) {
            autoOnSetupTimer();
        }
    }

+18 −0
Original line number Diff line number Diff line
@@ -40,6 +40,24 @@ import org.robolectric.RobolectricTestRunner

@RunWith(RobolectricTestRunner::class)
class ModeListenerTest {
    companion object {
        internal fun setupSatelliteModeToOn(
            resolver: ContentResolver,
            looper: Looper,
            callback: (m: Boolean) -> Unit
        ) {
            enableSensitive(resolver, looper, SETTINGS_SATELLITE_MODE_RADIOS)
            enableMode(resolver, looper, SETTINGS_SATELLITE_MODE_ENABLED)

            initialize(looper, resolver, callback)
        }

        internal fun setupSatelliteModeToOff(resolver: ContentResolver, looper: Looper) {
            disableSensitive(resolver, looper, SETTINGS_SATELLITE_MODE_RADIOS)
            disableMode(resolver, looper, SETTINGS_SATELLITE_MODE_ENABLED)
        }
    }

    private val resolver: ContentResolver =
        ApplicationProvider.getApplicationContext<Context>().getContentResolver()
    @JvmField @Rule val testName = TestName()