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

Commit df052761 authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Flag cleanup" into main

parents 067d0d32 d6300a6b
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -1621,16 +1621,6 @@ flag {
  bug: "362719719"
}

flag {
  name: "transition_race_condition"
  namespace: "systemui"
  description: "Thread-safe keyguard transitions"
  bug: "358533338"
  metadata {
       purpose: PURPOSE_BUGFIX
  }
}

flag {
   name: "media_projection_request_attribution_fix"
   namespace: "systemui"
+0 −54
Original line number Diff line number Diff line
@@ -727,59 +727,6 @@ class SceneContainerStartableTest : SysuiTestCase() {
        }

    @Test
    @DisableFlags(Flags.FLAG_TRANSITION_RACE_CONDITION)
    fun switchToAOD_whenAvailable_whenDeviceSleepsLocked() =
        testScope.runTest {
            kosmos.lockscreenSceneTransitionInteractor.start()
            val asleepState by collectLastValue(keyguardInteractor.asleepKeyguardState)
            val currentTransitionInfo by
                collectLastValue(kosmos.keyguardTransitionRepository.currentTransitionInfoInternal)
            val transitionState =
                prepareState(isDeviceUnlocked = false, initialSceneKey = Scenes.Shade)
            kosmos.keyguardRepository.setAodAvailable(true)
            runCurrent()
            assertThat(asleepState).isEqualTo(KeyguardState.AOD)
            underTest.start()
            powerInteractor.setAsleepForTest()
            runCurrent()
            transitionState.value =
                ObservableTransitionState.Transition(
                    fromScene = Scenes.Shade,
                    toScene = Scenes.Lockscreen,
                    currentScene = flowOf(Scenes.Lockscreen),
                    progress = flowOf(0.5f),
                    isInitiatedByUserInput = true,
                    isUserInputOngoing = flowOf(false),
                )
            runCurrent()

            assertThat(currentTransitionInfo?.to).isEqualTo(KeyguardState.AOD)
        }

    @Test
    @DisableFlags(Flags.FLAG_TRANSITION_RACE_CONDITION)
    fun switchToDozing_whenAodUnavailable_whenDeviceSleepsLocked() =
        testScope.runTest {
            kosmos.lockscreenSceneTransitionInteractor.start()
            val asleepState by collectLastValue(keyguardInteractor.asleepKeyguardState)
            val currentTransitionInfo by
                collectLastValue(kosmos.keyguardTransitionRepository.currentTransitionInfoInternal)
            val transitionState =
                prepareState(isDeviceUnlocked = false, initialSceneKey = Scenes.Shade)
            kosmos.keyguardRepository.setAodAvailable(false)
            runCurrent()
            assertThat(asleepState).isEqualTo(KeyguardState.DOZING)
            underTest.start()
            powerInteractor.setAsleepForTest()
            runCurrent()
            transitionState.value = Transition(from = Scenes.Shade, to = Scenes.Lockscreen)
            runCurrent()

            assertThat(currentTransitionInfo?.to).isEqualTo(KeyguardState.DOZING)
        }

    @Test
    @EnableFlags(Flags.FLAG_TRANSITION_RACE_CONDITION)
    fun switchToAOD_whenAvailable_whenDeviceSleepsLocked_transitionFlagEnabled() =
        testScope.runTest {
            kosmos.lockscreenSceneTransitionInteractor.start()
@@ -808,7 +755,6 @@ class SceneContainerStartableTest : SysuiTestCase() {
        }

    @Test
    @EnableFlags(Flags.FLAG_TRANSITION_RACE_CONDITION)
    fun switchToDozing_whenAodUnavailable_whenDeviceSleepsLocked_transitionFlagEnabled() =
        testScope.runTest {
            kosmos.lockscreenSceneTransitionInteractor.start()
+9 −38
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.util.Log
import com.android.app.animation.Interpolators
import com.android.app.tracing.coroutines.flow.traceAs
import com.android.app.tracing.coroutines.withContextTraced as withContext
import com.android.systemui.Flags.transitionRaceCondition
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -42,9 +41,6 @@ import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.sync.Mutex
@@ -77,8 +73,6 @@ interface KeyguardTransitionRepository {
     */
    val transitions: Flow<TransitionStep>

    /** The [TransitionInfo] of the most recent call to [startTransition]. */
    val currentTransitionInfoInternal: StateFlow<TransitionInfo>
    /** The [TransitionInfo] of the most recent call to [startTransition]. */
    val currentTransitionInfo: TransitionInfo

@@ -154,16 +148,6 @@ constructor(
    private var animatorListener: AnimatorListenerAdapter? = null

    private val withContextMutex = Mutex()
    private val _currentTransitionInfo: MutableStateFlow<TransitionInfo> =
        MutableStateFlow(
            TransitionInfo(
                ownerName = "",
                from = KeyguardState.OFF,
                to = KeyguardState.OFF,
                animator = null,
            )
        )
    override var currentTransitionInfoInternal = _currentTransitionInfo.asStateFlow()

    @Volatile
    override var currentTransitionInfo: TransitionInfo =
@@ -194,11 +178,7 @@ constructor(
    }

    override suspend fun startTransition(info: TransitionInfo): UUID? {
        if (transitionRaceCondition()) {
        currentTransitionInfo = info
        } else {
            _currentTransitionInfo.value = info
        }
        Log.d(TAG, "(Internal) Setting current transition info: $info")

        // There is no fairness guarantee with 'withContext', which means that transitions could
@@ -371,7 +351,6 @@ constructor(
        // Tests runs on testDispatcher, which is not the main thread, causing the animator thread
        // check to fail
        if (testSetup) {
            if (transitionRaceCondition()) {
            currentTransitionInfo =
                TransitionInfo(
                    ownerName = ownerName,
@@ -379,15 +358,7 @@ constructor(
                    to = to,
                    animator = null,
                )
            } else {
                _currentTransitionInfo.value =
                    TransitionInfo(
                        ownerName = ownerName,
                        from = KeyguardState.OFF,
                        to = to,
                        animator = null,
                    )
            }

            emitTransition(
                TransitionStep(
                    KeyguardState.OFF,
+1 −8
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui.keyguard.domain.interactor

import android.annotation.FloatRange
import com.android.systemui.Flags.transitionRaceCondition
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.TransitionInfo
@@ -56,13 +55,7 @@ constructor(private val repository: KeyguardTransitionRepository) {
     * *will* be emitted, and therefore that it can safely request an AOD -> LOCKSCREEN transition
     * which will subsequently cancel GONE -> AOD.
     */
    internal fun currentTransitionInfoInternal(): TransitionInfo {
        return if (transitionRaceCondition()) {
            repository.currentTransitionInfo
        } else {
            repository.currentTransitionInfoInternal.value
        }
    }
    internal fun currentTransitionInfoInternal(): TransitionInfo = repository.currentTransitionInfo

    suspend fun startTransition(info: TransitionInfo) = repository.startTransition(info)

+1 −8
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.keyguard.domain.interactor

import android.animation.ValueAnimator
import android.util.Log
import com.android.systemui.Flags.transitionRaceCondition
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
@@ -70,13 +69,7 @@ constructor(
        Log.d(TAG, "#startDismissKeyguardTransition(reason=$reason)")

        scope.launch {
            val startedState =
                if (transitionRaceCondition()) {
                    repository.currentTransitionInfo.to
                } else {
                    repository.currentTransitionInfoInternal.value.to
                }

            val startedState = repository.currentTransitionInfo.to
            val animator: ValueAnimator? =
                when (startedState) {
                    LOCKSCREEN -> fromLockscreenTransitionInteractor
Loading