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

Commit 498a18e2 authored by Andreas Miko's avatar Andreas Miko
Browse files

Refactor out KeyguardUpdateMonitor.getCurrentUser() 2/X

This commit refactors static references from KeyguardUpdateMonitor
.getCurrentUser() to UserInteractor.getSelectedUserId() to consolidate
one single source of truth in the entire code base.

This CL submits a bulk of these refactors that are "easy" to do. These
changes are not supposed to contain any changes in logic. There will be
subsequent smaller CLs for cases where injecting UserInteractor creates
more complicated to resolve dependency cycles.

Test: Ran all Sysui tests
Bug: b/303808405
Bug: b/297839820
Flag: b/305984787 - REFACTOR_GETCURRENTUSER (added in ag/25089323)
Change-Id: I9deb87b90db823bc2e91e7ceb961d9c23dc4da18
parent f3dcc77d
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.keyguard.dagger.KeyguardBouncerScope;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;

import java.util.NoSuchElementException;

@@ -63,6 +64,7 @@ public class AdminSecondaryLockScreenController {
    private Handler mHandler;
    private IKeyguardClient mClient;
    private KeyguardSecurityCallback mKeyguardCallback;
    private SelectedUserInteractor mSelectedUserInteractor;

    private final ServiceConnection mConnection = new ServiceConnection() {
        @Override
@@ -76,7 +78,7 @@ public class AdminSecondaryLockScreenController {
                } catch (RemoteException e) {
                    // Failed to link to death, just dismiss and unbind the service for now.
                    Log.e(TAG, "Lost connection to secondary lockscreen service", e);
                    dismiss(KeyguardUpdateMonitor.getCurrentUser());
                    dismiss(mSelectedUserInteractor.getSelectedUserId());
                }
            }
        }
@@ -110,7 +112,7 @@ public class AdminSecondaryLockScreenController {
                mView.setChildSurfacePackage(surfacePackage);
            } else {
                mHandler.post(() -> {
                    dismiss(KeyguardUpdateMonitor.getCurrentUser());
                    dismiss(mSelectedUserInteractor.getSelectedUserId());
                });
            }
        }
@@ -131,7 +133,7 @@ public class AdminSecondaryLockScreenController {
    protected SurfaceHolder.Callback mSurfaceHolderCallback = new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            final int userId = KeyguardUpdateMonitor.getCurrentUser();
            final int userId = mSelectedUserInteractor.getSelectedUserId();
            mUpdateMonitor.registerCallback(mUpdateCallback);

            if (mClient != null) {
@@ -158,7 +160,7 @@ public class AdminSecondaryLockScreenController {

    private AdminSecondaryLockScreenController(Context context, KeyguardSecurityContainer parent,
            KeyguardUpdateMonitor updateMonitor, KeyguardSecurityCallback callback,
            @Main Handler handler) {
            @Main Handler handler, SelectedUserInteractor selectedUserInteractor) {
        mContext = context;
        mHandler = handler;
        mParent = parent;
@@ -166,6 +168,7 @@ public class AdminSecondaryLockScreenController {
        mKeyguardCallback = callback;
        mView = new AdminSecurityView(mContext, mSurfaceHolderCallback);
        mView.setId(View.generateViewId());
        mSelectedUserInteractor = selectedUserInteractor;
    }

    /**
@@ -218,13 +221,13 @@ public class AdminSecondaryLockScreenController {
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error in onCreateKeyguardSurface", e);
            dismiss(KeyguardUpdateMonitor.getCurrentUser());
            dismiss(mSelectedUserInteractor.getSelectedUserId());
        }
    }

    private void dismiss(int userId) {
        mHandler.removeCallbacksAndMessages(null);
        if (mView.isAttachedToWindow() && userId == KeyguardUpdateMonitor.getCurrentUser()) {
        if (mView.isAttachedToWindow() && userId == mSelectedUserInteractor.getSelectedUserId()) {
            hide();
            if (mKeyguardCallback != null) {
                mKeyguardCallback.dismiss(/* securityVerified= */ true, userId,
@@ -265,19 +268,24 @@ public class AdminSecondaryLockScreenController {
        private final KeyguardSecurityContainer mParent;
        private final KeyguardUpdateMonitor mUpdateMonitor;
        private final Handler mHandler;
        private final SelectedUserInteractor mSelectedUserInteractor;

        @Inject
        public Factory(Context context, KeyguardSecurityContainer parent,
                KeyguardUpdateMonitor updateMonitor, @Main Handler handler) {
        public Factory(Context context,
                KeyguardSecurityContainer parent,
                KeyguardUpdateMonitor updateMonitor,
                @Main Handler handler,
                SelectedUserInteractor selectedUserInteractor) {
            mContext = context;
            mParent = parent;
            mUpdateMonitor = updateMonitor;
            mHandler = handler;
            mSelectedUserInteractor = selectedUserInteractor;
        }

        public AdminSecondaryLockScreenController create(KeyguardSecurityCallback callback) {
            return new AdminSecondaryLockScreenController(mContext, mParent, mUpdateMonitor,
                    callback, mHandler);
                    callback, mHandler, mSelectedUserInteractor);
        }
    }
}
+12 −5
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.shade.ShadeController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.EmergencyDialerConstants;
import com.android.systemui.util.ViewController;

@@ -67,6 +68,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
    private LockPatternUtils mLockPatternUtils;
    private Executor mMainExecutor;
    private Executor mBackgroundExecutor;
    private SelectedUserInteractor mSelectedUserInteractor;

    private final KeyguardUpdateMonitorCallback mInfoCallback =
            new KeyguardUpdateMonitorCallback() {
@@ -96,7 +98,8 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
            ShadeController shadeController,
            @Nullable TelecomManager telecomManager, MetricsLogger metricsLogger,
            LockPatternUtils lockPatternUtils,
            Executor mainExecutor, Executor backgroundExecutor) {
            Executor mainExecutor, Executor backgroundExecutor,
            SelectedUserInteractor selectedUserInteractor) {
        super(view);
        mConfigurationController = configurationController;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
@@ -109,6 +112,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
        mLockPatternUtils = lockPatternUtils;
        mMainExecutor = mainExecutor;
        mBackgroundExecutor = backgroundExecutor;
        mSelectedUserInteractor = selectedUserInteractor;
    }

    @Override
@@ -142,7 +146,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
            mBackgroundExecutor.execute(() -> {
                boolean isInCall = mTelecomManager != null && mTelecomManager.isInCall();
                boolean isSecure = mLockPatternUtils
                        .isSecure(KeyguardUpdateMonitor.getCurrentUser());
                        .isSecure(mSelectedUserInteractor.getSelectedUserId());
                mMainExecutor.execute(() -> mView.updateEmergencyCallButton(
                        /* isInCall= */ isInCall,
                        /* hasTelephonyRadio= */ getContext().getPackageManager()
@@ -192,7 +196,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {

                    getContext().startActivityAsUser(emergencyDialIntent,
                            ActivityOptions.makeCustomAnimation(getContext(), 0, 0).toBundle(),
                            new UserHandle(KeyguardUpdateMonitor.getCurrentUser()));
                            new UserHandle(mSelectedUserInteractor.getSelectedUserId()));
                }
            });
        });
@@ -218,6 +222,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
        private final LockPatternUtils mLockPatternUtils;
        private final Executor mMainExecutor;
        private final Executor mBackgroundExecutor;
        private final SelectedUserInteractor mSelectedUserInteractor;

        @Inject
        public Factory(ConfigurationController configurationController,
@@ -227,7 +232,8 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
                @Nullable TelecomManager telecomManager, MetricsLogger metricsLogger,
                LockPatternUtils lockPatternUtils,
                @Main Executor mainExecutor,
                @Background Executor backgroundExecutor) {
                @Background Executor backgroundExecutor,
                SelectedUserInteractor selectedUserInteractor) {

            mConfigurationController = configurationController;
            mKeyguardUpdateMonitor = keyguardUpdateMonitor;
@@ -240,6 +246,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
            mLockPatternUtils = lockPatternUtils;
            mMainExecutor = mainExecutor;
            mBackgroundExecutor = backgroundExecutor;
            mSelectedUserInteractor = selectedUserInteractor;
        }

        /** Construct an {@link com.android.keyguard.EmergencyButtonController}. */
@@ -247,7 +254,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
            return new EmergencyButtonController(view, mConfigurationController,
                    mKeyguardUpdateMonitor, mTelephonyManager, mPowerManager, mActivityTaskManager,
                    mShadeController, mTelecomManager, mMetricsLogger, mLockPatternUtils,
                    mMainExecutor, mBackgroundExecutor);
                    mMainExecutor, mBackgroundExecutor, mSelectedUserInteractor);
        }
    }
}
+7 −6
Original line number Diff line number Diff line
@@ -34,10 +34,11 @@ import com.android.internal.widget.LockscreenCredential;
import com.android.keyguard.EmergencyButtonController.EmergencyButtonCallback;
import com.android.keyguard.KeyguardAbsKeyInputView.KeyDownListener;
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.res.R;
import com.android.systemui.classifier.FalsingClassifier;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.res.R;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;

import java.util.HashMap;
import java.util.Map;
@@ -80,9 +81,9 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
            KeyguardMessageAreaController.Factory messageAreaControllerFactory,
            LatencyTracker latencyTracker, FalsingCollector falsingCollector,
            EmergencyButtonController emergencyButtonController,
            FeatureFlags featureFlags) {
            FeatureFlags featureFlags, SelectedUserInteractor selectedUserInteractor) {
        super(view, securityMode, keyguardSecurityCallback, emergencyButtonController,
                messageAreaControllerFactory, featureFlags);
                messageAreaControllerFactory, featureFlags, selectedUserInteractor);
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mLockPatternUtils = lockPatternUtils;
        mLatencyTracker = latencyTracker;
@@ -104,7 +105,7 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
        mEmergencyButtonController.setEmergencyButtonCallback(mEmergencyButtonCallback);
        // if the user is currently locked out, enforce it.
        long deadline = mLockPatternUtils.getLockoutAttemptDeadline(
                KeyguardUpdateMonitor.getCurrentUser());
                mSelectedUserInteractor.getSelectedUserId());
        if (shouldLockout(deadline)) {
            handleAttemptLockout(deadline);
        }
@@ -175,7 +176,7 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
    }

    void onPasswordChecked(int userId, boolean matched, int timeoutMs, boolean isValidPassword) {
        boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
        boolean dismissKeyguard = mSelectedUserInteractor.getSelectedUserId() == userId;
        if (matched) {
            getKeyguardSecurityCallback().reportUnlockAttempt(userId, true, 0);
            if (dismissKeyguard) {
@@ -212,7 +213,7 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
            mPendingLockCheck.cancel(false);
        }

        final int userId = KeyguardUpdateMonitor.getCurrentUser();
        final int userId = mSelectedUserInteractor.getSelectedUserId();
        if (password.size() <= MINIMUM_PASSWORD_LENGTH_BEFORE_REPORT) {
            // to avoid accidental lockout, only count attempts that are long enough to be a
            // real password. This may require some tweaking.
+5 −3
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import com.android.keyguard.KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEv
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.SessionTracker
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import java.io.PrintWriter
import javax.inject.Inject

@@ -42,7 +43,8 @@ import javax.inject.Inject
class KeyguardBiometricLockoutLogger @Inject constructor(
    private val uiEventLogger: UiEventLogger,
    private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
    private val sessionTracker: SessionTracker
    private val sessionTracker: SessionTracker,
    private val selectedUserInteractor: SelectedUserInteractor
) : CoreStartable {
    private var fingerprintLockedOut = false
    private var faceLockedOut = false
@@ -52,7 +54,7 @@ class KeyguardBiometricLockoutLogger @Inject constructor(

    override fun start() {
        mKeyguardUpdateMonitorCallback.onStrongAuthStateChanged(
                KeyguardUpdateMonitor.getCurrentUser())
                selectedUserInteractor.getSelectedUserId())
        keyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback)
    }

@@ -79,7 +81,7 @@ class KeyguardBiometricLockoutLogger @Inject constructor(
        }

        override fun onStrongAuthStateChanged(userId: Int) {
            if (userId != KeyguardUpdateMonitor.getCurrentUser()) {
            if (userId != selectedUserInteractor.getSelectedUserId()) {
                return
            }
            val strongAuthFlags = keyguardUpdateMonitor.strongAuthTracker
+14 −10
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.view.inputmethod.InputMethodManager;
import com.android.internal.util.LatencyTracker;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.res.R;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
import com.android.systemui.bouncer.ui.BouncerMessageView;
import com.android.systemui.bouncer.ui.binder.BouncerMessageViewBinder;
@@ -38,7 +37,9 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.log.BouncerLogger;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.policy.DevicePostureController;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.concurrency.DelayableExecutor;

@@ -51,7 +52,6 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>

    private final SecurityMode mSecurityMode;
    private final KeyguardSecurityCallback mKeyguardSecurityCallback;
    private final EmergencyButton mEmergencyButton;
    private final EmergencyButtonController mEmergencyButtonController;
    private boolean mPaused;
    protected KeyguardMessageAreaController<BouncerKeyguardMessageArea> mMessageAreaController;
@@ -61,18 +61,20 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
    // state for the current security method.
    private KeyguardSecurityCallback mNullCallback = new KeyguardSecurityCallback() {};
    private final FeatureFlags mFeatureFlags;
    protected final SelectedUserInteractor mSelectedUserInteractor;

    protected KeyguardInputViewController(T view, SecurityMode securityMode,
            KeyguardSecurityCallback keyguardSecurityCallback,
            EmergencyButtonController emergencyButtonController,
            @Nullable KeyguardMessageAreaController.Factory messageAreaControllerFactory,
            FeatureFlags featureFlags) {
            FeatureFlags featureFlags,
            SelectedUserInteractor selectedUserInteractor) {
        super(view);
        mSecurityMode = securityMode;
        mKeyguardSecurityCallback = keyguardSecurityCallback;
        mEmergencyButton = view == null ? null : view.findViewById(R.id.emergency_call_button);
        mEmergencyButtonController = emergencyButtonController;
        mFeatureFlags = featureFlags;
        mSelectedUserInteractor = selectedUserInteractor;
        if (messageAreaControllerFactory != null) {
            try {
                BouncerKeyguardMessageArea kma = view.requireViewById(R.id.bouncer_message_area);
@@ -207,6 +209,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
        private final DevicePostureController mDevicePostureController;
        private final KeyguardViewController mKeyguardViewController;
        private final FeatureFlags mFeatureFlags;
        private final SelectedUserInteractor mSelectedUserInteractor;

        @Inject
        public Factory(KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -219,7 +222,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
                EmergencyButtonController.Factory emergencyButtonControllerFactory,
                DevicePostureController devicePostureController,
                KeyguardViewController keyguardViewController,
                FeatureFlags featureFlags) {
                FeatureFlags featureFlags, SelectedUserInteractor selectedUserInteractor) {
            mKeyguardUpdateMonitor = keyguardUpdateMonitor;
            mLockPatternUtils = lockPatternUtils;
            mLatencyTracker = latencyTracker;
@@ -234,6 +237,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
            mDevicePostureController = devicePostureController;
            mKeyguardViewController = keyguardViewController;
            mFeatureFlags = featureFlags;
            mSelectedUserInteractor = selectedUserInteractor;
        }

        /** Create a new {@link KeyguardInputViewController}. */
@@ -248,32 +252,32 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mLatencyTracker, mFalsingCollector,
                        emergencyButtonController, mMessageAreaControllerFactory,
                        mDevicePostureController, mFeatureFlags);
                        mDevicePostureController, mFeatureFlags, mSelectedUserInteractor);
            } else if (keyguardInputView instanceof KeyguardPasswordView) {
                return new KeyguardPasswordViewController((KeyguardPasswordView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mInputMethodManager, emergencyButtonController, mMainExecutor, mResources,
                        mFalsingCollector, mKeyguardViewController,
                        mDevicePostureController, mFeatureFlags);
                        mDevicePostureController, mFeatureFlags, mSelectedUserInteractor);
            } else if (keyguardInputView instanceof KeyguardPINView) {
                return new KeyguardPinViewController((KeyguardPINView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mLiftToActivateListener, emergencyButtonController, mFalsingCollector,
                        mDevicePostureController, mFeatureFlags);
                        mDevicePostureController, mFeatureFlags, mSelectedUserInteractor);
            } else if (keyguardInputView instanceof KeyguardSimPinView) {
                return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mLiftToActivateListener, mTelephonyManager, mFalsingCollector,
                        emergencyButtonController, mFeatureFlags);
                        emergencyButtonController, mFeatureFlags, mSelectedUserInteractor);
            } else if (keyguardInputView instanceof KeyguardSimPukView) {
                return new KeyguardSimPukViewController((KeyguardSimPukView) keyguardInputView,
                        mKeyguardUpdateMonitor, securityMode, mLockPatternUtils,
                        keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker,
                        mLiftToActivateListener, mTelephonyManager, mFalsingCollector,
                        emergencyButtonController, mFeatureFlags);
                        emergencyButtonController, mFeatureFlags, mSelectedUserInteractor);
            }

            throw new RuntimeException("Unable to find controller for " + keyguardInputView);
Loading