Fix stealth mode for managed profiles

Stealth mode should not use effectiveUserId. Instead, it needs to use
the original userId.

Secondly, the pattern view should be setting stealth mode only after
the configuration is received (e.g. onFinishInflate is too early, and
the params are not passed in from its owner yet).

Fixes: 148382970

Test: 1) Make pattern visible for managed profile
      2) Reboot device
      3) Open work profile app - pattern is shown when entered
      4) Enter pattern
      5) Lock screen, unlock screen
      6) Open work profile app - pattern is shown when entered
      7) Repeat 1-6 with pattern set to not be visible. pattern should not
         be shown during 3) and 6)

Change-Id: I3e81cd31484fb0b7a99d554c3c274e8088df5ec7
This commit is contained in:
Kevin Chyn
2020-02-20 16:45:59 -08:00
parent e49a32946f
commit bc3347fa1e
4 changed files with 10 additions and 4 deletions

View File

@@ -340,6 +340,7 @@ public class AuthContainerView extends LinearLayout
mBackgroundView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
mCredentialView.setContainerView(this);
mCredentialView.setUserId(mConfig.mUserId);
mCredentialView.setEffectiveUserId(mEffectiveUserId);
mCredentialView.setCredentialType(credentialType);
mCredentialView.setCallback(mCredentialCallback);

View File

@@ -376,7 +376,7 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
}
if (DEBUG) {
Log.d(TAG, "showDialog: " + args
Log.d(TAG, "userId: " + userId
+ " savedState: " + savedState
+ " mCurrentDialog: " + mCurrentDialog
+ " newDialog: " + newDialog

View File

@@ -95,12 +95,12 @@ public class AuthCredentialPatternView extends AuthCredentialView {
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mLockPatternView = findViewById(R.id.lockPattern);
mLockPatternView.setOnPatternListener(new UnlockPatternListener());
mLockPatternView.setInStealthMode(
!mLockPatternUtils.isVisiblePatternEnabled(mEffectiveUserId));
!mLockPatternUtils.isVisiblePatternEnabled(mUserId));
mLockPatternView.setTactileFeedbackEnabled(mLockPatternUtils.isTactileFeedbackEnabled());
}
}

View File

@@ -69,6 +69,7 @@ public abstract class AuthCredentialView extends LinearLayout {
protected AuthContainerView mContainerView;
protected Callback mCallback;
protected AsyncTask<?, ?, ?> mPendingLockCheck;
protected int mUserId;
protected int mEffectiveUserId;
protected ErrorTimer mErrorTimer;
@@ -143,6 +144,10 @@ public abstract class AuthCredentialView extends LinearLayout {
view.setText(text);
}
void setUserId(int userId) {
mUserId = userId;
}
void setEffectiveUserId(int effectiveUserId) {
mEffectiveUserId = effectiveUserId;
}