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

Commit a7922e81 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes Iba982234,I7e4640f7 into main

* changes:
  Update KeyguardDismissActionInteractor to work with compose bouncer
  Include keyguard dismiss action refactor as part of compose bouncer
parents 686b26fe 9eb05607
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -21,6 +21,10 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag

object ComposeBouncerFlags {

    /** @see [isComposeBouncerOrSceneContainerEnabled] */
    val isEnabled: Boolean
        get() = isComposeBouncerOrSceneContainerEnabled()

    /**
     * Returns `true` if the Compose bouncer is enabled or if the scene container framework is
     * enabled; `false` otherwise.
+33 −12
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
package com.android.systemui.keyguard.domain.interactor

import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
@@ -32,6 +33,7 @@ import com.android.systemui.scene.domain.resolver.NotifShadeSceneFamilyResolver
import com.android.systemui.scene.domain.resolver.QuickSettingsSceneFamilyResolver
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.util.kotlin.Utils.Companion.sampleFilter
import com.android.systemui.util.kotlin.sample
import javax.inject.Inject
@@ -44,6 +46,7 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.stateIn
@@ -58,12 +61,14 @@ constructor(
    transitionInteractor: KeyguardTransitionInteractor,
    val dismissInteractor: KeyguardDismissInteractor,
    @Application private val applicationScope: CoroutineScope,
    sceneInteractor: SceneInteractor,
    deviceEntryInteractor: DeviceEntryInteractor,
    quickSettingsSceneFamilyResolver: QuickSettingsSceneFamilyResolver,
    notifShadeSceneFamilyResolver: NotifShadeSceneFamilyResolver,
    sceneInteractor: dagger.Lazy<SceneInteractor>,
    deviceEntryInteractor: dagger.Lazy<DeviceEntryInteractor>,
    quickSettingsSceneFamilyResolver: dagger.Lazy<QuickSettingsSceneFamilyResolver>,
    notifShadeSceneFamilyResolver: dagger.Lazy<NotifShadeSceneFamilyResolver>,
    powerInteractor: PowerInteractor,
    alternateBouncerInteractor: AlternateBouncerInteractor,
    keyguardInteractor: dagger.Lazy<KeyguardInteractor>,
    shadeInteractor: dagger.Lazy<ShadeInteractor>,
) {
    val dismissAction: Flow<DismissAction> = repository.dismissAction

@@ -98,15 +103,31 @@ constructor(
     * device is unlocked. Else, false.
     */
    private val isOnShadeWhileUnlocked: Flow<Boolean> =
        if (SceneContainerFlag.isEnabled) {
            combine(
                sceneInteractor.currentScene,
                deviceEntryInteractor.isUnlocked,
                    sceneInteractor.get().currentScene,
                    deviceEntryInteractor.get().isUnlocked,
                ) { scene, isUnlocked ->
                    isUnlocked &&
                    (quickSettingsSceneFamilyResolver.includesScene(scene) ||
                        notifShadeSceneFamilyResolver.includesScene(scene))
                        (quickSettingsSceneFamilyResolver.get().includesScene(scene) ||
                            notifShadeSceneFamilyResolver.get().includesScene(scene))
                }
                .distinctUntilChanged()
        } else if (ComposeBouncerFlags.isOnlyComposeBouncerEnabled()) {
            shadeInteractor.get().isAnyExpanded.sample(
                keyguardInteractor.get().isKeyguardDismissible
            ) { isAnyExpanded, isKeyguardDismissible ->
                isAnyExpanded && isKeyguardDismissible
            }
        } else {
            flow {
                error(
                    "This should not be used when both SceneContainerFlag " +
                        "and ComposeBouncerFlag are disabled"
                )
            }
        }

    val executeDismissAction: Flow<() -> KeyguardDone> =
        merge(
                finishedTransitionToGone,
+2 −2
Original line number Diff line number Diff line
@@ -17,11 +17,11 @@ package com.android.systemui.keyguard.ui.binder

import com.android.keyguard.logging.KeyguardLogger
import com.android.systemui.CoreStartable
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissActionInteractor
import com.android.systemui.log.core.LogLevel
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.util.kotlin.sample
import dagger.Lazy
import javax.inject.Inject
@@ -41,7 +41,7 @@ constructor(
) : CoreStartable {

    override fun start() {
        if (!SceneContainerFlag.isEnabled) {
        if (!ComposeBouncerFlags.isEnabled) {
            return
        }

+2 −4
Original line number Diff line number Diff line
@@ -18,13 +18,12 @@ package com.android.systemui.keyguard.ui.binder
import com.android.keyguard.ViewMediatorCallback
import com.android.keyguard.logging.KeyguardLogger
import com.android.systemui.CoreStartable
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissInteractor
import com.android.systemui.keyguard.shared.model.KeyguardDone
import com.android.systemui.log.core.LogLevel
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -40,11 +39,10 @@ constructor(
    private val viewMediatorCallback: ViewMediatorCallback,
    @Application private val scope: CoroutineScope,
    private val keyguardLogger: KeyguardLogger,
    private val featureFlags: FeatureFlagsClassic,
) : CoreStartable {

    override fun start() {
        if (!SceneContainerFlag.isEnabled) {
        if (!ComposeBouncerFlags.isEnabled) {
            return
        }

+2 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.keyguard.ui.viewmodel

import com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissActionInteractor
import com.android.systemui.keyguard.shared.model.Edge
import com.android.systemui.keyguard.shared.model.KeyguardState
@@ -25,7 +26,6 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
import com.android.systemui.keyguard.shared.model.ScrimAlpha
import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.SysuiStatusBarStateController
@@ -51,7 +51,7 @@ constructor(
) {
    /** Common fade for scrim alpha values during *BOUNCER->GONE */
    fun scrimAlpha(duration: Duration, fromState: KeyguardState): Flow<ScrimAlpha> {
        return if (SceneContainerFlag.isEnabled) {
        return if (ComposeBouncerFlags.isEnabled) {
            keyguardDismissActionInteractor
                .get()
                .willAnimateDismissActionOnLockscreen
Loading