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

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

Merge "Run screen off controller on rotation" into main

parents 1f0492aa c2b05606
Loading
Loading
Loading
Loading
+29 −46
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import com.android.systemui.shade.domain.interactor.ShadeLockscreenInteractor
import com.android.systemui.statusbar.LightRevealScrim
import com.android.systemui.statusbar.NotificationShadeWindowController
import com.android.systemui.statusbar.StatusBarStateControllerImpl
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.settings.GlobalSettings
@@ -56,48 +55,32 @@ import org.mockito.MockitoAnnotations
class UnlockedScreenOffAnimationControllerTest : SysuiTestCase() {

    private lateinit var controller: UnlockedScreenOffAnimationController
    @Mock
    private lateinit var keyguardViewMediator: KeyguardViewMediator
    @Mock
    private lateinit var dozeParameters: DozeParameters
    @Mock
    private lateinit var keyguardStateController: KeyguardStateController
    @Mock
    private lateinit var globalSettings: GlobalSettings
    @Mock
    private lateinit var centralSurfaces: CentralSurfaces
    @Mock
    private lateinit var shadeViewController: ShadeViewController
    @Mock
    private lateinit var shadeLockscreenInteractor: ShadeLockscreenInteractor
    @Mock
    private lateinit var panelExpansionInteractor: PanelExpansionInteractor
    @Mock
    private lateinit var notifShadeWindowController: NotificationShadeWindowController
    @Mock
    private lateinit var lightRevealScrim: LightRevealScrim
    @Mock
    private lateinit var wakefulnessLifecycle: WakefulnessLifecycle
    @Mock
    private lateinit var statusBarStateController: StatusBarStateControllerImpl
    @Mock
    private lateinit var interactionJankMonitor: InteractionJankMonitor
    @Mock
    private lateinit var powerManager: PowerManager
    @Mock
    private lateinit var handler: Handler
    @Mock private lateinit var keyguardViewMediator: KeyguardViewMediator
    @Mock private lateinit var dozeParameters: DozeParameters
    @Mock private lateinit var globalSettings: GlobalSettings
    @Mock private lateinit var centralSurfaces: CentralSurfaces
    @Mock private lateinit var shadeViewController: ShadeViewController
    @Mock private lateinit var shadeLockscreenInteractor: ShadeLockscreenInteractor
    @Mock private lateinit var panelExpansionInteractor: PanelExpansionInteractor
    @Mock private lateinit var notifShadeWindowController: NotificationShadeWindowController
    @Mock private lateinit var lightRevealScrim: LightRevealScrim
    @Mock private lateinit var wakefulnessLifecycle: WakefulnessLifecycle
    @Mock private lateinit var statusBarStateController: StatusBarStateControllerImpl
    @Mock private lateinit var interactionJankMonitor: InteractionJankMonitor
    @Mock private lateinit var powerManager: PowerManager
    @Mock private lateinit var handler: Handler

    val kosmos = testKosmos()

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        controller = UnlockedScreenOffAnimationController(
        controller =
            UnlockedScreenOffAnimationController(
                context,
                wakefulnessLifecycle,
                statusBarStateController,
                { keyguardViewMediator },
            keyguardStateController,
                { dozeParameters },
                globalSettings,
                { notifShadeWindowController },
+5 −30
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ import android.os.Handler
import android.os.PowerManager
import android.provider.Settings
import android.view.Display
import android.view.Surface
import android.view.View
import android.view.WindowManager.fixScale
import com.android.app.animation.Interpolators
@@ -35,7 +34,6 @@ import com.android.systemui.statusbar.notification.AnimatableProperty
import com.android.systemui.statusbar.notification.PropertyAnimator
import com.android.systemui.statusbar.notification.stack.AnimationProperties
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.settings.GlobalSettings
import dagger.Lazy
import javax.inject.Inject
@@ -64,7 +62,6 @@ constructor(
    private val wakefulnessLifecycle: WakefulnessLifecycle,
    private val statusBarStateControllerImpl: StatusBarStateControllerImpl,
    private val keyguardViewMediatorLazy: Lazy<KeyguardViewMediator>,
    private val keyguardStateController: KeyguardStateController,
    private val dozeParameters: Lazy<DozeParameters>,
    private val globalSettings: GlobalSettings,
    private val notifShadeWindowControllerLazy: Lazy<NotificationShadeWindowController>,
@@ -293,13 +290,10 @@ constructor(
            handler.postDelayed(
                {
                    // Only run this callback if the device is sleeping (not interactive). This
                    // callback
                    // is removed in onStartedWakingUp, but since that event is asynchronously
                    // dispatched, a race condition could make it possible for this callback to be
                    // run
                    // as the device is waking up. That results in the AOD UI being shown while we
                    // wake
                    // up, with unpredictable consequences.
                    // callback is removed in onStartedWakingUp, but since that event is
                    // asynchronously dispatched, a race condition could make it possible for this
                    // callback to be run as the device is waking up. That results in the AOD UI
                    // being shown while we wake up, with unpredictable consequences.
                    if (
                        !powerManager.isInteractive(Display.DEFAULT_DISPLAY) &&
                            shouldAnimateInKeyguard
@@ -357,26 +351,7 @@ constructor(
            return false
        }

        // We currently draw both the light reveal scrim, and the AOD UI, in the shade. If it's
        // already expanded and showing notifications/QS, the animation looks really messy. For now,
        // disable it if the notification panel is expanded.
        if (
            (!this::centralSurfaces.isInitialized ||
                panelExpansionInteractorLazy.get().isPanelExpanded) &&
                // Status bar might be expanded because we have started
                // playing the animation already
                !isAnimationPlaying()
        ) {
            return false
        }

        // If we're not allowed to rotate the keyguard, it can only be displayed in zero-degree
        // portrait. If we're in another orientation, disable the screen off animation so we don't
        // animate in the keyguard AOD UI sideways or upside down.
        if (
            !keyguardStateController.isKeyguardScreenRotationAllowed &&
                context.display?.rotation != Surface.ROTATION_0
        ) {
        if (!this::centralSurfaces.isInitialized) {
            return false
        }