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

Commit ba5b1994 authored by Andreas Miko's avatar Andreas Miko
Browse files

Refactor startDismissKeyguard into KeyguardDismissTransitionInteractor

There are two issues with that method being in
KeyguardTransitionInteractor:
1. Because it references back to TransitionInteractors it creates
dependency cycles that were resolved by using dagger.Lazy (avoid where
possible)
2. KeyguardTransitionInteractor is supposed to be a source to query or
listen to the state of Keyguard Transition Framework. This violates SRP
by adding unrelated functionality that a) is not relevant to most users
of KTI (usually developers of lockscreen features that don't have deep
understanding of KTF) and b) adds a lot of noise and dependencies to the
class which makes it hard to parse and pick the relevant APIs.

Bug: b/330311871
Flag: EXEMPT refactor
Test: REFACTOR_ONLY
Change-Id: I7b7d8da15d62de6e82e678539b6439e7dff1ea3f
parent ab224625
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.flags.Flags
import com.android.systemui.keyboard.data.repository.FakeKeyboardRepository
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardDismissTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
import com.android.systemui.kosmos.Kosmos
@@ -279,7 +280,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                deviceProvisionedController,
                faceAuthAccessibilityDelegate,
                devicePolicyManager,
                keyguardTransitionInteractor,
                kosmos.keyguardDismissTransitionInteractor,
                { primaryBouncerInteractor },
            ) {
                deviceEntryInteractor
+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ class FromAlternateBouncerTransitionInteractorTest : SysuiTestCase() {
            reset(transitionRepository)

            // Authentication results in calling startDismissKeyguardTransition.
            kosmos.keyguardTransitionInteractor.startDismissKeyguardTransition()
            kosmos.keyguardDismissTransitionInteractor.startDismissKeyguardTransition()
            runCurrent()

            assertThat(transitionRepository)
+1 −1
Original line number Diff line number Diff line
@@ -327,7 +327,7 @@ class FromAodTransitionInteractorTest : SysuiTestCase() {
        testScope.runTest {
            kosmos.fakeKeyguardRepository.setKeyguardShowing(false)
            kosmos.fakeKeyguardRepository.setKeyguardDismissible(true)
            kosmos.keyguardTransitionInteractor.startDismissKeyguardTransition()
            kosmos.keyguardDismissTransitionInteractor.startDismissKeyguardTransition()
            powerInteractor.setAwakeForTest()
            advanceTimeBy(100) // account for debouncing

+5 −5
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInt
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.keyguard.KeyguardWmStateRefactor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissTransitionInteractor;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
@@ -134,7 +134,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
    private final DeviceEntryFaceAuthInteractor mDeviceEntryFaceAuthInteractor;
    private final BouncerMessageInteractor mBouncerMessageInteractor;
    private int mTranslationY;
    private final KeyguardTransitionInteractor mKeyguardTransitionInteractor;
    private final KeyguardDismissTransitionInteractor mKeyguardDismissTransitionInteractor;
    private final DevicePolicyManager mDevicePolicyManager;
    // Whether the volume keys should be handled by keyguard. If true, then
    // they will be handled here for specific media types such as music, otherwise
@@ -321,7 +321,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            }

            if (KeyguardWmStateRefactor.isEnabled()) {
                mKeyguardTransitionInteractor.startDismissKeyguardTransition(
                mKeyguardDismissTransitionInteractor.startDismissKeyguardTransition(
                        "KeyguardSecurityContainerController#finish");
            }
        }
@@ -458,7 +458,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            DeviceProvisionedController deviceProvisionedController,
            FaceAuthAccessibilityDelegate faceAuthAccessibilityDelegate,
            DevicePolicyManager devicePolicyManager,
            KeyguardTransitionInteractor keyguardTransitionInteractor,
            KeyguardDismissTransitionInteractor keyguardDismissTransitionInteractor,
            Lazy<PrimaryBouncerInteractor> primaryBouncerInteractor,
            Provider<DeviceEntryInteractor> deviceEntryInteractor
    ) {
@@ -490,7 +490,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        mSelectedUserInteractor = selectedUserInteractor;
        mDeviceEntryInteractor = deviceEntryInteractor;
        mJavaAdapter = javaAdapter;
        mKeyguardTransitionInteractor = keyguardTransitionInteractor;
        mKeyguardDismissTransitionInteractor = keyguardDismissTransitionInteractor;
        mDeviceProvisionedController = deviceProvisionedController;
        mPrimaryBouncerInteractor = primaryBouncerInteractor;
        mDevicePolicyManager = devicePolicyManager;
+3 −3
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import android.view.RemoteAnimationTarget
import android.view.WindowManager
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissTransitionInteractor
import com.android.systemui.keyguard.ui.binder.KeyguardSurfaceBehindParamsApplier
import com.android.systemui.statusbar.policy.KeyguardStateController
import java.util.concurrent.Executor
@@ -41,7 +41,7 @@ constructor(
    private val activityTaskManagerService: IActivityTaskManager,
    private val keyguardStateController: KeyguardStateController,
    private val keyguardSurfaceBehindAnimator: KeyguardSurfaceBehindParamsApplier,
    private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
    private val keyguardDismissTransitionInteractor: KeyguardDismissTransitionInteractor,
) {

    /**
@@ -148,7 +148,7 @@ constructor(
        // a transition to GONE. This transition needs to start even if we're not provided an app
        // animation target - it's possible the app is destroyed on creation, etc. but we'll still
        // be unlocking.
        keyguardTransitionInteractor.startDismissKeyguardTransition(
        keyguardDismissTransitionInteractor.startDismissKeyguardTransition(
            reason = "Going away remote animation started"
        )

Loading