Only show lock icon on devices using faceauth

Don't show on devices with faceauth + udfps enrolled

Test: manual, atest SystemUITests
Bug: 172050991
Change-Id: I2b0acfd5d07286c57e6da0637747ceacdcd73cc6
This commit is contained in:
Beverly
2020-12-17 10:26:13 -05:00
committed by Beverly Tai
parent 18b99c5260
commit a1616135cc
5 changed files with 22 additions and 15 deletions

View File

@@ -1900,6 +1900,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
mIsUdfpsEnrolled = mAuthController.isUdfpsEnrolled(userId);
}
/**
* Whether to show the lock icon on lock screen and bouncer. This depends on the enrolled
* biometrics to the device.
*/
public boolean shouldShowLockIcon() {
return isFaceAuthEnabledForUser(KeyguardUpdateMonitor.getCurrentUser())
&& !isUdfpsEnrolled();
}
/**
* @return true if there's at least one udfps enrolled
*/

View File

@@ -164,10 +164,10 @@ public class KeyguardClockPositionAlgorithm {
public void setup(int statusBarMinHeight, int maxShadeBottom, int notificationStackHeight,
float panelExpansion, int parentHeight, int keyguardStatusHeight, int clockPreferredY,
boolean hasCustomClock, boolean hasVisibleNotifs, float dark, float emptyDragAmount,
boolean bypassEnabled, int unlockedStackScrollerPadding, boolean udfpsEnrolled,
boolean bypassEnabled, int unlockedStackScrollerPadding, boolean showLockIcon,
float qsExpansion) {
mMinTopMargin = statusBarMinHeight + (udfpsEnrolled ? mContainerTopPaddingWithoutLockIcon :
mContainerTopPaddingWithLockIcon);
mMinTopMargin = statusBarMinHeight + (showLockIcon
? mContainerTopPaddingWithLockIcon : mContainerTopPaddingWithoutLockIcon);
mMaxShadeBottom = maxShadeBottom;
mNotificationStackHeight = notificationStackHeight;
mPanelExpansion = panelExpansion;

View File

@@ -501,7 +501,7 @@ public class LockscreenLockIconController {
if (mBlockUpdates && canBlockUpdates()) {
shouldUpdate = false;
}
if (shouldUpdate && mLockIcon != null) {
if (shouldUpdate && mLockIcon != null && mLockIcon.getVisibility() != GONE) {
mLockIcon.update(state,
mStatusBarStateController.isDozing(), mKeyguardJustShown);
}
@@ -549,16 +549,14 @@ public class LockscreenLockIconController {
return false;
}
if (mKeyguardUpdateMonitor.isUdfpsEnrolled()) {
boolean changed = mLockIcon.getVisibility() == GONE;
if (!mKeyguardUpdateMonitor.shouldShowLockIcon()) {
boolean changed = mLockIcon.getVisibility() != GONE;
mLockIcon.setVisibility(GONE);
return changed;
}
boolean onAodOrDocked = mStatusBarStateController.isDozing() || mDocked;
boolean invisible = onAodOrDocked || mWakeAndUnlockRunning || mShowingLaunchAffordance
|| (mKeyguardSecurityModel.getSecurityMode(KeyguardUpdateMonitor.getCurrentUser())
== KeyguardSecurityModel.SecurityMode.None);
boolean invisible = onAodOrDocked || mWakeAndUnlockRunning || mShowingLaunchAffordance;
boolean fingerprintOrBypass = mFingerprintUnlock
|| mKeyguardBypassController.getBypassEnabled();
if (fingerprintOrBypass && !mBouncerShowingScrimmed) {

View File

@@ -912,7 +912,8 @@ public class NotificationPanelViewController extends PanelViewController {
clockPreferredY, hasCustomClock(),
hasVisibleNotifications, mInterpolatedDarkAmount, mEmptyDragAmount,
bypassEnabled, getUnlockedStackScrollerPadding(),
mUpdateMonitor.isUdfpsEnrolled(), getQsExpansionFraction());
mUpdateMonitor.shouldShowLockIcon(),
getQsExpansionFraction());
mClockPositionAlgorithm.run(mClockPositionResult);
mKeyguardStatusViewController.updatePosition(
mClockPositionResult.clockX, mClockPositionResult.clockY,

View File

@@ -91,6 +91,7 @@ public class LockscreenIconControllerTest extends SysuiTestCase {
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mKeyguardUpdateMonitor.shouldShowLockIcon()).thenReturn(true);
when(mLockIcon.getContext()).thenReturn(mContext);
mLockIconController = new LockscreenLockIconController(
mLockscreenGestureLogger, mKeyguardUpdateMonitor, mLockPatternUtils,
@@ -145,12 +146,10 @@ public class LockscreenIconControllerTest extends SysuiTestCase {
}
@Test
public void testVisibility_noBouncer() {
// no security (ie: no lock screen OR swipe to unlock)
when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(
KeyguardSecurityModel.SecurityMode.None);
public void testVisibility_doNotShowLockIcon() {
when(mKeyguardUpdateMonitor.shouldShowLockIcon()).thenReturn(false);
mOnAttachStateChangeListener.onViewAttachedToWindow(mLockIcon);
verify(mLockIcon).updateIconVisibility(false);
verify(mLockIcon).setVisibility(View.GONE);
}
}