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

Commit 58e72130 authored by Andreas Miko's avatar Andreas Miko Committed by Android (Google) Code Review
Browse files

Merge changes from topics "UserInteractor", "currentuser2", "currentuser5",...

Merge changes from topics "UserInteractor", "currentuser2", "currentuser5", "currentuser6" into main

* changes:
  Flip feature flag REFACTOR_GETCURRENTUSER
  Add feature flag REFACTOR_GETCURRENTUSER
  Refactor getCurrentUser out of KeyguardViewMediator
  Refactor now resolved classes away from getCurrentUser()
  Refactor KeyguardUpdateMonitor internal references
  Refactor DozeParameters and BiometricsUnlockController out of Repository
  Refactor out KeyguardUpdateMonitor.getCurrentUser() 2/X
  Refactor UserInteractor to UserSwitcherInteractor
parents 00bdb08f 9454a179
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -33,11 +33,11 @@ import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_WAKE
import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS
import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD
import android.util.Log
import com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser
import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.settings.SecureSettings
import java.io.PrintWriter
import javax.inject.Inject
@@ -50,6 +50,7 @@ class ActiveUnlockConfig @Inject constructor(
    @Main private val handler: Handler,
    private val secureSettings: SecureSettings,
    private val contentResolver: ContentResolver,
    private val selectedUserInteractor: SelectedUserInteractor,
    dumpManager: DumpManager
) : Dumpable {

@@ -134,7 +135,7 @@ class ActiveUnlockConfig @Inject constructor(
                    )
            )

            onChange(true, ArrayList(), 0, getCurrentUser())
            onChange(true, ArrayList(), 0, selectedUserInteractor.getSelectedUserId())
        }

        private fun registerUri(uris: Collection<Uri>) {
@@ -153,29 +154,31 @@ class ActiveUnlockConfig @Inject constructor(
            flags: Int,
            userId: Int
        ) {
            if (getCurrentUser() != userId) {
            if (selectedUserInteractor.getSelectedUserId() != userId) {
                return
            }

            if (selfChange || uris.contains(wakeUri)) {
                requestActiveUnlockOnWakeup = secureSettings.getIntForUser(
                        ACTIVE_UNLOCK_ON_WAKE, 0, getCurrentUser()) == 1
                        ACTIVE_UNLOCK_ON_WAKE, 0, selectedUserInteractor.getSelectedUserId()) == 1
            }

            if (selfChange || uris.contains(unlockIntentUri)) {
                requestActiveUnlockOnUnlockIntent = secureSettings.getIntForUser(
                        ACTIVE_UNLOCK_ON_UNLOCK_INTENT, 0, getCurrentUser()) == 1
                        ACTIVE_UNLOCK_ON_UNLOCK_INTENT, 0,
                        selectedUserInteractor.getSelectedUserId()) == 1
            }

            if (selfChange || uris.contains(bioFailUri)) {
                requestActiveUnlockOnBioFail = secureSettings.getIntForUser(
                        ACTIVE_UNLOCK_ON_BIOMETRIC_FAIL, 0, getCurrentUser()) == 1
                        ACTIVE_UNLOCK_ON_BIOMETRIC_FAIL, 0,
                        selectedUserInteractor.getSelectedUserId()) == 1
            }

            if (selfChange || uris.contains(faceErrorsUri)) {
                processStringArray(
                        secureSettings.getStringForUser(ACTIVE_UNLOCK_ON_FACE_ERRORS,
                                getCurrentUser()),
                                selectedUserInteractor.getSelectedUserId()),
                        faceErrorsToTriggerBiometricFailOn,
                        setOf(FACE_ERROR_TIMEOUT))
            }
@@ -183,7 +186,7 @@ class ActiveUnlockConfig @Inject constructor(
            if (selfChange || uris.contains(faceAcquireInfoUri)) {
                processStringArray(
                        secureSettings.getStringForUser(ACTIVE_UNLOCK_ON_FACE_ACQUIRE_INFO,
                                getCurrentUser()),
                                selectedUserInteractor.getSelectedUserId()),
                        faceAcquireInfoToTriggerBiometricFailOn,
                        emptySet())
            }
@@ -192,7 +195,7 @@ class ActiveUnlockConfig @Inject constructor(
                processStringArray(
                        secureSettings.getStringForUser(
                                ACTIVE_UNLOCK_ON_UNLOCK_INTENT_WHEN_BIOMETRIC_ENROLLED,
                                getCurrentUser()),
                                selectedUserInteractor.getSelectedUserId()),
                        onUnlockIntentWhenBiometricEnrolled,
                        setOf(BiometricType.NONE.intValue))
            }
@@ -201,7 +204,7 @@ class ActiveUnlockConfig @Inject constructor(
                processStringArray(
                    secureSettings.getStringForUser(
                        ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS,
                        getCurrentUser()),
                        selectedUserInteractor.getSelectedUserId()),
                    wakeupsConsideredUnlockIntents,
                    setOf(WAKE_REASON_UNFOLD_DEVICE))
            }
@@ -210,7 +213,7 @@ class ActiveUnlockConfig @Inject constructor(
                processStringArray(
                    secureSettings.getStringForUser(
                        ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD,
                        getCurrentUser()),
                        selectedUserInteractor.getSelectedUserId()),
                    wakeupsToForceDismissKeyguard,
                    setOf(WAKE_REASON_UNFOLD_DEVICE))
            }
@@ -316,7 +319,8 @@ class ActiveUnlockConfig @Inject constructor(
        keyguardUpdateMonitor?.let {
            val anyFaceEnrolled = it.isFaceEnrolled
            val anyFingerprintEnrolled =
                    it.getCachedIsUnlockWithFingerprintPossible(getCurrentUser())
                    it.getCachedIsUnlockWithFingerprintPossible(
                            selectedUserInteractor.getSelectedUserId())
            val udfpsEnrolled = it.isUdfpsEnrolled

            if (!anyFaceEnrolled && !anyFingerprintEnrolled) {
@@ -371,7 +375,8 @@ class ActiveUnlockConfig @Inject constructor(
                    "${shouldRequestActiveUnlockOnUnlockIntentFromBiometricEnrollment()}")
            pw.println("   faceEnrolled=${it.isFaceEnrolled}")
            pw.println("   fpEnrolled=${
                    it.getCachedIsUnlockWithFingerprintPossible(getCurrentUser())}")
                    it.getCachedIsUnlockWithFingerprintPossible(
                            selectedUserInteractor.getSelectedUserId())}")
            pw.println("   udfpsEnrolled=${it.isUdfpsEnrolled}")
        } ?: pw.println("   keyguardUpdateMonitor is uninitialized")
    }
+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
Loading