diff options
| author | 2023-10-13 16:50:12 +0200 | |
|---|---|---|
| committer | 2023-10-18 01:56:45 +0200 | |
| commit | 498a18e29c1e77b45e942a76b111ab7a035c024c (patch) | |
| tree | ac0344e2f93c5ef34caa9a93317d8a31be6c1457 | |
| parent | f3dcc77dbee4b793fa83ff8b60f7730313d3323f (diff) | |
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
85 files changed, 556 insertions, 323 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java b/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java index 207f3440d38b..58bbdeb35ea0 100644 --- a/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java +++ b/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java @@ -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); } } } diff --git a/packages/SystemUI/src/com/android/keyguard/EmergencyButtonController.java b/packages/SystemUI/src/com/android/keyguard/EmergencyButtonController.java index f7e8eb492584..5de370f22eb8 100644 --- a/packages/SystemUI/src/com/android/keyguard/EmergencyButtonController.java +++ b/packages/SystemUI/src/com/android/keyguard/EmergencyButtonController.java @@ -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); } } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java index 167bd59d4e8d..dad440083f70 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java @@ -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. diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt index e6a2bfa1af12..d26caa985431 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt @@ -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 diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index 29ce18c60833..b3094838452a 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -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); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordViewController.java index 959cf6fb8565..96fe6490ca46 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordViewController.java @@ -39,11 +39,12 @@ import android.widget.TextView.OnEditorActionListener; 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.classifier.FalsingCollector; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.flags.FeatureFlags; +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.concurrency.DelayableExecutor; import java.util.List; @@ -112,10 +113,11 @@ public class KeyguardPasswordViewController FalsingCollector falsingCollector, KeyguardViewController keyguardViewController, DevicePostureController postureController, - FeatureFlags featureFlags) { + FeatureFlags featureFlags, + SelectedUserInteractor selectedUserInteractor) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, falsingCollector, - emergencyButtonController, featureFlags); + emergencyButtonController, featureFlags, selectedUserInteractor); mKeyguardSecurityCallback = keyguardSecurityCallback; mInputMethodManager = inputMethodManager; mPostureController = postureController; @@ -132,7 +134,8 @@ public class KeyguardPasswordViewController @Override protected void onViewAttached() { super.onViewAttached(); - mPasswordEntry.setTextOperationUser(UserHandle.of(KeyguardUpdateMonitor.getCurrentUser())); + mPasswordEntry.setTextOperationUser( + UserHandle.of(mSelectedUserInteractor.getSelectedUserId())); mPasswordEntry.setKeyListener(TextKeyListener.getInstance()); mPasswordEntry.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); @@ -187,7 +190,8 @@ public class KeyguardPasswordViewController @Override void resetState() { - mPasswordEntry.setTextOperationUser(UserHandle.of(KeyguardUpdateMonitor.getCurrentUser())); + mPasswordEntry.setTextOperationUser( + UserHandle.of(mSelectedUserInteractor.getSelectedUserId())); mMessageAreaController.setMessage(getInitialMessageResId()); final boolean wasDisabled = mPasswordEntry.isEnabled(); mView.setPasswordEntryEnabled(true); @@ -280,7 +284,7 @@ public class KeyguardPasswordViewController final boolean shouldIncludeAuxiliarySubtypes) { final List<InputMethodInfo> enabledImis = imm.getEnabledInputMethodListAsUser( - UserHandle.of(KeyguardUpdateMonitor.getCurrentUser())); + UserHandle.of(mSelectedUserInteractor.getSelectedUserId())); // Number of the filtered IMEs int filteredImisCount = 0; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java index 57151ae32db0..db7ff888356c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java @@ -36,11 +36,12 @@ import com.android.internal.widget.LockPatternView.Cell; import com.android.internal.widget.LockscreenCredential; import com.android.keyguard.EmergencyButtonController.EmergencyButtonCallback; 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.statusbar.policy.DevicePostureController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import java.util.HashMap; import java.util.List; @@ -110,7 +111,7 @@ public class KeyguardPatternViewController mPendingLockCheck.cancel(false); } - final int userId = KeyguardUpdateMonitor.getCurrentUser(); + final int userId = mSelectedUserInteractor.getSelectedUserId(); if (pattern.size() < LockPatternUtils.MIN_PATTERN_REGISTER_FAIL) { // Treat single-sized patterns as erroneous taps. if (pattern.size() == 1) { @@ -163,7 +164,7 @@ public class KeyguardPatternViewController private void onPatternChecked(int userId, boolean matched, int timeoutMs, boolean isValidPattern) { - boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId; + boolean dismissKeyguard = mSelectedUserInteractor.getSelectedUserId() == userId; if (matched) { getKeyguardSecurityCallback().reportUnlockAttempt(userId, true, 0); if (dismissKeyguard) { @@ -198,9 +199,10 @@ public class KeyguardPatternViewController FalsingCollector falsingCollector, EmergencyButtonController emergencyButtonController, KeyguardMessageAreaController.Factory messageAreaControllerFactory, - DevicePostureController postureController, FeatureFlags featureFlags) { + DevicePostureController postureController, FeatureFlags featureFlags, + SelectedUserInteractor selectedUserInteractor) { super(view, securityMode, keyguardSecurityCallback, emergencyButtonController, - messageAreaControllerFactory, featureFlags); + messageAreaControllerFactory, featureFlags, selectedUserInteractor); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mLockPatternUtils = lockPatternUtils; mLatencyTracker = latencyTracker; @@ -223,7 +225,7 @@ public class KeyguardPatternViewController mLockPatternView.setOnPatternListener(new UnlockPatternListener()); mLockPatternView.setSaveEnabled(false); mLockPatternView.setInStealthMode(!mLockPatternUtils.isVisiblePatternEnabled( - KeyguardUpdateMonitor.getCurrentUser())); + mSelectedUserInteractor.getSelectedUserId())); mLockPatternView.setOnTouchListener((v, event) -> { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { mFalsingCollector.avoidGesture(); @@ -243,7 +245,7 @@ public class KeyguardPatternViewController mPostureController.addCallback(mPostureCallback); // if the user is currently locked out, enforce it. long deadline = mLockPatternUtils.getLockoutAttemptDeadline( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.getSelectedUserId()); if (deadline != 0) { handleAttemptLockout(deadline); } @@ -266,7 +268,7 @@ public class KeyguardPatternViewController public void reset() { // reset lock pattern mLockPatternView.setInStealthMode(!mLockPatternUtils.isVisiblePatternEnabled( - KeyguardUpdateMonitor.getCurrentUser())); + mSelectedUserInteractor.getSelectedUserId())); mLockPatternView.enableInput(); mLockPatternView.setEnabled(true); mLockPatternView.clearPattern(); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java index aacf8662b2b8..b7d1171431a8 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputViewController.java @@ -25,9 +25,10 @@ import android.view.View.OnTouchListener; 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.classifier.FalsingCollector; import com.android.systemui.flags.FeatureFlags; +import com.android.systemui.res.R; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; public abstract class KeyguardPinBasedInputViewController<T extends KeyguardPinBasedInputView> extends KeyguardAbsKeyInputViewController<T> { @@ -60,10 +61,11 @@ public abstract class KeyguardPinBasedInputViewController<T extends KeyguardPinB LiftToActivateListener liftToActivateListener, EmergencyButtonController emergencyButtonController, FalsingCollector falsingCollector, - FeatureFlags featureFlags) { + FeatureFlags featureFlags, + SelectedUserInteractor selectedUserInteractor) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, falsingCollector, - emergencyButtonController, featureFlags); + emergencyButtonController, featureFlags, selectedUserInteractor); mLiftToActivateListener = liftToActivateListener; mFalsingCollector = falsingCollector; mPasswordEntry = mView.findViewById(mView.getPasswordTextViewId()); @@ -74,7 +76,7 @@ public abstract class KeyguardPinBasedInputViewController<T extends KeyguardPinB super.onViewAttached(); boolean showAnimations = !mLockPatternUtils - .isPinEnhancedPrivacyEnabled(KeyguardUpdateMonitor.getCurrentUser()); + .isPinEnhancedPrivacyEnabled(mSelectedUserInteractor.getSelectedUserId()); mPasswordEntry.setShowPassword(showAnimations); for (NumPadKey button : mView.getButtons()) { button.setOnTouchListener((v, event) -> { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java index 9a788688c9d1..947d90f488d1 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java @@ -23,11 +23,12 @@ import android.view.View; 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.classifier.FalsingCollector; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; +import com.android.systemui.res.R; import com.android.systemui.statusbar.policy.DevicePostureController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; public class KeyguardPinViewController extends KeyguardPinBasedInputViewController<KeyguardPINView> { @@ -55,17 +56,17 @@ public class KeyguardPinViewController EmergencyButtonController emergencyButtonController, FalsingCollector falsingCollector, DevicePostureController postureController, - FeatureFlags featureFlags) { + FeatureFlags featureFlags, SelectedUserInteractor selectedUserInteractor) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, - emergencyButtonController, falsingCollector, featureFlags); + emergencyButtonController, falsingCollector, featureFlags, selectedUserInteractor); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mPostureController = postureController; mLockPatternUtils = lockPatternUtils; mFeatureFlags = featureFlags; view.setIsLockScreenLandscapeEnabled(mFeatureFlags.isEnabled(LOCKSCREEN_ENABLE_LANDSCAPE)); mBackspaceKey = view.findViewById(R.id.delete_button); - mPinLength = mLockPatternUtils.getPinLength(KeyguardUpdateMonitor.getCurrentUser()); + mPinLength = mLockPatternUtils.getPinLength(selectedUserInteractor.getSelectedUserId()); } @Override @@ -124,7 +125,7 @@ public class KeyguardPinViewController private void updateAutoConfirmationState() { mDisabledAutoConfirmation = mLockPatternUtils.getCurrentFailedPasswordAttempts( - KeyguardUpdateMonitor.getCurrentUser()) >= MIN_FAILED_PIN_ATTEMPTS; + mSelectedUserInteractor.getSelectedUserId()) >= MIN_FAILED_PIN_ATTEMPTS; updateOKButtonVisibility(); updateBackSpaceVisibility(); updatePinHinting(); @@ -179,7 +180,8 @@ public class KeyguardPinViewController */ private boolean isAutoPinConfirmEnabledInSettings() { //Checks if user has enabled the auto confirm in Settings - return mLockPatternUtils.isAutoPinConfirmEnabled(KeyguardUpdateMonitor.getCurrentUser()) + return mLockPatternUtils.isAutoPinConfirmEnabled( + mSelectedUserInteractor.getSelectedUserId()) && mPinLength != LockPatternUtils.PIN_LENGTH_UNAVAILABLE; } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index 15bb2f85307a..7101ed599b86 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -157,23 +157,25 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private int mCurrentUser = UserHandle.USER_NULL; private UserSwitcherController.UserSwitchCallback mUserSwitchCallback = new UserSwitcherController.UserSwitchCallback() { - @Override - public void onUserSwitched() { - if (mCurrentUser == KeyguardUpdateMonitor.getCurrentUser()) { - return; - } - mCurrentUser = KeyguardUpdateMonitor.getCurrentUser(); - showPrimarySecurityScreen(false); - if (mCurrentSecurityMode != SecurityMode.SimPin - && mCurrentSecurityMode != SecurityMode.SimPuk) { - reinflateViewFlipper((l) -> {}); - } - } - }; + @Override + public void onUserSwitched() { + if (mCurrentUser == mSelectedUserInteractor.getSelectedUserId()) { + return; + } + mCurrentUser = mSelectedUserInteractor.getSelectedUserId(); + showPrimarySecurityScreen(false); + if (mCurrentSecurityMode != SecurityMode.SimPin + && mCurrentSecurityMode != SecurityMode.SimPuk) { + reinflateViewFlipper((l) -> { + }); + } + } + }; @VisibleForTesting final Gefingerpoken mGlobalTouchListener = new Gefingerpoken() { private MotionEvent mTouchDown; + @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return false; @@ -267,7 +269,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard ThreadUtils.postOnBackgroundThread(() -> { try { Thread.sleep(5000); - } catch (InterruptedException ignored) { } + } catch (InterruptedException ignored) { + } System.gc(); System.runFinalization(); System.gc(); @@ -281,7 +284,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mMetricsLogger.write(new LogMaker(MetricsEvent.BOUNCER) .setType(success ? MetricsEvent.TYPE_SUCCESS : MetricsEvent.TYPE_FAILURE)); mUiEventLogger.log(success ? BouncerUiEvent.BOUNCER_PASSWORD_SUCCESS - : BouncerUiEvent.BOUNCER_PASSWORD_FAILURE, getSessionId()); + : BouncerUiEvent.BOUNCER_PASSWORD_FAILURE, getSessionId()); } @Override @@ -404,7 +407,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } mKeyguardSecurityCallback.dismiss( false /* authenticated */, - KeyguardUpdateMonitor.getCurrentUser(), + mSelectedUserInteractor.getSelectedUserId(), /* bypassSecondaryLockScreen */ false, SecurityMode.Invalid ); @@ -425,7 +428,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final Provider<JavaAdapter> mJavaAdapter; private final DeviceProvisionedController mDeviceProvisionedController; private final Lazy<PrimaryBouncerInteractor> mPrimaryBouncerInteractor; - @Nullable private Job mSceneTransitionCollectionJob; + @Nullable + private Job mSceneTransitionCollectionJob; @Inject public KeyguardSecurityContainerController(KeyguardSecurityContainer view, @@ -520,7 +524,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard // When the scene framework says that the lockscreen has been dismissed, dismiss the // keyguard here, revealing the underlying app or launcher: mSceneTransitionCollectionJob = mJavaAdapter.get().alwaysCollectFlow( - mDeviceEntryInteractor.get().isDeviceEntered(), + mDeviceEntryInteractor.get().isDeviceEntered(), isDeviceEntered -> { if (isDeviceEntered) { final int selectedUserId = mSelectedUserInteractor.getSelectedUserId(); @@ -548,7 +552,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } } - /** */ + /** */ public void onPause() { if (DEBUG) { Log.d(TAG, String.format("screen off, instance %s at %s", @@ -586,12 +590,13 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** * Shows the primary security screen for the user. This will be either the multi-selector * or the user's security method. + * * @param turningOff true if the device is being turned off */ public void showPrimarySecurityScreen(boolean turningOff) { if (DEBUG) Log.d(TAG, "show()"); SecurityMode securityMode = whitelistIpcs(() -> mSecurityModel.getSecurityMode( - KeyguardUpdateMonitor.getCurrentUser())); + mSelectedUserInteractor.getSelectedUserId())); if (DEBUG) Log.v(TAG, "showPrimarySecurityScreen(turningOff=" + turningOff + ")"); showSecurityScreen(securityMode); } @@ -671,6 +676,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** * Dismisses the keyguard by going to the next screen or making it gone. + * * @param targetUserId a user that needs to be the foreground user at the dismissal completion. * @return True if the keyguard is done. */ @@ -716,7 +722,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } /** - * Resets the state of the views. + * Resets the state of the views. */ public void reset() { mView.reset(); @@ -748,7 +754,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard getCurrentSecurityController(controller -> controller.onResume(reason)); } mView.onResume( - mSecurityModel.getSecurityMode(KeyguardUpdateMonitor.getCurrentUser()), + mSecurityModel.getSecurityMode(mSelectedUserInteractor.getSelectedUserId()), mKeyguardStateController.isFaceAuthEnabled()); } @@ -764,7 +770,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** * Show the bouncer and start appear animations. - * */ public void appear() { // We might still be collapsed and the view didn't have time to layout yet or still @@ -823,13 +828,16 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** * Shows the next security screen if there is one. - * @param authenticated true if the user entered the correct authentication - * @param targetUserId a user that needs to be the foreground user at the finish (if called) - * completion. + * + * @param authenticated true if the user entered the correct authentication + * @param targetUserId a user that needs to be the foreground user at the finish + * (if called) + * completion. * @param bypassSecondaryLockScreen true if the user is allowed to bypass the secondary - * secondary lock screen requirement, if any. - * @param expectedSecurityMode SecurityMode that is invoking this request. SecurityMode.Invalid - * indicates that no check should be done + * secondary lock screen requirement, if any. + * @param expectedSecurityMode SecurityMode that is invoking this request. + * SecurityMode.Invalid + * indicates that no check should be done * @return true if keyguard is done */ public boolean showNextSecurityScreenOrFinish(boolean authenticated, int targetUserId, @@ -879,7 +887,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled( - KeyguardUpdateMonitor.getCurrentUser()) + mSelectedUserInteractor.getSelectedUserId()) || !mDeviceProvisionedController.isUserSetup(targetUserId); if (securityMode == SecurityMode.None && isLockscreenDisabled) { @@ -955,6 +963,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard * Allows the media keys to work when the keyguard is showing. * The media keys should be of no interest to the actual keyguard view(s), * so intercepting them here should not be of any harm. + * * @param event The key event * @return whether the event was consumed as a media key. */ @@ -1050,8 +1059,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** * Switches to the given security view unless it's already being shown, in which case * this is a no-op. - * - * @param securityMode */ @VisibleForTesting void showSecurityScreen(SecurityMode securityMode) { @@ -1230,6 +1237,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard * Fades and translates in/out the security screen. * Fades in as expansion approaches 0. * Animation duration is between 0.33f and 0.67f of panel expansion fraction. + * * @param fraction amount of the screen that should show. */ public void setExpansion(float fraction) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java index d2d051735643..6e242084d68c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java @@ -43,6 +43,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; 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; public class KeyguardSimPinViewController extends KeyguardPinBasedInputViewController<KeyguardSimPinView> { @@ -83,10 +84,11 @@ public class KeyguardSimPinViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController emergencyButtonController, FeatureFlags featureFlags) { + EmergencyButtonController emergencyButtonController, FeatureFlags featureFlags, + SelectedUserInteractor selectedUserInteractor) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, - emergencyButtonController, falsingCollector, featureFlags); + emergencyButtonController, falsingCollector, featureFlags, selectedUserInteractor); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mTelephonyManager = telephonyManager; mSimImageView = mView.findViewById(R.id.keyguard_sim); @@ -168,7 +170,7 @@ public class KeyguardSimPinViewController mRemainingAttempts = -1; mShowDefaultMessage = true; getKeyguardSecurityCallback().dismiss( - true, KeyguardUpdateMonitor.getCurrentUser(), + true, mSelectedUserInteractor.getSelectedUserId(), SecurityMode.SimPin); } else { mShowDefaultMessage = false; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java index b52a36b8199e..13f9d3e1038e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java @@ -40,6 +40,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; 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; public class KeyguardSimPukViewController extends KeyguardPinBasedInputViewController<KeyguardSimPukView> { @@ -70,7 +71,8 @@ public class KeyguardSimPukViewController if (simState == TelephonyManager.SIM_STATE_READY) { mRemainingAttempts = -1; mShowDefaultMessage = true; - getKeyguardSecurityCallback().dismiss(true, KeyguardUpdateMonitor.getCurrentUser(), + getKeyguardSecurityCallback().dismiss( + true, mSelectedUserInteractor.getSelectedUserId(), SecurityMode.SimPuk); } else { resetState(); @@ -87,10 +89,11 @@ public class KeyguardSimPukViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController emergencyButtonController, FeatureFlags featureFlags) { + EmergencyButtonController emergencyButtonController, FeatureFlags featureFlags, + SelectedUserInteractor selectedUserInteractor) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, - emergencyButtonController, falsingCollector, featureFlags); + emergencyButtonController, falsingCollector, featureFlags, selectedUserInteractor); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mTelephonyManager = telephonyManager; mSimImageView = mView.findViewById(R.id.keyguard_sim); @@ -284,7 +287,7 @@ public class KeyguardSimPukViewController mShowDefaultMessage = true; getKeyguardSecurityCallback().dismiss( - true, KeyguardUpdateMonitor.getCurrentUser(), + true, mSelectedUserInteractor.getSelectedUserId(), SecurityMode.SimPuk); } else { mShowDefaultMessage = false; diff --git a/packages/SystemUI/src/com/android/systemui/LatencyTester.java b/packages/SystemUI/src/com/android/systemui/LatencyTester.java index b33d50137155..c860979afb10 100644 --- a/packages/SystemUI/src/com/android/systemui/LatencyTester.java +++ b/packages/SystemUI/src/com/android/systemui/LatencyTester.java @@ -31,7 +31,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.statusbar.phone.BiometricUnlockController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.concurrency.DelayableExecutor; @@ -53,25 +53,25 @@ public class LatencyTester implements CoreStartable { private static final String ACTION_FACE_WAKE = "com.android.systemui.latency.ACTION_FACE_WAKE"; - private final BiometricUnlockController mBiometricUnlockController; private final BroadcastDispatcher mBroadcastDispatcher; private final DeviceConfigProxy mDeviceConfigProxy; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; + private final SelectedUserInteractor mSelectedUserInteractor; private boolean mEnabled; @Inject public LatencyTester( - BiometricUnlockController biometricUnlockController, BroadcastDispatcher broadcastDispatcher, DeviceConfigProxy deviceConfigProxy, @Main DelayableExecutor mainExecutor, - KeyguardUpdateMonitor keyguardUpdateMonitor + KeyguardUpdateMonitor keyguardUpdateMonitor, + SelectedUserInteractor selectedUserInteractor ) { - mBiometricUnlockController = biometricUnlockController; mBroadcastDispatcher = broadcastDispatcher; mDeviceConfigProxy = deviceConfigProxy; mKeyguardUpdateMonitor = keyguardUpdateMonitor; + mSelectedUserInteractor = selectedUserInteractor; updateEnabled(); mDeviceConfigProxy.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_LATENCY_TRACKER, @@ -87,11 +87,11 @@ public class LatencyTester implements CoreStartable { return; } if (type == BiometricSourceType.FACE) { - mKeyguardUpdateMonitor.onFaceAuthenticated(KeyguardUpdateMonitor.getCurrentUser(), + mKeyguardUpdateMonitor.onFaceAuthenticated(mSelectedUserInteractor.getSelectedUserId(), true); } else if (type == BiometricSourceType.FINGERPRINT) { mKeyguardUpdateMonitor.onFingerprintAuthenticated( - KeyguardUpdateMonitor.getCurrentUser(), true); + mSelectedUserInteractor.getSelectedUserId(), true); } } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index c9e4cbe30a2c..92eacf10e424 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -97,6 +97,7 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.concurrency.Execution; import com.android.systemui.util.time.SystemClock; @@ -167,6 +168,7 @@ public class UdfpsController implements DozeReceiver, Dumpable { @NonNull private final AlternateBouncerInteractor mAlternateBouncerInteractor; @NonNull private final InputManager mInputManager; @NonNull private final UdfpsKeyguardAccessibilityDelegate mUdfpsKeyguardAccessibilityDelegate; + @NonNull private final SelectedUserInteractor mSelectedUserInteractor; private final boolean mIgnoreRefreshRate; // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple @@ -281,7 +283,8 @@ public class UdfpsController implements DozeReceiver, Dumpable { mPrimaryBouncerInteractor, mAlternateBouncerInteractor, mUdfpsKeyguardAccessibilityDelegate, - mUdfpsKeyguardViewModels + mUdfpsKeyguardViewModels, + mSelectedUserInteractor ))); } @@ -644,7 +647,8 @@ public class UdfpsController implements DozeReceiver, Dumpable { @NonNull InputManager inputManager, @NonNull KeyguardFaceAuthInteractor keyguardFaceAuthInteractor, @NonNull UdfpsKeyguardAccessibilityDelegate udfpsKeyguardAccessibilityDelegate, - @NonNull Provider<UdfpsKeyguardViewModels> udfpsKeyguardViewModelsProvider) { + @NonNull Provider<UdfpsKeyguardViewModels> udfpsKeyguardViewModelsProvider, + @NonNull SelectedUserInteractor selectedUserInteractor) { mContext = context; mExecution = execution; mVibrator = vibrator; @@ -687,6 +691,7 @@ public class UdfpsController implements DozeReceiver, Dumpable { mAlternateBouncerInteractor = alternateBouncerInteractor; mInputManager = inputManager; mUdfpsKeyguardAccessibilityDelegate = udfpsKeyguardAccessibilityDelegate; + mSelectedUserInteractor = selectedUserInteractor; mTouchProcessor = singlePointerTouchProcessor; mSessionTracker = sessionTracker; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt index 7130bfb462e3..272e0f21e74a 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt @@ -44,7 +44,6 @@ import android.view.accessibility.AccessibilityManager.TouchExplorationStateChan import androidx.annotation.LayoutRes import androidx.annotation.VisibleForTesting import com.android.keyguard.KeyguardUpdateMonitor -import com.android.systemui.res.R import com.android.systemui.animation.ActivityLaunchAnimator import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams import com.android.systemui.biometrics.ui.controller.UdfpsKeyguardViewController @@ -56,12 +55,14 @@ import com.android.systemui.flags.Flags.REFACTOR_UDFPS_KEYGUARD_VIEWS import com.android.systemui.keyguard.ui.adapter.UdfpsKeyguardViewControllerAdapter import com.android.systemui.keyguard.ui.viewmodel.UdfpsKeyguardViewModels import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.res.R import com.android.systemui.statusbar.LockscreenShadeTransitionController import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.phone.SystemUIDialogManager import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import kotlinx.coroutines.ExperimentalCoroutinesApi import javax.inject.Provider @@ -78,31 +79,32 @@ const val SETTING_REMOVE_ENROLLMENT_UI = "udfps_overlay_remove_enrollment_ui" @ExperimentalCoroutinesApi @UiThread class UdfpsControllerOverlay @JvmOverloads constructor( - private val context: Context, - private val inflater: LayoutInflater, - private val windowManager: WindowManager, - private val accessibilityManager: AccessibilityManager, - private val statusBarStateController: StatusBarStateController, - private val statusBarKeyguardViewManager: StatusBarKeyguardViewManager, - private val keyguardUpdateMonitor: KeyguardUpdateMonitor, - private val dialogManager: SystemUIDialogManager, - private val dumpManager: DumpManager, - private val transitionController: LockscreenShadeTransitionController, - private val configurationController: ConfigurationController, - private val keyguardStateController: KeyguardStateController, - private val unlockedScreenOffAnimationController: UnlockedScreenOffAnimationController, - private var udfpsDisplayModeProvider: UdfpsDisplayModeProvider, - val requestId: Long, - @ShowReason val requestReason: Int, - private val controllerCallback: IUdfpsOverlayControllerCallback, - private val onTouch: (View, MotionEvent, Boolean) -> Boolean, - private val activityLaunchAnimator: ActivityLaunchAnimator, - private val featureFlags: FeatureFlags, - private val primaryBouncerInteractor: PrimaryBouncerInteractor, - private val alternateBouncerInteractor: AlternateBouncerInteractor, - private val isDebuggable: Boolean = Build.IS_DEBUGGABLE, - private val udfpsKeyguardAccessibilityDelegate: UdfpsKeyguardAccessibilityDelegate, - private val udfpsKeyguardViewModels: Provider<UdfpsKeyguardViewModels>, + private val context: Context, + private val inflater: LayoutInflater, + private val windowManager: WindowManager, + private val accessibilityManager: AccessibilityManager, + private val statusBarStateController: StatusBarStateController, + private val statusBarKeyguardViewManager: StatusBarKeyguardViewManager, + private val keyguardUpdateMonitor: KeyguardUpdateMonitor, + private val dialogManager: SystemUIDialogManager, + private val dumpManager: DumpManager, + private val transitionController: LockscreenShadeTransitionController, + private val configurationController: ConfigurationController, + private val keyguardStateController: KeyguardStateController, + private val unlockedScreenOffAnimationController: UnlockedScreenOffAnimationController, + private var udfpsDisplayModeProvider: UdfpsDisplayModeProvider, + val requestId: Long, + @ShowReason val requestReason: Int, + private val controllerCallback: IUdfpsOverlayControllerCallback, + private val onTouch: (View, MotionEvent, Boolean) -> Boolean, + private val activityLaunchAnimator: ActivityLaunchAnimator, + private val featureFlags: FeatureFlags, + private val primaryBouncerInteractor: PrimaryBouncerInteractor, + private val alternateBouncerInteractor: AlternateBouncerInteractor, + private val isDebuggable: Boolean = Build.IS_DEBUGGABLE, + private val udfpsKeyguardAccessibilityDelegate: UdfpsKeyguardAccessibilityDelegate, + private val udfpsKeyguardViewModels: Provider<UdfpsKeyguardViewModels>, + private val selectedUserInteractor: SelectedUserInteractor, ) { /** The view, when [isShowing], or null. */ var overlayView: UdfpsView? = null @@ -268,6 +270,7 @@ class UdfpsControllerOverlay @JvmOverloads constructor( primaryBouncerInteractor, alternateBouncerInteractor, udfpsKeyguardAccessibilityDelegate, + selectedUserInteractor, ) } } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt index 3d5be6fb9f8c..d7df0e585dcf 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerLegacy.kt @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import java.io.PrintWriter import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -68,6 +69,7 @@ open class UdfpsKeyguardViewControllerLegacy( primaryBouncerInteractor: PrimaryBouncerInteractor, private val alternateBouncerInteractor: AlternateBouncerInteractor, private val udfpsKeyguardAccessibilityDelegate: UdfpsKeyguardAccessibilityDelegate, + private val selectedUserInteractor: SelectedUserInteractor, ) : UdfpsAnimationViewController<UdfpsKeyguardViewLegacy>( view, @@ -384,7 +386,7 @@ open class UdfpsKeyguardViewControllerLegacy( } if ( keyguardUpdateMonitor.getUserUnlockedWithBiometric( - KeyguardUpdateMonitor.getCurrentUser() + selectedUserInteractor.getSelectedUserId() ) ) { // If the device was unlocked by a biometric, immediately hide the UDFPS icon to avoid diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractor.kt b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractor.kt index 2a1047ac6f76..38043b4020e5 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractor.kt @@ -17,13 +17,13 @@ package com.android.systemui.biometrics.domain.interactor import android.view.MotionEvent -import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.biometrics.AuthController import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging import com.android.systemui.common.coroutine.ConflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.channels.awaitClose @@ -35,11 +35,16 @@ import kotlinx.coroutines.flow.stateIn @SysUISingleton class UdfpsOverlayInteractor @Inject -constructor(private val authController: AuthController, @Application scope: CoroutineScope) { +constructor( + private val authController: AuthController, + private val selectedUserInteractor: SelectedUserInteractor, + @Application scope: CoroutineScope +) { /** Whether a touch is within the under-display fingerprint sensor area */ fun isTouchWithinUdfpsArea(ev: MotionEvent): Boolean { - val isUdfpsEnrolled = authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser()) + val isUdfpsEnrolled = + authController.isUdfpsEnrolled(selectedUserInteractor.getSelectedUserId()) val isWithinOverlayBounds = udfpsOverlayParams.value.overlayBounds.contains(ev.rawX.toInt(), ev.rawY.toInt()) return isUdfpsEnrolled && isWithinOverlayBounds diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt index 6e26fe952749..2bd62587834d 100644 --- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt @@ -28,7 +28,6 @@ import com.android.keyguard.KeyguardSecurityModel import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitorCallback import com.android.systemui.DejankUtils -import com.android.systemui.res.R import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepository import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EXPANSION_HIDDEN @@ -41,8 +40,10 @@ import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.repository.TrustRepository import com.android.systemui.plugins.ActivityStarter +import com.android.systemui.res.R import com.android.systemui.shared.system.SysUiStatsLog import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow @@ -73,6 +74,7 @@ constructor( private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val trustRepository: TrustRepository, @Application private val applicationScope: CoroutineScope, + private val selectedUserInteractor: SelectedUserInteractor, ) { private val passiveAuthBouncerDelay = context.resources.getInteger(R.integer.primary_bouncer_passive_auth_delay).toLong() @@ -384,7 +386,7 @@ constructor( /** Returns whether the bouncer should be full screen. */ private fun needsFullscreenBouncer(): Boolean { val mode: KeyguardSecurityModel.SecurityMode = - keyguardSecurityModel.getSecurityMode(KeyguardUpdateMonitor.getCurrentUser()) + keyguardSecurityModel.getSecurityMode(selectedUserInteractor.getSelectedUserId()) return mode == KeyguardSecurityModel.SecurityMode.SimPin || mode == KeyguardSecurityModel.SecurityMode.SimPuk } diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt index 36e5db4c62e0..ac3d4b6c853b 100644 --- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt @@ -26,7 +26,6 @@ import com.android.keyguard.KeyguardMessageAreaController import com.android.keyguard.KeyguardSecurityContainerController import com.android.keyguard.KeyguardSecurityModel import com.android.keyguard.KeyguardSecurityView -import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.dagger.KeyguardBouncerComponent import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EXPANSION_VISIBLE @@ -37,6 +36,7 @@ import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransition import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.log.BouncerLogger import com.android.systemui.plugins.ActivityStarter +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch @@ -53,6 +53,7 @@ object KeyguardBouncerViewBinder { bouncerMessageInteractor: BouncerMessageInteractor, bouncerLogger: BouncerLogger, featureFlags: FeatureFlags, + selectedUserInteractor: SelectedUserInteractor, ) { // Builds the KeyguardSecurityContainerController from bouncer view group. val securityContainerController: KeyguardSecurityContainerController = @@ -84,7 +85,7 @@ object KeyguardBouncerViewBinder { override fun showNextSecurityScreenOrFinish(): Boolean { return securityContainerController.dismiss( - KeyguardUpdateMonitor.getCurrentUser() + selectedUserInteractor.getSelectedUserId() ) } @@ -220,7 +221,7 @@ object KeyguardBouncerViewBinder { launch { viewModel.keyguardAuthenticated.collect { securityContainerController.finish( - KeyguardUpdateMonitor.getCurrentUser() + selectedUserInteractor.getSelectedUserId() ) viewModel.notifyKeyguardAuthenticated() } diff --git a/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt b/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt index b2680950d9c5..b39716c9c330 100644 --- a/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt +++ b/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt @@ -27,17 +27,16 @@ import android.content.pm.ResolveInfo import android.os.RemoteException import android.util.Log import android.view.WindowManager -import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.ActivityIntentHelper import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.plugins.ActivityStarter -import com.android.systemui.settings.UserTracker import com.android.systemui.shared.system.ActivityManagerKt.isInForeground import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import java.util.concurrent.Executor import javax.inject.Inject @@ -59,7 +58,7 @@ class CameraGestureHelper @Inject constructor( private val cameraIntents: CameraIntentsWrapper, private val contentResolver: ContentResolver, @Main private val uiExecutor: Executor, - private val userTracker: UserTracker + private val selectedUserInteractor: SelectedUserInteractor, ) { /** * Whether the camera application can be launched for the camera launch gesture. @@ -72,12 +71,12 @@ class CameraGestureHelper @Inject constructor( val resolveInfo: ResolveInfo? = packageManager.resolveActivityAsUser( getStartCameraIntent(), PackageManager.MATCH_DEFAULT_ONLY, - KeyguardUpdateMonitor.getCurrentUser() + selectedUserInteractor.getSelectedUserId() ) val resolvedPackage = resolveInfo?.activityInfo?.packageName return (resolvedPackage != null && (statusBarState != StatusBarState.SHADE || - !activityManager.isInForeground(resolvedPackage))) + !activityManager.isInForeground(resolvedPackage))) } /** @@ -89,7 +88,7 @@ class CameraGestureHelper @Inject constructor( val intent: Intent = getStartCameraIntent() intent.putExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, source) val wouldLaunchResolverActivity = activityIntentHelper.wouldLaunchResolverActivity( - intent, KeyguardUpdateMonitor.getCurrentUser() + intent, selectedUserInteractor.getSelectedUserId() ) if (CameraIntents.isSecureCameraIntent(intent) && !wouldLaunchResolverActivity) { uiExecutor.execute { @@ -102,7 +101,7 @@ class CameraGestureHelper @Inject constructor( val activityOptions = ActivityOptions.makeBasic() activityOptions.setDisallowEnterPictureInPictureWhileLaunching(true) activityOptions.rotationAnimationHint = - WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS + WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS try { activityTaskManager.startActivityAsUser( null, @@ -116,7 +115,7 @@ class CameraGestureHelper @Inject constructor( Intent.FLAG_ACTIVITY_NEW_TASK, null, activityOptions.toBundle(), - userTracker.userId, + selectedUserInteractor.getSelectedUserId(), ) } catch (e: RemoteException) { Log.w( diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java index 39c01f759654..a6b073da2530 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java @@ -37,12 +37,15 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.sensors.ThresholdSensor; import com.android.systemui.util.sensors.ThresholdSensorEvent; import com.android.systemui.util.time.SystemClock; +import dagger.Lazy; + import java.util.Collections; import javax.inject.Inject; @@ -66,6 +69,7 @@ class FalsingCollectorImpl implements FalsingCollector { private final DockManager mDockManager; private final DelayableExecutor mMainExecutor; private final SystemClock mSystemClock; + private final Lazy<SelectedUserInteractor> mUserInteractor; private int mState; private boolean mShowingAod; @@ -93,7 +97,7 @@ class FalsingCollectorImpl implements FalsingCollector { public void onBiometricAuthenticated(int userId, BiometricSourceType biometricSourceType, boolean isStrongBiometric) { - if (userId == KeyguardUpdateMonitor.getCurrentUser() + if (userId == mUserInteractor.get().getSelectedUserId() && biometricSourceType == BiometricSourceType.FACE) { mFalsingDataProvider.setJustUnlockedWithFace(true); } @@ -136,7 +140,8 @@ class FalsingCollectorImpl implements FalsingCollector { BatteryController batteryController, DockManager dockManager, @Main DelayableExecutor mainExecutor, - SystemClock systemClock) { + SystemClock systemClock, + Lazy<SelectedUserInteractor> userInteractor) { mFalsingDataProvider = falsingDataProvider; mFalsingManager = falsingManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; @@ -148,6 +153,7 @@ class FalsingCollectorImpl implements FalsingCollector { mDockManager = dockManager; mMainExecutor = mainExecutor; mSystemClock = systemClock; + mUserInteractor = userInteractor; mProximitySensor.setTag(PROXIMITY_SENSOR_TAG); mProximitySensor.setDelay(SensorManager.SENSOR_DELAY_GAME); diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java index bf4fba89ca55..0bf50693344a 100644 --- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java +++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java @@ -26,11 +26,13 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.types.ExtractionType; import com.android.internal.colorextraction.types.Tonal; -import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dumpable; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; + +import dagger.Lazy; import java.io.PrintWriter; import java.util.Arrays; @@ -48,19 +50,22 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, private boolean mHasMediaArtwork; private final GradientColors mNeutralColorsLock; private final GradientColors mBackdropColors; + private Lazy<SelectedUserInteractor> mUserInteractor; @Inject public SysuiColorExtractor( Context context, ConfigurationController configurationController, - DumpManager dumpManager) { + DumpManager dumpManager, + Lazy<SelectedUserInteractor> userInteractor) { this( context, new Tonal(context), configurationController, context.getSystemService(WallpaperManager.class), dumpManager, - false /* immediately */); + false /* immediately */, + userInteractor); } @VisibleForTesting @@ -70,7 +75,8 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, ConfigurationController configurationController, WallpaperManager wallpaperManager, DumpManager dumpManager, - boolean immediately) { + boolean immediately, + Lazy<SelectedUserInteractor> userInteractor) { super(context, type, immediately, wallpaperManager); mTonal = type instanceof Tonal ? (Tonal) type : new Tonal(context); mNeutralColorsLock = new GradientColors(); @@ -79,6 +85,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, mBackdropColors = new GradientColors(); mBackdropColors.setMainColor(Color.BLACK); + mUserInteractor = userInteractor; // Listen to all users instead of only the current one. if (wallpaperManager.isWallpaperSupported()) { @@ -100,7 +107,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable, @Override public void onColorsChanged(WallpaperColors colors, int which, int userId) { - if (userId != KeyguardUpdateMonitor.getCurrentUser()) { + if (userId != mUserInteractor.get().getSelectedUserId()) { // Colors do not belong to current user, ignoring. return; } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeAuthRemover.java b/packages/SystemUI/src/com/android/systemui/doze/DozeAuthRemover.java index 5eb9808ebd7c..9c13a8c82b11 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeAuthRemover.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeAuthRemover.java @@ -18,6 +18,7 @@ package com.android.systemui.doze; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.doze.dagger.DozeScope; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import javax.inject.Inject; @@ -28,16 +29,19 @@ import javax.inject.Inject; public class DozeAuthRemover implements DozeMachine.Part { private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; + private final SelectedUserInteractor mSelectedUserInteractor; @Inject - public DozeAuthRemover(KeyguardUpdateMonitor keyguardUpdateMonitor) { + public DozeAuthRemover(KeyguardUpdateMonitor keyguardUpdateMonitor, + SelectedUserInteractor selectedUserInteractor) { mKeyguardUpdateMonitor = keyguardUpdateMonitor; + mSelectedUserInteractor = selectedUserInteractor; } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { if (newState == DozeMachine.State.DOZE || newState == DozeMachine.State.DOZE_AOD) { - int currentUser = KeyguardUpdateMonitor.getCurrentUser(); + int currentUser = mSelectedUserInteractor.getSelectedUserId(); if (mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(currentUser)) { mKeyguardUpdateMonitor.clearBiometricRecognized(); } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java index 7da2cf150147..ba579188a8c9 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java @@ -31,13 +31,13 @@ import android.view.Display; import androidx.annotation.Nullable; -import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.UdfpsController; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.dagger.DozeScope; import com.android.systemui.doze.dagger.WrappedService; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.wakelock.SettableWakeLock; import com.android.systemui.util.wakelock.WakeLock; @@ -81,6 +81,7 @@ public class DozeScreenState implements DozeMachine.Part { @Nullable private UdfpsController mUdfpsController; private final DozeLog mDozeLog; private final DozeScreenBrightness mDozeScreenBrightness; + private final SelectedUserInteractor mSelectedUserInteractor; private int mPendingScreenState = Display.STATE_UNKNOWN; private SettableWakeLock mWakeLock; @@ -95,7 +96,8 @@ public class DozeScreenState implements DozeMachine.Part { AuthController authController, Provider<UdfpsController> udfpsControllerProvider, DozeLog dozeLog, - DozeScreenBrightness dozeScreenBrightness) { + DozeScreenBrightness dozeScreenBrightness, + SelectedUserInteractor selectedUserInteractor) { mDozeService = service; mHandler = handler; mParameters = parameters; @@ -105,6 +107,7 @@ public class DozeScreenState implements DozeMachine.Part { mUdfpsControllerProvider = udfpsControllerProvider; mDozeLog = dozeLog; mDozeScreenBrightness = dozeScreenBrightness; + mSelectedUserInteractor = selectedUserInteractor; updateUdfpsController(); if (mUdfpsController == null) { @@ -113,7 +116,7 @@ public class DozeScreenState implements DozeMachine.Part { } private void updateUdfpsController() { - if (mAuthController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser())) { + if (mAuthController.isUdfpsEnrolled(mSelectedUserInteractor.getSelectedUserId())) { mUdfpsController = mUdfpsControllerProvider.get(); } else { mUdfpsController = null; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index 07efbfef732b..d66a6f754dab 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -48,12 +48,11 @@ import com.android.internal.R; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; -import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.biometrics.AuthController; import com.android.systemui.plugins.SensorManagerPlugin; -import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.settings.SecureSettings; @@ -101,7 +100,7 @@ public class DozeSensors { private final SecureSettings mSecureSettings; private final DevicePostureController mDevicePostureController; private final AuthController mAuthController; - private final UserTracker mUserTracker; + private final SelectedUserInteractor mSelectedUserInteractor; private final boolean mScreenOffUdfpsEnabled; // Sensors @@ -158,7 +157,7 @@ public class DozeSensors { SecureSettings secureSettings, AuthController authController, DevicePostureController devicePostureController, - UserTracker userTracker + SelectedUserInteractor selectedUserInteractor ) { mSensorManager = sensorManager; mConfig = config; @@ -171,15 +170,15 @@ public class DozeSensors { mProximitySensor.setTag(TAG); mSelectivelyRegisterProxSensors = dozeParameters.getSelectivelyRegisterSensorsUsingProx(); mListeningProxSensors = !mSelectivelyRegisterProxSensors; + mSelectedUserInteractor = selectedUserInteractor; mScreenOffUdfpsEnabled = - config.screenOffUdfpsEnabled(KeyguardUpdateMonitor.getCurrentUser()); + config.screenOffUdfpsEnabled(mSelectedUserInteractor.getSelectedUserId()); mDevicePostureController = devicePostureController; mDevicePosture = mDevicePostureController.getDevicePosture(); mAuthController = authController; - mUserTracker = userTracker; mUdfpsEnrolled = - mAuthController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser()); + mAuthController.isUdfpsEnrolled(mSelectedUserInteractor.getSelectedUserId()); mAuthController.addCallback(mAuthControllerCallback); mTriggerSensors = new TriggerSensor[] { new TriggerSensor( @@ -255,7 +254,7 @@ public class DozeSensors { new SensorManagerPlugin.Sensor(TYPE_WAKE_DISPLAY), Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE, mConfig.wakeScreenGestureAvailable() - && mConfig.alwaysOnEnabled(mUserTracker.getUserId()), + && mConfig.alwaysOnEnabled(mSelectedUserInteractor.getSelectedUserId()), DozeLog.REASON_SENSOR_WAKE_UP_PRESENCE, false /* reports touch coordinates */, false /* touchscreen */ @@ -296,12 +295,13 @@ public class DozeSensors { private boolean udfpsLongPressConfigured() { return mUdfpsEnrolled - && (mConfig.alwaysOnEnabled(mUserTracker.getUserId()) || mScreenOffUdfpsEnabled); + && (mConfig.alwaysOnEnabled(mSelectedUserInteractor.getSelectedUserId()) + || mScreenOffUdfpsEnabled); } private boolean quickPickUpConfigured() { return mUdfpsEnrolled - && mConfig.quickPickupSensorEnabled(KeyguardUpdateMonitor.getCurrentUser()); + && mConfig.quickPickupSensorEnabled(mSelectedUserInteractor.getSelectedUserId()); } /** @@ -471,7 +471,7 @@ public class DozeSensors { private final ContentObserver mSettingsObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange, Collection<Uri> uris, int flags, int userId) { - if (userId != mUserTracker.getUserId()) { + if (userId != mSelectedUserInteractor.getSelectedUserId()) { return; } for (TriggerSensor s : mTriggerSensors) { @@ -697,13 +697,13 @@ public class DozeSensors { } protected boolean enabledBySetting() { - if (!mConfig.enabled(mUserTracker.getUserId())) { + if (!mConfig.enabled(mSelectedUserInteractor.getSelectedUserId())) { return false; } else if (TextUtils.isEmpty(mSetting)) { return true; } return mSecureSettings.getIntForUser(mSetting, mSettingDefault ? 1 : 0, - mUserTracker.getUserId()) != 0; + mSelectedUserInteractor.getSelectedUserId()) != 0; } @Override @@ -873,7 +873,7 @@ public class DozeSensors { private void updateUdfpsEnrolled() { mUdfpsEnrolled = mAuthController.isUdfpsEnrolled( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.getSelectedUserId()); for (TriggerSensor sensor : mTriggerSensors) { if (REASON_SENSOR_QUICK_PICKUP == sensor.mPulseReason) { sensor.setConfigured(quickPickUpConfigured()); diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index 85272a609588..073ab085c5b6 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -50,6 +50,7 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.Assert; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.ProximityCheck; @@ -102,6 +103,7 @@ public class DozeTriggers implements DozeMachine.Part { private final AuthController mAuthController; private final KeyguardStateController mKeyguardStateController; private final UserTracker mUserTracker; + private final SelectedUserInteractor mSelectedUserInteractor; private final UiEventLogger mUiEventLogger; private long mNotificationPulseTime; @@ -201,7 +203,8 @@ public class DozeTriggers implements DozeMachine.Part { SessionTracker sessionTracker, KeyguardStateController keyguardStateController, DevicePostureController devicePostureController, - UserTracker userTracker) { + UserTracker userTracker, + SelectedUserInteractor selectedUserInteractor) { mContext = context; mDozeHost = dozeHost; mConfig = config; @@ -213,7 +216,7 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors = new DozeSensors(mContext.getResources(), mSensorManager, dozeParameters, config, wakeLock, this::onSensor, this::onProximityFar, dozeLog, proximitySensor, - secureSettings, authController, devicePostureController, userTracker); + secureSettings, authController, devicePostureController, selectedUserInteractor); mDockManager = dockManager; mProxCheck = proxCheck; mDozeLog = dozeLog; @@ -222,6 +225,7 @@ public class DozeTriggers implements DozeMachine.Part { mUiEventLogger = uiEventLogger; mKeyguardStateController = keyguardStateController; mUserTracker = userTracker; + mSelectedUserInteractor = selectedUserInteractor; } @Override @@ -246,7 +250,7 @@ public class DozeTriggers implements DozeMachine.Part { return; } mNotificationPulseTime = SystemClock.elapsedRealtime(); - if (!mConfig.pulseOnNotificationEnabled(mUserTracker.getUserId())) { + if (!mConfig.pulseOnNotificationEnabled(mSelectedUserInteractor.getSelectedUserId())) { runIfNotNull(onPulseSuppressedListener); mDozeLog.tracePulseDropped("pulseOnNotificationsDisabled"); return; diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java index c6c1f79c7113..5cc2e0aa811c 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java @@ -134,6 +134,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.telephony.TelephonyListenerManager; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.settings.GlobalSettings; @@ -195,6 +196,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene private final IDreamManager mDreamManager; private final DevicePolicyManager mDevicePolicyManager; private final LockPatternUtils mLockPatternUtils; + private final SelectedUserInteractor mSelectedUserInteractor; private final TelephonyListenerManager mTelephonyListenerManager; private final KeyguardStateController mKeyguardStateController; private final BroadcastDispatcher mBroadcastDispatcher; @@ -364,7 +366,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene PackageManager packageManager, ShadeController shadeController, KeyguardUpdateMonitor keyguardUpdateMonitor, - DialogLaunchAnimator dialogLaunchAnimator) { + DialogLaunchAnimator dialogLaunchAnimator, + SelectedUserInteractor selectedUserInteractor) { mContext = context; mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; @@ -399,6 +402,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mShadeController = shadeController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mDialogLaunchAnimator = dialogLaunchAnimator; + mSelectedUserInteractor = selectedUserInteractor; // receive broadcasts IntentFilter filter = new IntentFilter(); @@ -713,7 +717,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mUiEventLogger, mShadeController, mKeyguardUpdateMonitor, - mLockPatternUtils); + mLockPatternUtils, + mSelectedUserInteractor); dialog.setOnDismissListener(this); dialog.setOnShowListener(this); @@ -2222,6 +2227,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene private GestureDetector mGestureDetector; private final ShadeController mShadeController; private KeyguardUpdateMonitor mKeyguardUpdateMonitor; + private SelectedUserInteractor mSelectedUserInteractor; private LockPatternUtils mLockPatternUtils; private float mWindowDimAmount; @@ -2300,7 +2306,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene UiEventLogger uiEventLogger, ShadeController shadeController, KeyguardUpdateMonitor keyguardUpdateMonitor, - LockPatternUtils lockPatternUtils) { + LockPatternUtils lockPatternUtils, + SelectedUserInteractor selectedUserInteractor) { // We set dismissOnDeviceLock to false because we have a custom broadcast receiver to // dismiss this dialog when the device is locked. super(context, themeRes, false /* dismissOnDeviceLock */); @@ -2321,6 +2328,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mKeyguardUpdateMonitor = keyguardUpdateMonitor; mLockPatternUtils = lockPatternUtils; mGestureDetector = new GestureDetector(mContext, mGestureListener); + mSelectedUserInteractor = selectedUserInteractor; } @Override @@ -2453,10 +2461,10 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene } // If user entered from the lock screen and smart lock was enabled, disable it - int user = KeyguardUpdateMonitor.getCurrentUser(); + int user = mSelectedUserInteractor.getSelectedUserId(); boolean userHasTrust = mKeyguardUpdateMonitor.getUserHasTrust(user); if (mKeyguardShowing && userHasTrust) { - mLockPatternUtils.requireCredentialEntry(KeyguardUpdateMonitor.getCurrentUser()); + mLockPatternUtils.requireCredentialEntry(user); showSmartLockDisabledMessage(); } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt index ad2ec69b77ce..f1649fb2851e 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt @@ -18,7 +18,6 @@ package com.android.systemui.keyguard.domain.interactor import android.animation.ValueAnimator import com.android.keyguard.KeyguardSecurityModel -import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.flags.FeatureFlags @@ -27,19 +26,20 @@ import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepositor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.KeyguardSurfaceBehindModel import com.android.systemui.power.domain.interactor.PowerInteractor +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.kotlin.Utils.Companion.toQuad import com.android.systemui.util.kotlin.Utils.Companion.toQuint import com.android.systemui.util.kotlin.Utils.Companion.toTriple import com.android.systemui.util.kotlin.sample import com.android.wm.shell.animation.Interpolators +import javax.inject.Inject +import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch -import javax.inject.Inject -import kotlin.time.Duration.Companion.milliseconds @SysUISingleton class FromPrimaryBouncerTransitionInteractor @@ -51,6 +51,7 @@ constructor( private val keyguardInteractor: KeyguardInteractor, private val flags: FeatureFlags, private val keyguardSecurityModel: KeyguardSecurityModel, + private val selectedUserInteractor: SelectedUserInteractor, private val powerInteractor: PowerInteractor, ) : TransitionInteractor( @@ -132,7 +133,7 @@ constructor( .collect { ( isBouncerShowing, - isAwake, + isAwake, lastStartedTransitionStep, occluded, isActiveDreamLockscreenHosted) -> @@ -162,8 +163,7 @@ constructor( ), ::toQuad ) - .collect { - (isBouncerShowing, isAsleep, lastStartedTransitionStep, isAodAvailable) + .collect { (isBouncerShowing, isAsleep, lastStartedTransitionStep, isAodAvailable) -> if ( !isBouncerShowing && @@ -181,25 +181,24 @@ constructor( private fun listenForPrimaryBouncerToDreamingLockscreenHosted() { scope.launch { keyguardInteractor.primaryBouncerShowing - .sample( - combine( - keyguardInteractor.isActiveDreamLockscreenHosted, - transitionInteractor.startedKeyguardTransitionStep, - ::Pair - ), - ::toTriple - ) - .collect { (isBouncerShowing, - isActiveDreamLockscreenHosted, - lastStartedTransitionStep) -> - if ( - !isBouncerShowing && - isActiveDreamLockscreenHosted && - lastStartedTransitionStep.to == KeyguardState.PRIMARY_BOUNCER - ) { - startTransitionTo(KeyguardState.DREAMING_LOCKSCREEN_HOSTED) - } + .sample( + combine( + keyguardInteractor.isActiveDreamLockscreenHosted, + transitionInteractor.startedKeyguardTransitionStep, + ::Pair + ), + ::toTriple + ) + .collect { + (isBouncerShowing, isActiveDreamLockscreenHosted, lastStartedTransitionStep) -> + if ( + !isBouncerShowing && + isActiveDreamLockscreenHosted && + lastStartedTransitionStep.to == KeyguardState.PRIMARY_BOUNCER + ) { + startTransitionTo(KeyguardState.DREAMING_LOCKSCREEN_HOSTED) } + } } } @@ -221,7 +220,7 @@ constructor( ) { val securityMode = keyguardSecurityModel.getSecurityMode( - KeyguardUpdateMonitor.getCurrentUser() + selectedUserInteractor.getSelectedUserId() ) // IME for password requires a slightly faster animation val duration = diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt index 17e8bb320912..628e912253eb 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractor.kt @@ -27,12 +27,12 @@ import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.kotlin.Utils.Companion.toQuad import com.android.systemui.util.kotlin.sample +import javax.inject.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge -import javax.inject.Inject /** Encapsulates business logic for requesting the keyguard to dismiss/finish/done. */ @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardDismissBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardDismissBinder.kt index 5075a0766c2c..87d8164e1cb9 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardDismissBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardDismissBinder.kt @@ -26,9 +26,9 @@ 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.user.domain.interactor.SelectedUserInteractor +import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -import javax.inject.Inject /** Handles keyguard dismissal requests. */ @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java index 6f5e41f626de..04263882d3a8 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java @@ -47,7 +47,6 @@ import android.view.WindowManager.LayoutParams; import android.view.WindowManagerGlobal; import com.android.internal.annotations.VisibleForTesting; -import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dumpable; import com.android.systemui.biometrics.AuthController; import com.android.systemui.colorextraction.SysuiColorExtractor; @@ -72,6 +71,7 @@ import com.android.systemui.statusbar.phone.StatusBarWindowCallback; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import dagger.Lazy; @@ -112,6 +112,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW private final KeyguardBypassController mKeyguardBypassController; private final Executor mBackgroundExecutor; private final AuthController mAuthController; + private final Lazy<SelectedUserInteractor> mUserInteractor; private final Lazy<ShadeInteractor> mShadeInteractorLazy; private ViewGroup mWindowRootView; private LayoutParams mLp; @@ -157,7 +158,8 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW AuthController authController, ShadeExpansionStateManager shadeExpansionStateManager, Lazy<ShadeInteractor> shadeInteractorLazy, - ShadeWindowLogger logger) { + ShadeWindowLogger logger, + Lazy<SelectedUserInteractor> userInteractor) { mContext = context; mWindowRootViewComponentFactory = windowRootViewComponentFactory; mWindowManager = windowManager; @@ -174,6 +176,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW mScreenOffAnimationController = screenOffAnimationController; dumpManager.registerDumpable(this); mAuthController = authController; + mUserInteractor = userInteractor; mLastKeyguardRotationAllowed = mKeyguardStateController.isKeyguardScreenRotationAllowed(); mLockScreenDisplayTimeout = context.getResources() .getInteger(R.integer.config_lockScreenDisplayTimeout); @@ -348,7 +351,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW boolean onKeyguard = state.statusBarState == StatusBarState.KEYGUARD && !state.keyguardFadingAway && !state.keyguardGoingAway; if (onKeyguard - && mAuthController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser())) { + && mAuthController.isUdfpsEnrolled(mUserInteractor.get().getSelectedUserId())) { // both max and min display refresh rate must be set to take effect: mLpChanged.preferredMaxDisplayRefreshRate = mKeyguardPreferredRefreshRate; mLpChanged.preferredMinDisplayRefreshRate = mKeyguardPreferredRefreshRate; diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java index d05dfe2c11c1..09514404d4db 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java @@ -36,7 +36,6 @@ import com.android.keyguard.LockIconViewController; import com.android.keyguard.dagger.KeyguardBouncerComponent; import com.android.systemui.Dumpable; import com.android.systemui.animation.ActivityLaunchAnimator; -import com.android.systemui.back.domain.interactor.BackActionInteractor; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; @@ -55,7 +54,6 @@ import com.android.systemui.keyguard.shared.model.TransitionState; import com.android.systemui.keyguard.shared.model.TransitionStep; import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransitionViewModel; import com.android.systemui.log.BouncerLogger; -import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.res.R; import com.android.systemui.shared.animation.DisableSubpixelTextTransitionListener; import com.android.systemui.statusbar.DragDownHelper; @@ -75,6 +73,7 @@ import com.android.systemui.statusbar.phone.PhoneStatusBarViewController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.window.StatusBarWindowStateController; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.time.SystemClock; import java.io.PrintWriter; @@ -128,8 +127,6 @@ public class NotificationShadeWindowViewController implements Dumpable { private final CentralSurfaces mService; private final DozeServiceHost mDozeServiceHost; private final DozeScrimController mDozeScrimController; - private final BackActionInteractor mBackActionInteractor; - private final PowerInteractor mPowerInteractor; private final NotificationShadeWindowController mNotificationShadeWindowController; private DragDownHelper mDragDownHelper; private boolean mExpandingBelowNotch; @@ -164,8 +161,6 @@ public class NotificationShadeWindowViewController implements Dumpable { CentralSurfaces centralSurfaces, DozeServiceHost dozeServiceHost, DozeScrimController dozeScrimController, - BackActionInteractor backActionInteractor, - PowerInteractor powerInteractor, NotificationShadeWindowController controller, Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider, KeyguardUnlockAnimationController keyguardUnlockAnimationController, @@ -187,7 +182,8 @@ public class NotificationShadeWindowViewController implements Dumpable { BouncerLogger bouncerLogger, SysUIKeyEventHandler sysUIKeyEventHandler, PrimaryBouncerInteractor primaryBouncerInteractor, - AlternateBouncerInteractor alternateBouncerInteractor) { + AlternateBouncerInteractor alternateBouncerInteractor, + SelectedUserInteractor selectedUserInteractor) { mLockscreenShadeTransitionController = transitionController; mFalsingCollector = falsingCollector; mStatusBarStateController = statusBarStateController; @@ -200,12 +196,10 @@ public class NotificationShadeWindowViewController implements Dumpable { mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mStatusBarWindowStateController = statusBarWindowStateController; mLockIconViewController = lockIconViewController; - mBackActionInteractor = backActionInteractor; mShadeLogger = shadeLogger; mService = centralSurfaces; mDozeServiceHost = dozeServiceHost; mDozeScrimController = dozeScrimController; - mPowerInteractor = powerInteractor; mNotificationShadeWindowController = controller; mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; mAmbientState = ambientState; @@ -229,7 +223,8 @@ public class NotificationShadeWindowViewController implements Dumpable { messageAreaControllerFactory, bouncerMessageInteractor, bouncerLogger, - featureFlags); + featureFlags, + selectedUserInteractor); collectFlow(mView, keyguardTransitionInteractor.getLockscreenToDreamingTransition(), mLockscreenToDreamingTransition); diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt index 205a80a04089..a8a20cc8559b 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractor.kt @@ -36,6 +36,8 @@ import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupR import com.android.systemui.statusbar.policy.data.repository.DeviceProvisioningRepository import com.android.systemui.user.domain.interactor.UserSwitcherInteractor import com.android.systemui.util.kotlin.pairwise +import javax.inject.Inject +import javax.inject.Provider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.currentCoroutineContext @@ -51,8 +53,6 @@ import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.isActive -import javax.inject.Inject -import javax.inject.Provider /** Business logic for shade interactions. */ @OptIn(ExperimentalCoroutinesApi::class) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt index 9ba1f7aa2f66..380cdadd1361 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinator.kt @@ -30,6 +30,7 @@ import com.android.systemui.statusbar.notification.collection.coordinator.dagger import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import dagger.Binds import dagger.Module import javax.inject.Inject @@ -52,7 +53,8 @@ class SensitiveContentCoordinatorImpl @Inject constructor( private val lockscreenUserManager: NotificationLockscreenUserManager, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val statusBarStateController: StatusBarStateController, - private val keyguardStateController: KeyguardStateController + private val keyguardStateController: KeyguardStateController, + private val selectedUserInteractor: SelectedUserInteractor, ) : Invalidator("SensitiveContentInvalidator"), SensitiveContentCoordinator, DynamicPrivacyController.Listener, @@ -67,10 +69,10 @@ class SensitiveContentCoordinatorImpl @Inject constructor( override fun onDynamicPrivacyChanged(): Unit = invalidateList("onDynamicPrivacyChanged") override fun onBeforeRenderList(entries: List<ListEntry>) { - if (keyguardStateController.isKeyguardGoingAway() || - statusBarStateController.getState() == StatusBarState.KEYGUARD && + if (keyguardStateController.isKeyguardGoingAway || + statusBarStateController.state == StatusBarState.KEYGUARD && keyguardUpdateMonitor.getUserUnlockedWithBiometricAndIsBypassing( - KeyguardUpdateMonitor.getCurrentUser())) { + selectedUserInteractor.getSelectedUserId())) { // don't update yet if: // - the keyguard is currently going away // - LS is about to be dismissed by a biometric that bypasses LS (avoid notif flash) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java index 8129b83a22d9..23f1929d9dbb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java @@ -59,8 +59,11 @@ import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.time.SystemClock; +import dagger.Lazy; + import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -175,6 +178,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp private final BiometricUnlockLogger mLogger; private final SystemClock mSystemClock; private final boolean mOrderUnlockAndWake; + private final Lazy<SelectedUserInteractor> mSelectedUserInteractor; private final DeviceEntryHapticsInteractor mHapticsInteractor; private long mLastFpFailureUptimeMillis; @@ -286,7 +290,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp VibratorHelper vibrator, SystemClock systemClock, FeatureFlags featureFlags, - DeviceEntryHapticsInteractor hapticsInteractor + DeviceEntryHapticsInteractor hapticsInteractor, + Lazy<SelectedUserInteractor> selectedUserInteractor ) { mPowerManager = powerManager; mUpdateMonitor = keyguardUpdateMonitor; @@ -317,6 +322,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp mOrderUnlockAndWake = resources.getBoolean( com.android.internal.R.bool.config_orderUnlockAndWake); mHapticsInteractor = hapticsInteractor; + mSelectedUserInteractor = selectedUserInteractor; dumpManager.registerDumpable(this); } @@ -537,7 +543,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp return mPendingAuthenticated != null && mUpdateMonitor .isUnlockingWithBiometricAllowed(mPendingAuthenticated.isStrongBiometric) - && mPendingAuthenticated.userId == KeyguardUpdateMonitor.getCurrentUser(); + && mPendingAuthenticated.userId + == mSelectedUserInteractor.get().getSelectedUserId(); } public @WakeAndUnlockMode int getMode() { @@ -601,11 +608,11 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp // if unlocking isn't allowed, log more information about why unlocking may not // have been allowed final int strongAuthFlags = mUpdateMonitor.getStrongAuthTracker().getStrongAuthForUser( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.get().getSelectedUserId()); final boolean nonStrongBiometricAllowed = mUpdateMonitor.getStrongAuthTracker() .isNonStrongBiometricAllowedAfterIdleTimeout( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.get().getSelectedUserId()); mLogger.logCalculateModeForFingerprintUnlockingNotAllowed(strongBiometric, strongAuthFlags, nonStrongBiometricAllowed, deviceInteractive, keyguardShowing); @@ -671,11 +678,11 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp // if unlocking isn't allowed, log more information about why unlocking may not // have been allowed final int strongAuthFlags = mUpdateMonitor.getStrongAuthTracker().getStrongAuthForUser( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.get().getSelectedUserId()); final boolean nonStrongBiometricAllowed = mUpdateMonitor.getStrongAuthTracker() .isNonStrongBiometricAllowedAfterIdleTimeout( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.get().getSelectedUserId()); mLogger.logCalculateModeForPassiveAuthUnlockingNotAllowed( strongBiometric, strongAuthFlags, nonStrongBiometricAllowed, @@ -723,7 +730,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp // Suppress all face auth errors if fingerprint can be used to authenticate if ((biometricSourceType == BiometricSourceType.FACE && !mUpdateMonitor.getCachedIsUnlockWithFingerprintPossible( - KeyguardUpdateMonitor.getCurrentUser())) + mSelectedUserInteractor.get().getSelectedUserId())) || (biometricSourceType == BiometricSourceType.FINGERPRINT)) { mHapticsInteractor.vibrateError(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt index bde5c32c9f41..109e77e92b7b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt @@ -31,6 +31,7 @@ import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.Assert import com.android.systemui.util.sensors.AsyncSensorManager import java.io.PrintWriter @@ -48,7 +49,8 @@ class KeyguardLiftController @Inject constructor( private val asyncSensorManager: AsyncSensorManager, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val keyguardFaceAuthInteractor: KeyguardFaceAuthInteractor, - private val dumpManager: DumpManager + private val dumpManager: DumpManager, + private val selectedUserInteractor: SelectedUserInteractor, ) : Dumpable, CoreStartable { private val pickupSensor = asyncSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE) @@ -115,7 +117,7 @@ class KeyguardLiftController @Inject constructor( val onKeyguard = keyguardUpdateMonitor.isKeyguardVisible && !statusBarStateController.isDozing - val userId = KeyguardUpdateMonitor.getCurrentUser() + val userId = selectedUserInteractor.getSelectedUserId() val isFaceEnabled = keyguardUpdateMonitor.isFaceAuthEnabledForUser(userId) val shouldListen = (onKeyguard || bouncerVisible) && isFaceEnabled if (shouldListen != isListening) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 400ac7b415b5..90fddd9ae22c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -92,6 +92,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.unfold.FoldAodAnimationController; import com.android.systemui.unfold.SysUIUnfoldComponent; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import dagger.Lazy; @@ -313,6 +314,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private final KeyguardUpdateMonitor mKeyguardUpdateManager; private final LatencyTracker mLatencyTracker; private final KeyguardSecurityModel mKeyguardSecurityModel; + private final SelectedUserInteractor mSelectedUserInteractor; @Nullable private KeyguardBypassController mBypassController; @Nullable private OccludingAppBiometricUI mOccludingAppBiometricUI; @@ -370,7 +372,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb KeyguardTransitionInteractor keyguardTransitionInteractor, @Main CoroutineDispatcher mainDispatcher, Lazy<WindowManagerLockscreenVisibilityInteractor> wmLockscreenVisibilityInteractor, - Lazy<KeyguardDismissActionInteractor> keyguardDismissActionInteractorLazy + Lazy<KeyguardDismissActionInteractor> keyguardDismissActionInteractorLazy, + SelectedUserInteractor selectedUserInteractor ) { mContext = context; mViewMediatorCallback = callback; @@ -403,6 +406,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mMainDispatcher = mainDispatcher; mWmLockscreenVisibilityInteractor = wmLockscreenVisibilityInteractor; mKeyguardDismissActionInteractor = keyguardDismissActionInteractorLazy; + mSelectedUserInteractor = selectedUserInteractor; } KeyguardTransitionInteractor mKeyguardTransitionInteractor; @@ -1142,7 +1146,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb */ public boolean isSecure() { return mKeyguardSecurityModel.getSecurityMode( - KeyguardUpdateMonitor.getCurrentUser()) != KeyguardSecurityModel.SecurityMode.None; + mSelectedUserInteractor.getSelectedUserId()) + != KeyguardSecurityModel.SecurityMode.None; } /** @@ -1690,7 +1695,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb */ public boolean needsFullscreenBouncer() { KeyguardSecurityModel.SecurityMode mode = mKeyguardSecurityModel.getSecurityMode( - KeyguardUpdateMonitor.getCurrentUser()); + mSelectedUserInteractor.getSelectedUserId()); return mode == KeyguardSecurityModel.SecurityMode.SimPin || mode == KeyguardSecurityModel.SecurityMode.SimPuk; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java index 1c88289706f3..c950c1ab3cbd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java @@ -37,11 +37,12 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.logging.KeyguardUpdateMonitorLogger; import com.android.systemui.Dumpable; -import com.android.systemui.res.R; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; +import com.android.systemui.res.R; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import dagger.Lazy; @@ -64,6 +65,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum private final Context mContext; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final LockPatternUtils mLockPatternUtils; + private final Lazy<SelectedUserInteractor> mUserInteractor; private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = new UpdateMonitorCallback(); private final Lazy<KeyguardUnlockAnimationController> mUnlockAnimationControllerLazy; @@ -120,11 +122,13 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, KeyguardUpdateMonitorLogger logger, DumpManager dumpManager, - FeatureFlags featureFlags) { + FeatureFlags featureFlags, + Lazy<SelectedUserInteractor> userInteractor) { mContext = context; mLogger = logger; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mLockPatternUtils = lockPatternUtils; + mUserInteractor = userInteractor; mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback); mUnlockAnimationControllerLazy = keyguardUnlockAnimationController; mFeatureFlags = featureFlags; diff --git a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserSwitcherRepository.kt b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserSwitcherRepository.kt index dc7fadd5eb14..1238789389ee 100644 --- a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserSwitcherRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserSwitcherRepository.kt @@ -21,7 +21,6 @@ import android.graphics.drawable.Drawable import android.os.Handler import android.os.UserManager import android.provider.Settings.Global.USER_SWITCHER_ENABLED -import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton @@ -30,7 +29,6 @@ import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.qs.SettingObserver import com.android.systemui.qs.footer.data.model.UserSwitcherStatusModel import com.android.systemui.res.R -import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.policy.UserInfoController import com.android.systemui.statusbar.policy.UserSwitcherController import com.android.systemui.util.settings.GlobalSettings @@ -61,10 +59,10 @@ constructor( @Background private val bgHandler: Handler, @Background private val bgDispatcher: CoroutineDispatcher, private val userManager: UserManager, - private val userTracker: UserTracker, private val userSwitcherController: UserSwitcherController, private val userInfoController: UserInfoController, private val globalSetting: GlobalSettings, + private val userRepository: UserRepository, ) : UserSwitcherRepository { private val showUserSwitcherForSingleUser = context.resources.getBoolean(R.bool.qs_show_user_switcher_for_single_user) @@ -80,7 +78,7 @@ constructor( globalSetting, bgHandler, USER_SWITCHER_ENABLED, - userTracker.userId, + userRepository.getSelectedUserInfo().id, ) { override fun handleValueChanged(value: Int, observedChange: Boolean) { if (observedChange) { @@ -147,7 +145,7 @@ constructor( private suspend fun isGuestUser(): Boolean { return withContext(bgDispatcher) { - userManager.isGuestUser(KeyguardUpdateMonitor.getCurrentUser()) + userManager.isGuestUser(userRepository.getSelectedUserInfo().id) } } diff --git a/packages/SystemUI/src/com/android/systemui/user/ui/dialog/UserSwitcherDialogCoordinator.kt b/packages/SystemUI/src/com/android/systemui/user/ui/dialog/UserSwitcherDialogCoordinator.kt index cced98376197..922dc0521a49 100644 --- a/packages/SystemUI/src/com/android/systemui/user/ui/dialog/UserSwitcherDialogCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/user/ui/dialog/UserSwitcherDialogCoordinator.kt @@ -37,11 +37,11 @@ import com.android.systemui.user.domain.interactor.UserSwitcherInteractor import com.android.systemui.user.domain.model.ShowDialogRequestModel import com.android.systemui.user.ui.viewmodel.UserSwitcherViewModel import dagger.Lazy +import javax.inject.Inject +import javax.inject.Provider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.launch -import javax.inject.Inject -import javax.inject.Provider /** Coordinates dialogs for user switcher logic. */ @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModel.kt b/packages/SystemUI/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModel.kt index 1c31e8aef1ec..4089889f4b1e 100644 --- a/packages/SystemUI/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModel.kt @@ -25,12 +25,12 @@ import com.android.systemui.user.domain.interactor.UserSwitcherInteractor import com.android.systemui.user.legacyhelper.ui.LegacyUserUiHelper import com.android.systemui.user.shared.model.UserActionModel import com.android.systemui.user.shared.model.UserModel +import javax.inject.Inject +import kotlin.math.ceil import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map -import javax.inject.Inject -import kotlin.math.ceil /** Models UI state for the user switcher feature. */ @SysUISingleton diff --git a/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java index d506584cdfac..cdd0eb0e265d 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java @@ -50,6 +50,7 @@ import androidx.test.filters.SmallTest; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.SysuiTestCase; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import org.junit.After; import org.junit.Before; @@ -64,7 +65,7 @@ import org.mockito.MockitoAnnotations; @SmallTest public class AdminSecondaryLockScreenControllerTest extends SysuiTestCase { - private static final int TARGET_USER_ID = KeyguardUpdateMonitor.getCurrentUser(); + private static final int TARGET_USER_ID = 0; private AdminSecondaryLockScreenController mTestController; private ComponentName mComponentName; @@ -80,12 +81,15 @@ public class AdminSecondaryLockScreenControllerTest extends SysuiTestCase { private KeyguardSecurityCallback mKeyguardCallback; @Mock private KeyguardUpdateMonitor mUpdateMonitor; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; private SurfaceControlViewHost.SurfacePackage mSurfacePackage; @Before public void setUp() { MockitoAnnotations.initMocks(this); + when(mSelectedUserInteractor.getSelectedUserId()).thenReturn(TARGET_USER_ID); mKeyguardSecurityContainer = spy(new KeyguardSecurityContainer(mContext)); mKeyguardSecurityContainer.setId(View.generateViewId()); @@ -106,7 +110,8 @@ public class AdminSecondaryLockScreenControllerTest extends SysuiTestCase { new Binder())).getSurfacePackage(); mTestController = new AdminSecondaryLockScreenController.Factory( - mContext, mKeyguardSecurityContainer, mUpdateMonitor, mHandler) + mContext, mKeyguardSecurityContainer, mUpdateMonitor, mHandler, + mSelectedUserInteractor) .create(mKeyguardCallback); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/EmergencyButtonControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/EmergencyButtonControllerTest.kt index 30fed0b0316f..c61b11ae7336 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/EmergencyButtonControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/EmergencyButtonControllerTest.kt @@ -29,6 +29,7 @@ import com.android.internal.widget.LockPatternUtils import com.android.systemui.SysuiTestCase import com.android.systemui.shade.ShadeController import com.android.systemui.statusbar.policy.ConfigurationController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.eq @@ -59,6 +60,7 @@ class EmergencyButtonControllerTest : SysuiTestCase() { @Mock lateinit var metricsLogger: MetricsLogger @Mock lateinit var lockPatternUtils: LockPatternUtils @Mock lateinit var packageManager: PackageManager + @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor val fakeSystemClock = FakeSystemClock() val mainExecutor = FakeExecutor(fakeSystemClock) val backgroundExecutor = FakeExecutor(fakeSystemClock) @@ -79,7 +81,8 @@ class EmergencyButtonControllerTest : SysuiTestCase() { metricsLogger, lockPatternUtils, mainExecutor, - backgroundExecutor + backgroundExecutor, + mSelectedUserInteractor, ) context.setMockPackageManager(packageManager) Mockito.`when`(emergencyButton.context).thenReturn(context) diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardAbsKeyInputViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardAbsKeyInputViewControllerTest.java index 42f65f6f53b4..7f20d9aa9451 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardAbsKeyInputViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardAbsKeyInputViewControllerTest.java @@ -37,12 +37,13 @@ import com.android.internal.util.LatencyTracker; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardAbsKeyInputView.KeyDownListener; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; -import com.android.systemui.res.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.flags.Flags; +import com.android.systemui.res.R; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import org.junit.Before; import org.junit.Test; @@ -81,6 +82,8 @@ public class KeyguardAbsKeyInputViewControllerTest extends SysuiTestCase { private EmergencyButtonController mEmergencyButtonController; private FakeFeatureFlags mFeatureFlags; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; private KeyguardAbsKeyInputViewController mKeyguardAbsKeyInputViewController; @Before @@ -105,7 +108,7 @@ public class KeyguardAbsKeyInputViewControllerTest extends SysuiTestCase { return new KeyguardAbsKeyInputViewController(mAbsKeyInputView, mKeyguardUpdateMonitor, mSecurityMode, mLockPatternUtils, mKeyguardSecurityCallback, mKeyguardMessageAreaControllerFactory, mLatencyTracker, mFalsingCollector, - mEmergencyButtonController, mFeatureFlags) { + mEmergencyButtonController, mFeatureFlags, mSelectedUserInteractor) { @Override void resetState() { } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardBiometricLockoutLoggerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardBiometricLockoutLoggerTest.kt index 91b544b8265c..634dac16d1ec 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardBiometricLockoutLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardBiometricLockoutLoggerTest.kt @@ -25,6 +25,7 @@ import com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUT import com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE import com.android.systemui.SysuiTestCase import com.android.systemui.log.SessionTracker +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -34,8 +35,8 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions -import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations +import org.mockito.Mockito.`when` as whenever @RunWith(AndroidTestingRunner::class) @SmallTest @@ -50,6 +51,8 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() { lateinit var sessionTracker: SessionTracker @Mock lateinit var sessionId: InstanceId + @Mock + lateinit var mSelectedUserInteractor: SelectedUserInteractor @Captor lateinit var updateMonitorCallbackCaptor: ArgumentCaptor<KeyguardUpdateMonitorCallback> @@ -65,7 +68,8 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() { keyguardBiometricLockoutLogger = KeyguardBiometricLockoutLogger( uiEventLogger, keyguardUpdateMonitor, - sessionTracker) + sessionTracker, + mSelectedUserInteractor) } @Test diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPasswordViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPasswordViewControllerTest.kt index d8a2c5f76fce..3fbcf6d77f82 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPasswordViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPasswordViewControllerTest.kt @@ -24,12 +24,13 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.internal.widget.LockPatternUtils -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollector import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags +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.concurrency.DelayableExecutor import com.android.systemui.util.mockito.whenever import org.junit.Before @@ -62,6 +63,7 @@ class KeyguardPasswordViewControllerTest : SysuiTestCase() { @Mock lateinit var mainExecutor: DelayableExecutor @Mock lateinit var falsingCollector: FalsingCollector @Mock lateinit var keyguardViewController: KeyguardViewController + @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var mKeyguardMessageArea: BouncerKeyguardMessageArea @Mock private lateinit var mKeyguardMessageAreaController: @@ -106,7 +108,8 @@ class KeyguardPasswordViewControllerTest : SysuiTestCase() { falsingCollector, keyguardViewController, postureController, - fakeFeatureFlags + fakeFeatureFlags, + mSelectedUserInteractor, ) } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt index dc1618d128b3..74c922561343 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPatternViewControllerTest.kt @@ -24,15 +24,16 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.internal.widget.LockPatternUtils -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollector import com.android.systemui.classifier.FalsingCollectorFake import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags +import com.android.systemui.res.R import com.android.systemui.statusbar.policy.DevicePostureController import com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_HALF_OPENED import com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat @@ -75,6 +76,9 @@ class KeyguardPatternViewControllerTest : SysuiTestCase() { KeyguardMessageAreaController.Factory @Mock + private lateinit var mSelectedUserInteractor: SelectedUserInteractor + + @Mock private lateinit var mKeyguardMessageAreaController: KeyguardMessageAreaController<BouncerKeyguardMessageArea> @@ -108,7 +112,8 @@ class KeyguardPatternViewControllerTest : SysuiTestCase() { mEmergencyButtonController, mKeyguardMessageAreaControllerFactory, mPostureController, - fakeFeatureFlags + fakeFeatureFlags, + mSelectedUserInteractor ) mKeyguardPatternView.onAttachedToWindow() } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinBasedInputViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinBasedInputViewControllerTest.java index 4a24e4a1f40f..d41c2497b230 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinBasedInputViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinBasedInputViewControllerTest.java @@ -34,10 +34,10 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.classifier.FalsingCollectorFake; -import com.android.systemui.classifier.SingleTapClassifier; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.res.R; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import org.junit.Before; import org.junit.Test; @@ -76,11 +76,11 @@ public class KeyguardPinBasedInputViewControllerTest extends SysuiTestCase { private EmergencyButtonController mEmergencyButtonController; private FalsingCollector mFalsingCollector = new FalsingCollectorFake(); @Mock - private SingleTapClassifier mSingleTapClassifier; - @Mock private View mDeleteButton; @Mock private View mOkButton; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; private NumPadKey[] mButtons = new NumPadKey[]{}; private KeyguardPinBasedInputViewController mKeyguardPinViewController; @@ -108,7 +108,8 @@ public class KeyguardPinBasedInputViewControllerTest extends SysuiTestCase { mKeyguardPinViewController = new KeyguardPinBasedInputViewController(mPinBasedInputView, mKeyguardUpdateMonitor, mSecurityMode, mLockPatternUtils, mKeyguardSecurityCallback, mKeyguardMessageAreaControllerFactory, mLatencyTracker, mLiftToactivateListener, - mEmergencyButtonController, mFalsingCollector, featureFlags) { + mEmergencyButtonController, mFalsingCollector, featureFlags, + mSelectedUserInteractor) { @Override public void onResume(int reason) { super.onResume(reason); diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinViewControllerTest.kt index 9df4dd4df4d2..80d45bcc23dd 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPinViewControllerTest.kt @@ -25,15 +25,16 @@ import androidx.test.filters.SmallTest 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.SysuiTestCase import com.android.systemui.classifier.FalsingCollector import com.android.systemui.classifier.FalsingCollectorFake import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags +import com.android.systemui.res.R import com.android.systemui.statusbar.policy.DevicePostureController import com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_HALF_OPENED import com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import org.junit.Before @@ -84,6 +85,7 @@ class KeyguardPinViewControllerTest : SysuiTestCase() { @Mock private val mEmergencyButtonController: EmergencyButtonController? = null private val falsingCollector: FalsingCollector = FalsingCollectorFake() @Mock lateinit var postureController: DevicePostureController + @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock lateinit var featureFlags: FeatureFlags @Mock lateinit var passwordTextView: PasswordTextView @@ -133,7 +135,8 @@ class KeyguardPinViewControllerTest : SysuiTestCase() { mEmergencyButtonController, falsingCollector, postureController, - featureFlags + featureFlags, + mSelectedUserInteractor, ) } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt index 581739030aad..fda4133240c2 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt @@ -74,6 +74,7 @@ import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.GlobalSettings import com.google.common.truth.Truth import dagger.Lazy +import java.util.Optional import junit.framework.Assert import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow @@ -96,7 +97,6 @@ import org.mockito.Mockito.never import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations -import java.util.Optional @SmallTest @RunWith(AndroidJUnit4::class) @@ -215,7 +215,8 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { null, keyguardViewController, postureController, - featureFlags + featureFlags, + mSelectedUserInteractor, ) sceneTestUtils = SceneTestUtils(this) diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPinViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPinViewControllerTest.kt index 4290b8b28687..94c3bde29597 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPinViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPinViewControllerTest.kt @@ -24,11 +24,12 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.internal.widget.LockPatternUtils -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollector import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags +import com.android.systemui.res.R +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import org.junit.Before import org.junit.Test @@ -58,6 +59,7 @@ class KeyguardSimPinViewControllerTest : SysuiTestCase() { @Mock private lateinit var telephonyManager: TelephonyManager @Mock private lateinit var falsingCollector: FalsingCollector @Mock private lateinit var emergencyButtonController: EmergencyButtonController + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var keyguardMessageAreaController: KeyguardMessageAreaController<BouncerKeyguardMessageArea> @@ -90,6 +92,7 @@ class KeyguardSimPinViewControllerTest : SysuiTestCase() { falsingCollector, emergencyButtonController, fakeFeatureFlags, + mSelectedUserInteractor ) underTest.init() } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPukViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPukViewControllerTest.kt index 31ee6411f93b..7b1f302da6e8 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPukViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSimPukViewControllerTest.kt @@ -24,11 +24,12 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.internal.widget.LockPatternUtils -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollector import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags +import com.android.systemui.res.R +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import org.junit.Before import org.junit.Test @@ -54,6 +55,7 @@ class KeyguardSimPukViewControllerTest : SysuiTestCase() { @Mock private lateinit var telephonyManager: TelephonyManager @Mock private lateinit var falsingCollector: FalsingCollector @Mock private lateinit var emergencyButtonController: EmergencyButtonController + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var keyguardMessageAreaController: KeyguardMessageAreaController<BouncerKeyguardMessageArea> @@ -89,6 +91,7 @@ class KeyguardSimPukViewControllerTest : SysuiTestCase() { falsingCollector, emergencyButtonController, fakeFeatureFlags, + mSelectedUserInteractor, ) underTest.init() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt index ebe13feb0f6f..c5f16aa97f18 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt @@ -36,7 +36,6 @@ import android.view.accessibility.AccessibilityManager import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.keyguard.KeyguardUpdateMonitor -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.animation.ActivityLaunchAnimator import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams @@ -46,12 +45,14 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlags import com.android.systemui.keyguard.ui.viewmodel.UdfpsKeyguardViewModels import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.res.R import com.android.systemui.statusbar.LockscreenShadeTransitionController import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.phone.SystemUIDialogManager import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.settings.SecureSettings import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -111,6 +112,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { @Mock private lateinit var primaryBouncerInteractor: PrimaryBouncerInteractor @Mock private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor @Mock private lateinit var udfpsUtils: UdfpsUtils + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var udfpsKeyguardAccessibilityDelegate: UdfpsKeyguardAccessibilityDelegate @Mock private lateinit var udfpsKeyguardViewModels: Provider<UdfpsKeyguardViewModels> @@ -163,6 +165,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { isDebuggable, udfpsKeyguardAccessibilityDelegate, udfpsKeyguardViewModels, + mSelectedUserInteractor, ) block() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java index dcb53984ad87..f32e1a5bcd6a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java @@ -102,6 +102,7 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.concurrency.FakeExecution; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -214,6 +215,8 @@ public class UdfpsControllerTest extends SysuiTestCase { private UdfpsKeyguardAccessibilityDelegate mUdfpsKeyguardAccessibilityDelegate; @Mock private Provider<UdfpsKeyguardViewModels> mUdfpsKeyguardViewModels; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; // Capture listeners so that they can be used to send events @Captor @@ -326,7 +329,8 @@ public class UdfpsControllerTest extends SysuiTestCase { mInputManager, mock(KeyguardFaceAuthInteractor.class), mUdfpsKeyguardAccessibilityDelegate, - mUdfpsKeyguardViewModels + mUdfpsKeyguardViewModels, + mSelectedUserInteractor ); verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture()); mOverlayController = mOverlayCaptor.getValue(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerBaseTest.java index e512adcc0542..2c4e1362bed3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerBaseTest.java @@ -40,6 +40,7 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager; import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.concurrency.DelayableExecutor; import org.junit.Before; @@ -69,6 +70,7 @@ public class UdfpsKeyguardViewLegacyControllerBaseTest extends SysuiTestCase { protected @Mock PrimaryBouncerInteractor mPrimaryBouncerInteractor; protected @Mock AlternateBouncerInteractor mAlternateBouncerInteractor; protected @Mock UdfpsKeyguardAccessibilityDelegate mUdfpsKeyguardAccessibilityDelegate; + protected @Mock SelectedUserInteractor mSelectedUserInteractor; protected FakeFeatureFlags mFeatureFlags = new FakeFeatureFlags(); @@ -142,7 +144,8 @@ public class UdfpsKeyguardViewLegacyControllerBaseTest extends SysuiTestCase { mFeatureFlags, mPrimaryBouncerInteractor, mAlternateBouncerInteractor, - mUdfpsKeyguardAccessibilityDelegate); + mUdfpsKeyguardAccessibilityDelegate, + mSelectedUserInteractor); return controller; } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt index 02ee53879ea0..97dada27f8c0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewLegacyControllerWithCoroutinesTest.kt @@ -96,6 +96,7 @@ class UdfpsKeyguardViewLegacyControllerWithCoroutinesTest : mKeyguardUpdateMonitor, FakeTrustRepository(), testScope.backgroundScope, + mSelectedUserInteractor, ) mAlternateBouncerInteractor = AlternateBouncerInteractor( diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt index 6b9c34bbd237..bbf471c34cc7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/UdfpsOverlayInteractorTest.kt @@ -24,6 +24,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.biometrics.AuthController import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope @@ -55,6 +56,7 @@ class UdfpsOverlayInteractorTest : SysuiTestCase() { @Mock private lateinit var udfpsOverlayParams: UdfpsOverlayParams @Mock private lateinit var overlayBounds: Rect + @Mock private lateinit var selectedUserInteractor: SelectedUserInteractor private lateinit var underTest: UdfpsOverlayInteractor @@ -104,7 +106,12 @@ class UdfpsOverlayInteractorTest : SysuiTestCase() { } private fun createUdpfsOverlayInteractor() { - underTest = UdfpsOverlayInteractor(authController, testScope.backgroundScope) + underTest = + UdfpsOverlayInteractor( + authController, + selectedUserInteractor, + testScope.backgroundScope + ) testScope.runCurrent() } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt index cc4eca546e17..b48bc1d28f86 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractorTest.kt @@ -48,6 +48,7 @@ import com.android.systemui.res.R.string.kg_too_many_failed_attempts_countdown import com.android.systemui.res.R.string.kg_trust_agent_disabled import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.KotlinArgumentCaptor import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat @@ -86,6 +87,7 @@ class BouncerMessageInteractorTest : SysuiTestCase() { @Mock private lateinit var countDownTimerUtil: CountDownTimerUtil @Mock private lateinit var systemPropertiesHelper: SystemPropertiesHelper @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor private lateinit var primaryBouncerInteractor: PrimaryBouncerInteractor private lateinit var testScope: TestScope @@ -119,6 +121,7 @@ class BouncerMessageInteractorTest : SysuiTestCase() { keyguardUpdateMonitor, fakeTrustRepository, testScope.backgroundScope, + mSelectedUserInteractor, ) underTest = BouncerMessageInteractor( diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt index 9a5b4585e0ae..9373ada75003 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt @@ -25,7 +25,6 @@ import androidx.test.filters.SmallTest import com.android.keyguard.KeyguardSecurityModel import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.DejankUtils -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepository import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EXPANSION_HIDDEN @@ -37,7 +36,9 @@ import com.android.systemui.classifier.FalsingCollector import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.repository.FakeTrustRepository import com.android.systemui.plugins.ActivityStarter +import com.android.systemui.res.R import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.whenever import com.android.systemui.utils.os.FakeHandler @@ -70,6 +71,7 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() { @Mock private lateinit var falsingCollector: FalsingCollector @Mock private lateinit var dismissCallbackRegistry: DismissCallbackRegistry @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor private lateinit var mainHandler: FakeHandler private lateinit var underTest: PrimaryBouncerInteractor private lateinit var resources: TestableResources @@ -100,6 +102,7 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() { keyguardUpdateMonitor, trustRepository, testScope.backgroundScope, + mSelectedUserInteractor, ) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null) whenever(repository.primaryBouncerShow.value).thenReturn(false) diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorWithCoroutinesTest.kt index 2018e614ba00..d1b120e0948b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorWithCoroutinesTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorWithCoroutinesTest.kt @@ -28,8 +28,8 @@ import com.android.systemui.classifier.FalsingCollector import com.android.systemui.coroutines.collectLastValue import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.repository.TrustRepository -import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.utils.os.FakeHandler import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.TestScope @@ -51,8 +51,8 @@ class PrimaryBouncerInteractorWithCoroutinesTest : SysuiTestCase() { @Mock private lateinit var primaryBouncerCallbackInteractor: PrimaryBouncerCallbackInteractor @Mock private lateinit var falsingCollector: FalsingCollector @Mock private lateinit var dismissCallbackRegistry: DismissCallbackRegistry - @Mock private lateinit var keyguardBypassController: KeyguardBypassController @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor private val mainHandler = FakeHandler(Looper.getMainLooper()) private lateinit var underTest: PrimaryBouncerInteractor @@ -74,6 +74,7 @@ class PrimaryBouncerInteractorWithCoroutinesTest : SysuiTestCase() { keyguardUpdateMonitor, Mockito.mock(TrustRepository::class.java), TestScope().backgroundScope, + mSelectedUserInteractor, ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt index 802f8e6043fd..b75f3e0876ff 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt @@ -32,8 +32,8 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.repository.TrustRepository -import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.utils.os.FakeHandler import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.launchIn @@ -60,7 +60,7 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() { @Mock private lateinit var primaryBouncerCallbackInteractor: PrimaryBouncerCallbackInteractor @Mock private lateinit var falsingCollector: FalsingCollector @Mock private lateinit var dismissCallbackRegistry: DismissCallbackRegistry - @Mock private lateinit var keyguardBypassController: KeyguardBypassController + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor private val mainHandler = FakeHandler(Looper.getMainLooper()) val repository = FakeKeyguardBouncerRepository() @@ -82,6 +82,7 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() { keyguardUpdateMonitor, Mockito.mock(TrustRepository::class.java), TestScope().backgroundScope, + mSelectedUserInteractor, ) underTest = KeyguardBouncerViewModel(bouncerView, bouncerInteractor) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt index 037c1badf0ac..6d3cc4c536f1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt @@ -28,11 +28,11 @@ import androidx.test.filters.SmallTest import com.android.systemui.ActivityIntentHelper import com.android.systemui.SysuiTestCase import com.android.systemui.plugins.ActivityStarter -import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.KotlinArgumentCaptor import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock @@ -46,8 +46,8 @@ import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.anyInt import org.mockito.Mockito.verify -import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations +import org.mockito.Mockito.`when` as whenever @SmallTest @RunWith(JUnit4::class) @@ -74,7 +74,7 @@ class CameraGestureHelperTest : SysuiTestCase() { @Mock lateinit var contentResolver: ContentResolver @Mock - lateinit var userTracker: UserTracker + lateinit var mSelectedUserInteractor: SelectedUserInteractor private lateinit var underTest: CameraGestureHelper @@ -103,7 +103,7 @@ class CameraGestureHelperTest : SysuiTestCase() { cameraIntents = cameraIntents, contentResolver = contentResolver, uiExecutor = MoreExecutors.directExecutor(), - userTracker = userTracker, + selectedUserInteractor = mSelectedUserInteractor, ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java index 442bf918ad8c..80fe9e762832 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java @@ -40,6 +40,7 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.sensors.ThresholdSensor; @@ -75,6 +76,8 @@ public class FalsingCollectorImplTest extends SysuiTestCase { private ShadeExpansionStateManager mShadeExpansionStateManager; @Mock private BatteryController mBatteryController; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; private final DockManagerFake mDockManager = new DockManagerFake(); private final FakeSystemClock mFakeSystemClock = new FakeSystemClock(); private final FakeExecutor mFakeExecutor = new FakeExecutor(mFakeSystemClock); @@ -90,7 +93,7 @@ public class FalsingCollectorImplTest extends SysuiTestCase { mKeyguardUpdateMonitor, mHistoryTracker, mProximitySensor, mStatusBarStateController, mKeyguardStateController, mShadeExpansionStateManager, mBatteryController, - mDockManager, mFakeExecutor, mFakeSystemClock); + mDockManager, mFakeExecutor, mFakeSystemClock, () -> mSelectedUserInteractor); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java b/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java index 15e5e1c7b8db..80b281e458d0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java +++ b/packages/SystemUI/tests/src/com/android/systemui/colorextraction/SysuiColorExtractorTests.java @@ -37,6 +37,7 @@ import com.android.internal.colorextraction.types.Tonal; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import org.junit.Before; import org.junit.Test; @@ -63,6 +64,8 @@ public class SysuiColorExtractorTests extends SysuiTestCase { private WallpaperManager mWallpaperManager; @Mock private DumpManager mDumpManager; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; private ColorExtractor.GradientColors mColors; private SysuiColorExtractor mColorExtractor; @@ -83,7 +86,8 @@ public class SysuiColorExtractorTests extends SysuiTestCase { mock(ConfigurationController.class), mWallpaperManager, mDumpManager, - true /* immediately */); + true /* immediately */, + () -> mSelectedUserInteractor); } @Test @@ -125,7 +129,8 @@ public class SysuiColorExtractorTests extends SysuiTestCase { configurationController, mWallpaperManager, mDumpManager, - true /* immediately */); + true /* immediately */, + () -> mSelectedUserInteractor); verify(configurationController).addCallback(eq(sysuiColorExtractor)); reset(tonal); diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java index 7e1edd2ac193..ba578a39b558 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java @@ -51,6 +51,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.UdfpsController; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.wakelock.WakeLockFake; import com.android.systemui.utils.os.FakeHandler; @@ -85,6 +86,8 @@ public class DozeScreenStateTest extends SysuiTestCase { private DozeLog mDozeLog; @Mock private DozeScreenBrightness mDozeScreenBrightness; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; @Before public void setUp() throws Exception { @@ -100,7 +103,7 @@ public class DozeScreenStateTest extends SysuiTestCase { mWakeLock = new WakeLockFake(); mScreen = new DozeScreenState(mServiceFake, mHandlerFake, mDozeHost, mDozeParameters, mWakeLock, mAuthController, mUdfpsControllerProvider, mDozeLog, - mDozeScreenBrightness); + mDozeScreenBrightness, mSelectedUserInteractor); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java index a88a8e590e76..3cc04511d57b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java @@ -52,9 +52,9 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.biometrics.AuthController; import com.android.systemui.doze.DozeSensors.TriggerSensor; import com.android.systemui.plugins.SensorManagerPlugin; -import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.sensors.AsyncSensorManager; import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.settings.FakeSettings; @@ -102,7 +102,7 @@ public class DozeSensorsTest extends SysuiTestCase { @Mock private DevicePostureController mDevicePostureController; @Mock - private UserTracker mUserTracker; + private SelectedUserInteractor mSelectedUserInteractor; @Mock private ProximitySensor mProximitySensor; @@ -122,7 +122,8 @@ public class DozeSensorsTest extends SysuiTestCase { public void setUp() { MockitoAnnotations.initMocks(this); mTestableLooper = TestableLooper.get(this); - when(mUserTracker.getUserId()).thenReturn(ActivityManager.getCurrentUser()); + when(mSelectedUserInteractor.getSelectedUserId()) + .thenReturn(ActivityManager.getCurrentUser()); when(mAmbientDisplayConfiguration.tapSensorTypeMapping()) .thenReturn(new String[]{"tapSensor"}); when(mAmbientDisplayConfiguration.getWakeLockScreenDebounce()).thenReturn(5000L); @@ -435,7 +436,7 @@ public class DozeSensorsTest extends SysuiTestCase { DozeSensors dozeSensors = new DozeSensors(mResources, mSensorManager, mDozeParameters, mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog, mProximitySensor, mFakeSettings, mAuthController, - mDevicePostureController, mUserTracker); + mDevicePostureController, mSelectedUserInteractor); for (TriggerSensor sensor : dozeSensors.mTriggerSensors) { assertFalse(sensor.mIgnoresSetting); @@ -480,7 +481,7 @@ public class DozeSensorsTest extends SysuiTestCase { DozeSensors dozeSensors = new DozeSensors(mResources, mSensorManager, mDozeParameters, mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog, mProximitySensor, mFakeSettings, mAuthController, - mDevicePostureController, mUserTracker); + mDevicePostureController, mSelectedUserInteractor); for (TriggerSensor sensor : dozeSensors.mTriggerSensors) { // THEN lift to wake's TriggerSensor enabledBySettings is false @@ -499,7 +500,7 @@ public class DozeSensorsTest extends SysuiTestCase { DozeSensors dozeSensors = new DozeSensors(mResources, mSensorManager, mDozeParameters, mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog, mProximitySensor, mFakeSettings, mAuthController, - mDevicePostureController, mUserTracker); + mDevicePostureController, mSelectedUserInteractor); for (TriggerSensor sensor : dozeSensors.mTriggerSensors) { // THEN lift to wake's TriggerSensor enabledBySettings is true @@ -514,7 +515,7 @@ public class DozeSensorsTest extends SysuiTestCase { super(mResources, mSensorManager, mDozeParameters, mAmbientDisplayConfiguration, mWakeLock, mCallback, mProxCallback, mDozeLog, mProximitySensor, mFakeSettings, mAuthController, - mDevicePostureController, mUserTracker); + mDevicePostureController, mSelectedUserInteractor); for (TriggerSensor sensor : mTriggerSensors) { if (sensor instanceof PluginSensor && ((PluginSensor) sensor).mPluginSensor.getType() diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java index 494e230947b3..3a6b07539a43 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java @@ -53,6 +53,7 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeThreadFactory; import com.android.systemui.util.sensors.AsyncSensorManager; @@ -101,6 +102,8 @@ public class DozeTriggersTest extends SysuiTestCase { @Mock private UserTracker mUserTracker; @Mock + private SelectedUserInteractor mSelectedUserInteractor; + @Mock private SessionTracker mSessionTracker; private DozeTriggers mTriggers; @@ -134,7 +137,7 @@ public class DozeTriggersTest extends SysuiTestCase { asyncSensorManager, wakeLock, mDockManager, mProximitySensor, mProximityCheck, mDozeLog, mBroadcastDispatcher, new FakeSettings(), mAuthController, mUiEventLogger, mSessionTracker, mKeyguardStateController, - mDevicePostureController, mUserTracker); + mDevicePostureController, mUserTracker, mSelectedUserInteractor); mTriggers.setDozeMachine(mMachine); waitForSensorManager(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java index 2d3f69d95204..00009f778ac7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java @@ -76,6 +76,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.telephony.TelephonyListenerManager; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.RingerModeLiveData; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.settings.FakeGlobalSettings; @@ -134,6 +135,7 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase { @Mock private ShadeController mShadeController; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Mock private DialogLaunchAnimator mDialogLaunchAnimator; + @Mock private SelectedUserInteractor mSelectedUserInteractor; @Mock private OnBackInvokedDispatcher mOnBackInvokedDispatcher; @Captor private ArgumentCaptor<OnBackInvokedCallback> mOnBackInvokedCallback; @@ -186,12 +188,14 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase { mPackageManager, mShadeController, mKeyguardUpdateMonitor, - mDialogLaunchAnimator); + mDialogLaunchAnimator, + mSelectedUserInteractor); mGlobalActionsDialogLite.setZeroDialogPressDelayForTesting(); ColorExtractor.GradientColors backdropColors = new ColorExtractor.GradientColors(); backdropColors.setMainColor(Color.BLACK); when(mColorExtractor.getNeutralColors()).thenReturn(backdropColors); + when(mSelectedUserInteractor.getSelectedUserId()).thenReturn(0); } @Test @@ -568,7 +572,8 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase { @Test public void testOnLockScreen_disableSmartLock() { mGlobalActionsDialogLite = spy(mGlobalActionsDialogLite); - int user = KeyguardUpdateMonitor.getCurrentUser(); + int expectedUser = 100; + doReturn(expectedUser).when(mSelectedUserInteractor).getSelectedUserId(); doReturn(4).when(mGlobalActionsDialogLite).getMaxShownPowerItems(); doReturn(true).when(mGlobalActionsDialogLite).shouldDisplayLockdown(any()); doReturn(true).when(mGlobalActionsDialogLite).shouldShowAction(any()); @@ -586,7 +591,7 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase { mGlobalActionsDialogLite.showOrHideDialog(true, true, null /* view */); // Then smart lock will be disabled - verify(mLockPatternUtils).requireCredentialEntry(eq(user)); + verify(mLockPatternUtils).requireCredentialEntry(eq(expectedUser)); // hide dialog again mGlobalActionsDialogLite.showOrHideDialog(true, true, null /* view */); diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java index a6468234b9b6..26c6a72aab25 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java @@ -117,6 +117,7 @@ import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.UserSwitcherController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxyFake; import com.android.systemui.util.concurrency.FakeExecutor; @@ -187,6 +188,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock ShadeExpansionStateManager mShadeExpansionStateManager; private @Mock ShadeInteractor mShadeInteractor; private @Mock ShadeWindowLogger mShadeWindowLogger; + private @Mock SelectedUserInteractor mSelectedUserInteractor; private @Captor ArgumentCaptor<KeyguardStateController.Callback> mKeyguardStateControllerCallback; private @Captor ArgumentCaptor<KeyguardUpdateMonitorCallback> @@ -251,7 +253,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { mAuthController, mShadeExpansionStateManager, () -> mShadeInteractor, - mShadeWindowLogger); + mShadeWindowLogger, + () -> mSelectedUserInteractor); mFeatureFlags = new FakeFeatureFlags(); mFeatureFlags.set(Flags.KEYGUARD_WM_STATE_REFACTOR, false); diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt index 5bd747fc86e4..8e81185d6dcf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorTest.kt @@ -24,6 +24,8 @@ import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.power.domain.interactor.PowerInteractorFactory +import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.mock import dagger.Lazy import junit.framework.Assert.assertEquals @@ -42,6 +44,8 @@ import org.junit.runner.RunWith class FromPrimaryBouncerTransitionInteractorTest : KeyguardTransitionInteractorTestCase() { private lateinit var underTest: FromPrimaryBouncerTransitionInteractor + private val mSelectedUserInteractor = SelectedUserInteractor(FakeUserRepository()) + // Override the fromPrimaryBouncerTransitionInteractor provider from the superclass so our // underTest interactor is provided to any classes that need it. override var fromPrimaryBouncerTransitionInteractorLazy: @@ -63,6 +67,7 @@ class FromPrimaryBouncerTransitionInteractorTest : KeyguardTransitionInteractorT flags = FakeFeatureFlags(), keyguardSecurityModel = mock(), powerInteractor = PowerInteractorFactory.create().powerInteractor, + selectedUserInteractor = mSelectedUserInteractor ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardFaceAuthInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardFaceAuthInteractorTest.kt index 6ad2d731f375..e45f56a44b67 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardFaceAuthInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardFaceAuthInteractorTest.kt @@ -62,6 +62,7 @@ import com.android.systemui.power.shared.model.WakeSleepReason import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.user.data.model.SelectionStatus import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.whenever import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat @@ -99,6 +100,7 @@ class KeyguardFaceAuthInteractorTest : SysuiTestCase() { @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor @Mock private lateinit var faceWakeUpTriggersConfig: FaceWakeUpTriggersConfig + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Before fun setup() { @@ -145,6 +147,7 @@ class KeyguardFaceAuthInteractorTest : SysuiTestCase() { keyguardUpdateMonitor, FakeTrustRepository(), testScope.backgroundScope, + mSelectedUserInteractor, ), AlternateBouncerInteractor( mock(StatusBarStateController::class.java), diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt index 5d5ece0f8dcb..f3930a37c486 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt @@ -42,6 +42,7 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se import com.android.systemui.power.domain.interactor.PowerInteractorFactory import com.android.systemui.shade.data.repository.FakeShadeRepository import com.android.systemui.shade.domain.model.ShadeModel +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.whenever import com.android.systemui.util.mockito.withArgCaptor @@ -86,6 +87,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() { // Used to verify transition requests for test output @Mock private lateinit var keyguardSecurityModel: KeyguardSecurityModel + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor private lateinit var fromLockscreenTransitionInteractor: FromLockscreenTransitionInteractor private lateinit var fromDreamingTransitionInteractor: FromDreamingTransitionInteractor @@ -158,6 +160,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() { flags = featureFlags, keyguardSecurityModel = keyguardSecurityModel, powerInteractor = powerInteractor, + selectedUserInteractor = mSelectedUserInteractor, ) .apply { start() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt index 02c98cd9a787..f9362a773fc5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt @@ -46,6 +46,7 @@ import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.ActivityStarter.OnDismissAction import com.android.systemui.power.data.repository.FakePowerRepository import com.android.systemui.power.domain.interactor.PowerInteractor +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever @@ -90,6 +91,7 @@ class OccludingAppDeviceEntryInteractorTest : SysuiTestCase() { @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor @Mock private lateinit var mockedContext: Context @Mock private lateinit var activityStarter: ActivityStarter + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Before fun setup() { @@ -145,6 +147,7 @@ class OccludingAppDeviceEntryInteractorTest : SysuiTestCase() { keyguardUpdateMonitor, trustRepository, testScope.backgroundScope, + mSelectedUserInteractor ), AlternateBouncerInteractor( statusBarStateController = mock(), diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt index 9b1f8303f1ec..0e6e4fa659da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/footer/ui/viewmodel/FooterActionsViewModelTest.kt @@ -36,7 +36,6 @@ import com.android.systemui.qs.footer.FooterActionsTestUtils import com.android.systemui.qs.footer.domain.model.SecurityButtonConfig import com.android.systemui.res.R import com.android.systemui.security.data.model.SecurityModel -import com.android.systemui.settings.FakeUserTracker import com.android.systemui.statusbar.policy.FakeSecurityController import com.android.systemui.statusbar.policy.FakeUserInfoController import com.android.systemui.statusbar.policy.FakeUserInfoController.FakeInfo @@ -130,7 +129,6 @@ class FooterActionsViewModelTest : SysuiTestCase() { val userInfoController = FakeUserInfoController(FakeInfo(picture = picture)) val settings = FakeGlobalSettings() val userId = 42 - val userTracker = FakeUserTracker(userId) val userSwitcherControllerWrapper = MockUserSwitcherControllerWrapper(currentUserName = "foo") @@ -148,7 +146,6 @@ class FooterActionsViewModelTest : SysuiTestCase() { utils.footerActionsInteractor( userSwitcherRepository = utils.userSwitcherRepository( - userTracker = userTracker, settings = settings, userManager = userManager, userInfoController = userInfoController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java index 05da80032059..be82bc314277 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java @@ -90,6 +90,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController; import com.android.systemui.statusbar.policy.data.repository.FakeDeviceProvisioningRepository; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.user.domain.interactor.UserSwitcherInteractor; import com.google.common.util.concurrent.MoreExecutors; @@ -131,6 +132,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private AuthController mAuthController; @Mock private ShadeExpansionStateManager mShadeExpansionStateManager; @Mock private ShadeWindowLogger mShadeWindowLogger; + @Mock private SelectedUserInteractor mSelectedUserInteractor; @Captor private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters; @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mStateListener; private final Executor mBackgroundExecutor = MoreExecutors.directExecutor(); @@ -216,6 +218,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { keyguardInteractor, featureFlags, mKeyguardSecurityModel, + mSelectedUserInteractor, powerInteractor); mShadeInteractor = @@ -255,7 +258,8 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { mAuthController, mShadeExpansionStateManager, () -> mShadeInteractor, - mShadeWindowLogger) { + mShadeWindowLogger, + () -> mSelectedUserInteractor) { @Override protected boolean isDebuggable() { return false; diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt index 677d9db0b97c..4f3216da7370 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt @@ -81,6 +81,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.window.StatusBarWindowStateController import com.android.systemui.unfold.UnfoldTransitionProgressProvider import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat @@ -142,6 +143,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { Optional<UnfoldTransitionProgressProvider> @Mock lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor @Mock lateinit var dragDownHelper: DragDownHelper + @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock lateinit var primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel @Mock lateinit var sysUIKeyEventHandler: SysUIKeyEventHandler @@ -200,8 +202,6 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { centralSurfaces, dozeServiceHost, dozeScrimController, - backActionInteractor, - powerInteractor, notificationShadeWindowController, unfoldTransitionProgressProvider, keyguardUnlockAnimationController, @@ -243,6 +243,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { mock(KeyguardUpdateMonitor::class.java), FakeTrustRepository(), testScope.backgroundScope, + mSelectedUserInteractor, ), facePropertyRepository = FakeFacePropertyRepository(), deviceEntryFingerprintAuthRepository = @@ -254,6 +255,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { sysUIKeyEventHandler, primaryBouncerInteractor, alternateBouncerInteractor, + mSelectedUserInteractor, ) underTest.setupExpandedStatusBar() underTest.setDragDownHelper(dragDownHelper) diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt index a4a2ca0a6a21..4d3eab45d001 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.kt @@ -79,6 +79,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.window.StatusBarWindowStateController import com.android.systemui.unfold.UnfoldTransitionProgressProvider import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever @@ -144,6 +145,7 @@ class NotificationShadeWindowViewTest : SysuiTestCase() { @Mock private lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor @Mock lateinit var primaryBouncerInteractor: PrimaryBouncerInteractor @Mock lateinit var alternateBouncerInteractor: AlternateBouncerInteractor + @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel @@ -202,8 +204,6 @@ class NotificationShadeWindowViewTest : SysuiTestCase() { centralSurfaces, dozeServiceHost, dozeScrimController, - backActionInteractor, - powerInteractor, notificationShadeWindowController, unfoldTransitionProgressProvider, keyguardUnlockAnimationController, @@ -245,6 +245,7 @@ class NotificationShadeWindowViewTest : SysuiTestCase() { Mockito.mock(KeyguardUpdateMonitor::class.java), FakeTrustRepository(), testScope.backgroundScope, + mSelectedUserInteractor, ), facePropertyRepository = FakeFacePropertyRepository(), deviceEntryFingerprintAuthRepository = @@ -256,6 +257,7 @@ class NotificationShadeWindowViewTest : SysuiTestCase() { Mockito.mock(SysUIKeyEventHandler::class.java), primaryBouncerInteractor, alternateBouncerInteractor, + mSelectedUserInteractor, ) controller.setupExpandedStatusBar() diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java index dd81807faf75..0fcfaf960737 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java @@ -95,6 +95,7 @@ import com.android.systemui.statusbar.policy.CastController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController; import com.android.systemui.statusbar.policy.data.repository.FakeDeviceProvisioningRepository; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.user.domain.interactor.UserSwitcherInteractor; import com.android.systemui.util.kotlin.JavaAdapter; @@ -164,6 +165,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase { @Mock protected UiEventLogger mUiEventLogger; @Mock protected CastController mCastController; @Mock protected UserSwitcherInteractor mUserSwitcherInteractor; + @Mock protected SelectedUserInteractor mSelectedUserInteractor; protected FakeDisableFlagsRepository mDisableFlagsRepository = new FakeDisableFlagsRepository(); protected FakeKeyguardRepository mKeyguardRepository = new FakeKeyguardRepository(); @@ -250,6 +252,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase { keyguardInteractor, featureFlags, mock(KeyguardSecurityModel.class), + mSelectedUserInteractor, powerInteractor); ResourcesSplitShadeStateController splitShadeStateController = diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt index 27be4c802aec..df547ae5883e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/SensitiveContentCoordinatorTest.kt @@ -33,6 +33,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.OnBefo import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock @@ -53,6 +54,7 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { val keyguardUpdateMonitor: KeyguardUpdateMonitor = mock() val statusBarStateController: StatusBarStateController = mock() val keyguardStateController: KeyguardStateController = mock() + val mSelectedUserInteractor: SelectedUserInteractor = mock() val coordinator: SensitiveContentCoordinator = DaggerTestSensitiveContentCoordinatorComponent @@ -62,7 +64,8 @@ class SensitiveContentCoordinatorTest : SysuiTestCase() { lockscreenUserManager, keyguardUpdateMonitor, statusBarStateController, - keyguardStateController) + keyguardStateController, + mSelectedUserInteractor) .coordinator @Test @@ -263,7 +266,8 @@ interface TestSensitiveContentCoordinatorComponent { @BindsInstance lockscreenUserManager: NotificationLockscreenUserManager, @BindsInstance keyguardUpdateMonitor: KeyguardUpdateMonitor, @BindsInstance statusBarStateController: StatusBarStateController, - @BindsInstance keyguardStateController: KeyguardStateController + @BindsInstance keyguardStateController: KeyguardStateController, + @BindsInstance selectedUserInteractor: SelectedUserInteractor, ): TestSensitiveContentCoordinatorComponent } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java index 8344cd143c5d..eacc087a9779 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java @@ -52,7 +52,6 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceEntryHapticsInte import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.keyguard.KeyguardViewMediator; -import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.log.SessionTracker; import com.android.systemui.plugins.statusbar.StatusBarStateController; @@ -60,6 +59,7 @@ import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.util.time.FakeSystemClock; import org.junit.Before; @@ -109,8 +109,6 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { @Mock private WakefulnessLifecycle mWakefulnessLifecycle; @Mock - private ScreenLifecycle mScreenLifecycle; - @Mock private StatusBarStateController mStatusBarStateController; @Mock private SessionTracker mSessionTracker; @@ -126,6 +124,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { private ViewRootImpl mViewRootImpl; @Mock private DeviceEntryHapticsInteractor mDeviceEntryHapticsInteractor; + @Mock + private SelectedUserInteractor mSelectedUserInteractor; private final FakeSystemClock mSystemClock = new FakeSystemClock(); private FakeFeatureFlags mFeatureFlags; private BiometricUnlockController mBiometricUnlockController; @@ -163,7 +163,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { mSessionTracker, mLatencyTracker, mScreenOffAnimationController, mVibratorHelper, mSystemClock, mFeatureFlags, - mDeviceEntryHapticsInteractor + mDeviceEntryHapticsInteractor, + () -> mSelectedUserInteractor ); biometricUnlockController.setKeyguardViewController(mStatusBarKeyguardViewManager); biometricUnlockController.addListener(mBiometricUnlockEventsListener); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index 45e9224aa253..46b3996c4337 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -93,6 +93,7 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.unfold.SysUIUnfoldComponent; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.google.common.truth.Truth; @@ -147,6 +148,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { @Mock private WindowInsetsController mWindowInsetsController; @Mock private TaskbarDelegate mTaskbarDelegate; @Mock private StatusBarKeyguardViewManager.KeyguardViewManagerCallback mCallback; + @Mock private SelectedUserInteractor mSelectedUserInteractor; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private PrimaryBouncerCallbackInteractor.PrimaryBouncerExpansionCallback @@ -212,7 +214,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { mock(KeyguardTransitionInteractor.class), StandardTestDispatcher(null, null), () -> mock(WindowManagerLockscreenVisibilityInteractor.class), - () -> mock(KeyguardDismissActionInteractor.class)) { + () -> mock(KeyguardDismissActionInteractor.class), + mSelectedUserInteractor) { @Override public ViewRootImpl getViewRootImpl() { return mViewRootImpl; @@ -715,7 +718,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { mock(KeyguardTransitionInteractor.class), StandardTestDispatcher(null, null), () -> mock(WindowManagerLockscreenVisibilityInteractor.class), - () -> mock(KeyguardDismissActionInteractor.class)) { + () -> mock(KeyguardDismissActionInteractor.class), + mSelectedUserInteractor) { @Override public ViewRootImpl getViewRootImpl() { return mViewRootImpl; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java index cae892fc2213..a1c76c4159c6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/KeyguardStateControllerTest.java @@ -38,6 +38,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import dagger.Lazy; @@ -67,6 +68,8 @@ public class KeyguardStateControllerTest extends SysuiTestCase { @Mock private Lazy<KeyguardUnlockAnimationController> mKeyguardUnlockAnimationControllerLazy; @Mock + private Lazy<SelectedUserInteractor> mUserInteractorLazy; + @Mock private KeyguardUpdateMonitorLogger mLogger; @Mock private FeatureFlags mFeatureFlags; @@ -84,7 +87,8 @@ public class KeyguardStateControllerTest extends SysuiTestCase { mKeyguardUnlockAnimationControllerLazy, mLogger, mDumpManager, - mFeatureFlags); + mFeatureFlags, + mUserInteractorLazy); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index c8d1334b2be8..a42fa4129a5f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -156,6 +156,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.data.repository.FakeDeviceProvisioningRepository; +import com.android.systemui.user.domain.interactor.SelectedUserInteractor; import com.android.systemui.user.domain.interactor.UserSwitcherInteractor; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.WindowManagerShellWrapper; @@ -324,6 +325,8 @@ public class BubblesTest extends SysuiTestCase { @Mock private ShadeWindowLogger mShadeWindowLogger; @Mock + private SelectedUserInteractor mSelectedUserInteractor; + @Mock private NotifPipelineFlags mNotifPipelineFlags; @Mock private Icon mAppBubbleIcon; @@ -433,6 +436,7 @@ public class BubblesTest extends SysuiTestCase { keyguardInteractor, featureFlags, mock(KeyguardSecurityModel.class), + mSelectedUserInteractor, powerInteractor); ResourcesSplitShadeStateController splitShadeStateController = @@ -476,7 +480,8 @@ public class BubblesTest extends SysuiTestCase { mAuthController, mShadeExpansionStateManager, () -> mShadeInteractor, - mShadeWindowLogger + mShadeWindowLogger, + () -> mSelectedUserInteractor ); mNotificationShadeWindowController.fetchWindowRootView(); mNotificationShadeWindowController.attach(); diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt index 7cac01925b12..233c9988f1d8 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt @@ -78,6 +78,7 @@ object KeyguardDismissInteractorFactory { keyguardUpdateMonitor, trustRepository, testScope.backgroundScope, + mock(SelectedUserInteractor::class.java), ) val alternateBouncerInteractor = AlternateBouncerInteractor( diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/footer/FooterActionsTestUtils.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/footer/FooterActionsTestUtils.kt index 7a99bd0d54cf..cddb007222d5 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/footer/FooterActionsTestUtils.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/footer/FooterActionsTestUtils.kt @@ -41,14 +41,14 @@ import com.android.systemui.qs.footer.domain.interactor.FooterActionsInteractorI import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel import com.android.systemui.security.data.repository.SecurityRepository import com.android.systemui.security.data.repository.SecurityRepositoryImpl -import com.android.systemui.settings.FakeUserTracker -import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.systemui.statusbar.policy.FakeSecurityController import com.android.systemui.statusbar.policy.FakeUserInfoController import com.android.systemui.statusbar.policy.SecurityController import com.android.systemui.statusbar.policy.UserInfoController import com.android.systemui.statusbar.policy.UserSwitcherController +import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.user.data.repository.UserRepository import com.android.systemui.user.data.repository.UserSwitcherRepository import com.android.systemui.user.data.repository.UserSwitcherRepositoryImpl import com.android.systemui.user.domain.interactor.UserSwitcherInteractor @@ -149,7 +149,7 @@ class FooterActionsTestUtils( bgHandler: Handler = Handler(testableLooper.looper), bgDispatcher: CoroutineDispatcher = StandardTestDispatcher(scheduler), userManager: UserManager = mock(), - userTracker: UserTracker = FakeUserTracker(), + userRepository: UserRepository = FakeUserRepository(), userSwitcherController: UserSwitcherController = mock(), userInfoController: UserInfoController = FakeUserInfoController(), settings: GlobalSettings = FakeGlobalSettings(), @@ -159,10 +159,10 @@ class FooterActionsTestUtils( bgHandler, bgDispatcher, userManager, - userTracker, userSwitcherController, userInfoController, settings, + userRepository, ) } } |