Merge "Update udfps states on enrollment changes" into sc-v2-dev am: 3379ab4158
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16222155 Change-Id: I3f073b3cbc5f7cfd2d8b24c6aa4ce72dce63ccad
This commit is contained in:
@@ -102,7 +102,6 @@ import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dagger.qualifiers.Background;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListeners;
|
||||
@@ -323,7 +322,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
private boolean mLockIconPressed;
|
||||
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
private final Executor mBackgroundExecutor;
|
||||
private int mLockScreenMode;
|
||||
|
||||
/**
|
||||
* Short delay before restarting fingerprint authentication after a successful try. This should
|
||||
@@ -1736,11 +1734,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
DumpManager dumpManager,
|
||||
RingerModeTracker ringerModeTracker,
|
||||
@Background Executor backgroundExecutor,
|
||||
@Main Executor mainExecutor,
|
||||
StatusBarStateController statusBarStateController,
|
||||
LockPatternUtils lockPatternUtils,
|
||||
AuthController authController,
|
||||
TelephonyListenerManager telephonyListenerManager,
|
||||
FeatureFlags featureFlags,
|
||||
InteractionJankMonitor interactionJankMonitor,
|
||||
LatencyTracker latencyTracker) {
|
||||
mContext = context;
|
||||
@@ -1966,6 +1964,17 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
mBiometricManager.registerEnabledOnKeyguardCallback(mBiometricEnabledCallback);
|
||||
}
|
||||
|
||||
// in case authenticators aren't registered yet at this point:
|
||||
mAuthController.addCallback(new AuthController.Callback() {
|
||||
@Override
|
||||
public void onAllAuthenticatorsRegistered() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnrollmentsChanged() {
|
||||
mainExecutor.execute(() -> updateBiometricListeningState());
|
||||
}
|
||||
});
|
||||
updateBiometricListeningState();
|
||||
if (mFpm != null) {
|
||||
mFpm.addLockoutResetCallback(mFingerprintLockoutResetCallback);
|
||||
@@ -2043,7 +2052,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
|
||||
/**
|
||||
* @return if udfps is available on this device. will return true even if the user hasn't
|
||||
* enrolled udfps.
|
||||
* enrolled udfps. This may be false if called before onAllAuthenticatorsRegistered.
|
||||
*/
|
||||
public boolean isUdfpsAvailable() {
|
||||
return mAuthController.getUdfpsProps() != null
|
||||
@@ -2092,7 +2101,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Add support for multiple fingerprint sensors, b/173730729
|
||||
updateUdfpsEnrolled(getCurrentUser());
|
||||
final boolean shouldListenForFingerprint = shouldListenForFingerprint(isUdfpsEnrolled());
|
||||
final boolean runningOrRestarting = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING
|
||||
|
||||
@@ -695,11 +695,20 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
||||
private final AuthController.Callback mAuthControllerCallback = new AuthController.Callback() {
|
||||
@Override
|
||||
public void onAllAuthenticatorsRegistered() {
|
||||
// must be called from the main thread since it may update the views
|
||||
mExecutor.execute(() -> {
|
||||
updateIsUdfpsEnrolled();
|
||||
updateConfiguration();
|
||||
});
|
||||
updateUdfpsConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnrollmentsChanged() {
|
||||
updateUdfpsConfig();
|
||||
}
|
||||
};
|
||||
|
||||
private void updateUdfpsConfig() {
|
||||
// must be called from the main thread since it may update the views
|
||||
mExecutor.execute(() -> {
|
||||
updateIsUdfpsEnrolled();
|
||||
updateConfiguration();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +142,10 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
|
||||
mUdfpsEnrolledForUser.put(userId, hasEnrollments);
|
||||
}
|
||||
}
|
||||
|
||||
for (Callback cb : mCallbacks) {
|
||||
cb.onEnrollmentsChanged();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -844,5 +848,11 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
|
||||
* registered before this call, this callback will never be triggered.
|
||||
*/
|
||||
void onAllAuthenticatorsRegistered();
|
||||
|
||||
/**
|
||||
* Called when UDFPS enrollments have changed. This is called after boot and on changes to
|
||||
* enrollment.
|
||||
*/
|
||||
void onEnrollmentsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,10 +292,16 @@ class AuthRippleController @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private val authControllerCallback = AuthController.Callback {
|
||||
updateSensorLocation()
|
||||
updateUdfpsDependentParams()
|
||||
}
|
||||
private val authControllerCallback =
|
||||
object : AuthController.Callback {
|
||||
override fun onAllAuthenticatorsRegistered() {
|
||||
updateSensorLocation()
|
||||
updateUdfpsDependentParams()
|
||||
}
|
||||
|
||||
override fun onEnrollmentsChanged() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateUdfpsDependentParams() {
|
||||
authController.udfpsProps?.let {
|
||||
|
||||
@@ -107,6 +107,11 @@ public class DozeScreenState implements DozeMachine.Part {
|
||||
public void onAllAuthenticatorsRegistered() {
|
||||
updateUdfpsController();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnrollmentsChanged() {
|
||||
updateUdfpsController();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,6 @@ import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.biometrics.AuthController;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
@@ -170,8 +169,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private TelephonyListenerManager mTelephonyListenerManager;
|
||||
@Mock
|
||||
private FeatureFlags mFeatureFlags;
|
||||
@Mock
|
||||
private InteractionJankMonitor mInteractionJankMonitor;
|
||||
@Mock
|
||||
private LatencyTracker mLatencyTracker;
|
||||
@@ -179,6 +176,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
private ArgumentCaptor<StatusBarStateController.StateListener> mStatusBarStateListenerCaptor;
|
||||
// Direct executor
|
||||
private Executor mBackgroundExecutor = Runnable::run;
|
||||
private Executor mMainExecutor = Runnable::run;
|
||||
private TestableLooper mTestableLooper;
|
||||
private TestableKeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private TestableContext mSpiedContext;
|
||||
@@ -881,6 +879,25 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
orderVerify.verify(callback).onRingerModeChanged(AudioManager.RINGER_MODE_VIBRATE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegisterAuthControllerCallback() {
|
||||
assertThat(mKeyguardUpdateMonitor.isUdfpsEnrolled()).isFalse();
|
||||
|
||||
// verify AuthController.Callback is added:
|
||||
ArgumentCaptor<AuthController.Callback> captor = ArgumentCaptor.forClass(
|
||||
AuthController.Callback.class);
|
||||
verify(mAuthController).addCallback(captor.capture());
|
||||
AuthController.Callback callback = captor.getValue();
|
||||
|
||||
// WHEN udfps is now enrolled
|
||||
when(mAuthController.isUdfpsEnrolled(anyInt())).thenReturn(true);
|
||||
callback.onEnrollmentsChanged();
|
||||
|
||||
// THEN isUdfspEnrolled is TRUE
|
||||
assertThat(mKeyguardUpdateMonitor.isUdfpsEnrolled()).isTrue();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testStartUdfpsServiceBeginsOnKeyguard() {
|
||||
// GIVEN
|
||||
@@ -1060,9 +1077,9 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
super(context,
|
||||
TestableLooper.get(KeyguardUpdateMonitorTest.this).getLooper(),
|
||||
mBroadcastDispatcher, mDumpManager,
|
||||
mRingerModeTracker, mBackgroundExecutor,
|
||||
mRingerModeTracker, mBackgroundExecutor, mMainExecutor,
|
||||
mStatusBarStateController, mLockPatternUtils,
|
||||
mAuthController, mTelephonyListenerManager, mFeatureFlags,
|
||||
mAuthController, mTelephonyListenerManager,
|
||||
mInteractionJankMonitor, mLatencyTracker);
|
||||
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user