From bc3347fa1e2cd0bf30e7dbc6d30965cd139cc4a8 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Thu, 20 Feb 2020 16:45:59 -0800 Subject: [PATCH] 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 --- .../com/android/systemui/biometrics/AuthContainerView.java | 1 + .../src/com/android/systemui/biometrics/AuthController.java | 2 +- .../systemui/biometrics/AuthCredentialPatternView.java | 6 +++--- .../com/android/systemui/biometrics/AuthCredentialView.java | 5 +++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java index 8a492a83b3df7..12216eba672fa 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index 875619a71a181..f31263d29f68a 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPatternView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPatternView.java index 1cb532bf0e40e..03136a4b6c0f7 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPatternView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialPatternView.java @@ -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()); } } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java index 9de10406a8223..48c66215bdde9 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java @@ -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; }