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

Commit c7092933 authored by Chandru S's avatar Chandru S
Browse files

Merge "Change KeyguardIndicationController to use UserTracker instead of...

Merge "Change KeyguardIndicationController to use UserTracker instead of KeyguardUpdateMonitor to get the current user id." into udc-dev am: 03f1bb50

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22102523


Bug: 274639907

Change-Id: I63f0f5550f70a986d66c5822440db4356ee84574
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parent 78c64553
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -480,6 +480,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        sCurrentUser = currentUser;
    }

    /**
     * @deprecated This can potentially return unexpected values in a multi user scenario
     * as this state is managed by another component. Consider using {@link UserTracker}.
     */
    @Deprecated
    public synchronized static int getCurrentUser() {
        return sCurrentUser;
    }
+11 −5
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import static android.view.View.VISIBLE;
import static com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_HELP_FACE_NOT_AVAILABLE;
import static com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_HELP_FACE_NOT_RECOGNIZED;
import static com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED;
import static com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser;
import static com.android.systemui.DejankUtils.whitelistIpcs;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.IMPORTANT_MSG_MIN_DURATION;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_ALIGNMENT;
@@ -99,6 +98,7 @@ import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteracto
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.log.LogLevel;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardIndicationTextView;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
@@ -146,6 +146,7 @@ public class KeyguardIndicationController {
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final AuthController mAuthController;
    private final KeyguardLogger mKeyguardLogger;
    private final UserTracker mUserTracker;
    private ViewGroup mIndicationArea;
    private KeyguardIndicationTextView mTopIndicationView;
    private KeyguardIndicationTextView mLockScreenIndicationView;
@@ -251,7 +252,8 @@ public class KeyguardIndicationController {
            FaceHelpMessageDeferral faceHelpMessageDeferral,
            KeyguardLogger keyguardLogger,
            AlternateBouncerInteractor alternateBouncerInteractor,
            AlarmManager alarmManager
            AlarmManager alarmManager,
            UserTracker userTracker
    ) {
        mContext = context;
        mBroadcastDispatcher = broadcastDispatcher;
@@ -275,6 +277,7 @@ public class KeyguardIndicationController {
        mKeyguardLogger = keyguardLogger;
        mScreenLifecycle.addObserver(mScreenObserver);
        mAlternateBouncerInteractor = alternateBouncerInteractor;
        mUserTracker = userTracker;

        mFaceAcquiredMessageDeferral = faceHelpMessageDeferral;
        mCoExFaceAcquisitionMsgIdsToShow = new HashSet<>();
@@ -475,6 +478,10 @@ public class KeyguardIndicationController {
        }
    }

    private int getCurrentUser() {
        return mUserTracker.getUserId();
    }

    private void updateLockScreenOwnerInfo() {
        // Check device owner info on a bg thread.
        // It makes multiple IPCs that could block the thread it's run on.
@@ -1166,8 +1173,7 @@ public class KeyguardIndicationController {
                            mContext.getString(R.string.keyguard_unlock)
                    );
                } else if (fpAuthFailed
                        && mKeyguardUpdateMonitor.getUserHasTrust(
                                KeyguardUpdateMonitor.getCurrentUser())) {
                        && mKeyguardUpdateMonitor.getUserHasTrust(getCurrentUser())) {
                    showBiometricMessage(
                            getTrustGrantedIndication(),
                            mContext.getString(R.string.keyguard_unlock)
@@ -1421,7 +1427,7 @@ public class KeyguardIndicationController {

    private boolean canUnlockWithFingerprint() {
        return mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                KeyguardUpdateMonitor.getCurrentUser());
                getCurrentUser());
    }

    private void showErrorMessageNowOrLater(String errString, @Nullable String followUpMsg) {
+27 −17
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.KeyguardIndicationTextView;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
@@ -188,6 +189,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    private AuthController mAuthController;
    @Mock
    private AlarmManager mAlarmManager;
    @Mock
    private UserTracker mUserTracker;
    @Captor
    private ArgumentCaptor<DockManager.AlignmentStateListener> mAlignmentListener;
    @Captor
@@ -209,6 +212,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    private BroadcastReceiver mBroadcastReceiver;
    private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
    private TestableLooper mTestableLooper;
    private final int mCurrentUserId = 1;

    private KeyguardIndicationTextView mTextView; // AOD text

@@ -260,6 +264,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
                .thenReturn(mDisclosureGeneric);
        when(mDevicePolicyResourcesManager.getString(anyString(), any(), anyString()))
                .thenReturn(mDisclosureWithOrganization);
        when(mUserTracker.getUserId()).thenReturn(mCurrentUserId);

        mWakeLock = new WakeLockFake();
        mWakeLockBuilder = new WakeLockFake.Builder(mContext);
@@ -291,7 +296,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
                mKeyguardBypassController, mAccessibilityManager,
                mFaceHelpMessageDeferral, mock(KeyguardLogger.class),
                mAlternateBouncerInteractor,
                mAlarmManager
                mAlarmManager,
                mUserTracker
        );
        mController.init();
        mController.setIndicationArea(mIndicationArea);
@@ -813,7 +819,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void faceErrorTimeout_whenFingerprintEnrolled_doesNotShowMessage() {
        createController();
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(true);
                getCurrentUser())).thenReturn(true);
        String message = "A message";

        mController.setVisible(true);
@@ -828,7 +834,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

        // GIVEN fingerprint enrolled
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(true);
                getCurrentUser())).thenReturn(true);

        // WHEN help messages received that are allowed to show
        final String helpString = "helpString";
@@ -855,7 +861,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

        // GIVEN fingerprint enrolled
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(true);
                getCurrentUser())).thenReturn(true);

        // WHEN help messages received that aren't supposed to show
        final String helpString = "helpString";
@@ -882,7 +888,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

        // GIVEN fingerprint NOT enrolled
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(false);
                getCurrentUser())).thenReturn(false);

        // WHEN help messages received
        final Set<CharSequence> helpStrings = new HashSet<>();
@@ -913,7 +919,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

        // GIVEN fingerprint NOT enrolled
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(false);
                getCurrentUser())).thenReturn(false);

        // WHEN help message received and deferred message is valid
        final String helpString = "helpMsg";
@@ -944,7 +950,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

        // GIVEN fingerprint enrolled
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(true);
                getCurrentUser())).thenReturn(true);

        // WHEN help message received and deferredMessage is valid
        final String helpString = "helpMsg";
@@ -1173,7 +1179,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

        // WHEN trust is granted
        when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true);
        mKeyguardUpdateMonitorCallback.onTrustChanged(KeyguardUpdateMonitor.getCurrentUser());
        mKeyguardUpdateMonitorCallback.onTrustChanged(getCurrentUser());

        // THEN verify the trust granted message shows
        verifyIndicationMessage(
@@ -1238,7 +1244,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void coEx_faceSuccess_showsPressToOpen() {
        // GIVEN bouncer isn't showing, can skip bouncer, udfps is supported, no a11y enabled
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(true);
        when(mAccessibilityManager.isEnabled()).thenReturn(false);
@@ -1262,7 +1268,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void coEx_faceSuccess_touchExplorationEnabled_showsFaceUnlockedSwipeToOpen() {
        // GIVEN bouncer isn't showing, can skip bouncer, udfps is supported, a11y enabled
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(true);
        when(mAccessibilityManager.isEnabled()).thenReturn(true);
@@ -1286,7 +1292,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void coEx_faceSuccess_a11yEnabled_showsFaceUnlockedSwipeToOpen() {
        // GIVEN bouncer isn't showing, can skip bouncer, udfps is supported, a11y is enabled
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(true);
        when(mAccessibilityManager.isEnabled()).thenReturn(true);
@@ -1309,7 +1315,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void faceOnly_faceSuccess_showsFaceUnlockedSwipeToOpen() {
        // GIVEN bouncer isn't showing, can skip bouncer, no udfps supported
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(false);
        createController();
@@ -1331,7 +1337,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void udfpsOnly_a11yEnabled_showsSwipeToOpen() {
        // GIVEN bouncer isn't showing, can skip bouncer, udfps is supported, a11y is enabled
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(true);
        when(mAccessibilityManager.isEnabled()).thenReturn(true);
@@ -1351,7 +1357,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void udfpsOnly_showsPressToOpen() {
        // GIVEN bouncer isn't showing, udfps is supported, a11y is NOT enabled, can skip bouncer
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(true);
        when(mAccessibilityManager.isEnabled()).thenReturn(false);
@@ -1372,7 +1378,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
        // GIVEN bouncer isn't showing, can skip bouncer, no security (udfps isn't supported,
        // face wasn't authenticated)
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(true);
        when(mKeyguardUpdateMonitor.isUdfpsSupported()).thenReturn(false);
        createController();
@@ -1390,7 +1396,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
    public void cannotSkipBouncer_showSwipeToUnlockHint() {
        // GIVEN bouncer isn't showing and cannot skip bouncer
        when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false);
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(KeyguardUpdateMonitor.getCurrentUser()))
        when(mKeyguardUpdateMonitor.getUserCanSkipBouncer(getCurrentUser()))
                .thenReturn(false);
        createController();
        mController.setVisible(true);
@@ -1746,10 +1752,14 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {

    private void setupFingerprintUnlockPossible(boolean possible) {
        when(mKeyguardUpdateMonitor
                .getCachedIsUnlockWithFingerprintPossible(KeyguardUpdateMonitor.getCurrentUser()))
                .getCachedIsUnlockWithFingerprintPossible(getCurrentUser()))
                .thenReturn(possible);
    }

    private int getCurrentUser() {
        return mCurrentUserId;
    }

    private void onFaceLockoutError(String errMsg) {
        mKeyguardUpdateMonitorCallback.onBiometricError(FACE_ERROR_LOCKOUT_PERMANENT,
                errMsg,