Run fingerprint over occluding apps when featureFlag enabled
Bug: 283260970 Test: manual Test: KeyguardUpdateMonitorTest Change-Id: I27b939b92088e120c6191d869432f327847faf00
This commit is contained in:
@@ -155,6 +155,8 @@ import com.android.systemui.dagger.qualifiers.Background;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.dump.DumpsysTableLogger;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.flags.Flags;
|
||||
import com.android.systemui.keyguard.domain.interactor.FaceAuthenticationListener;
|
||||
import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor;
|
||||
import com.android.systemui.keyguard.shared.constants.TrustAgentUiEvent;
|
||||
@@ -379,6 +381,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
private final ActiveUnlockConfig mActiveUnlockConfig;
|
||||
private final IDreamManager mDreamManager;
|
||||
private final TelephonyManager mTelephonyManager;
|
||||
private final FeatureFlags mFeatureFlags;
|
||||
@Nullable
|
||||
private final FingerprintManager mFpm;
|
||||
@Nullable
|
||||
@@ -2285,7 +2288,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
@Nullable BiometricManager biometricManager,
|
||||
FaceWakeUpTriggersConfig faceWakeUpTriggersConfig,
|
||||
DevicePostureController devicePostureController,
|
||||
Optional<FingerprintInteractiveToAuthProvider> interactiveToAuthProvider) {
|
||||
Optional<FingerprintInteractiveToAuthProvider> interactiveToAuthProvider,
|
||||
FeatureFlags featureFlags) {
|
||||
mContext = context;
|
||||
mSubscriptionManager = subscriptionManager;
|
||||
mUserTracker = userTracker;
|
||||
@@ -2317,6 +2321,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
mPackageManager = packageManager;
|
||||
mFpm = fingerprintManager;
|
||||
mFaceManager = faceManager;
|
||||
mFeatureFlags = featureFlags;
|
||||
mActiveUnlockConfig.setKeyguardUpdateMonitor(this);
|
||||
mFaceAcquiredInfoIgnoreList = Arrays.stream(
|
||||
mContext.getResources().getIntArray(
|
||||
@@ -3004,7 +3009,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
|| shouldListenForFingerprintAssistant
|
||||
|| (mKeyguardOccluded && mIsDreaming)
|
||||
|| (mKeyguardOccluded && userDoesNotHaveTrust && mKeyguardShowing
|
||||
&& (mOccludingAppRequestingFp || isUdfps || mAlternateBouncerShowing));
|
||||
&& (mOccludingAppRequestingFp
|
||||
|| isUdfps
|
||||
|| mAlternateBouncerShowing
|
||||
|| mFeatureFlags.isEnabled(Flags.FP_LISTEN_OCCLUDING_APPS)
|
||||
)
|
||||
);
|
||||
|
||||
// Only listen if this KeyguardUpdateMonitor belongs to the system user. There is an
|
||||
// instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware.
|
||||
|
||||
@@ -38,6 +38,7 @@ import static com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_STATE_CANCELL
|
||||
import static com.android.keyguard.KeyguardUpdateMonitor.DEFAULT_CANCEL_SIGNAL_TIMEOUT;
|
||||
import static com.android.keyguard.KeyguardUpdateMonitor.HAL_POWER_PRESS_TIMEOUT;
|
||||
import static com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser;
|
||||
import static com.android.systemui.flags.Flags.FP_LISTEN_OCCLUDING_APPS;
|
||||
import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_CLOSED;
|
||||
import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED;
|
||||
import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN;
|
||||
@@ -134,6 +135,7 @@ import com.android.systemui.biometrics.AuthController;
|
||||
import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.flags.FakeFeatureFlags;
|
||||
import com.android.systemui.log.SessionTracker;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.settings.UserTracker;
|
||||
@@ -277,6 +279,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
private final Executor mBackgroundExecutor = Runnable::run;
|
||||
private final Executor mMainExecutor = Runnable::run;
|
||||
private TestableLooper mTestableLooper;
|
||||
private FakeFeatureFlags mFeatureFlags;
|
||||
private Handler mHandler;
|
||||
private TestableKeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private MockitoSession mMockitoSession;
|
||||
@@ -325,6 +328,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
|
||||
mTestableLooper = TestableLooper.get(this);
|
||||
allowTestableLooperAsMainThread();
|
||||
mFeatureFlags = new FakeFeatureFlags();
|
||||
mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, false);
|
||||
|
||||
when(mSecureSettings.getUriFor(anyString())).thenReturn(mURI);
|
||||
|
||||
@@ -1411,6 +1416,23 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(true)).isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOccludingAppFingerprintListeningState_featureFlagEnabled() {
|
||||
mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, true);
|
||||
|
||||
// GIVEN keyguard isn't visible (app occluding)
|
||||
mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_POWER_BUTTON);
|
||||
mKeyguardUpdateMonitor.setKeyguardShowing(true, true);
|
||||
when(mStrongAuthTracker.hasUserAuthenticatedSinceBoot()).thenReturn(true);
|
||||
|
||||
// THEN we SHOULD listen for non-UDFPS fingerprint
|
||||
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isEqualTo(true);
|
||||
|
||||
// THEN we should listen for udfps (hiding of mechanism to actually auth is
|
||||
// controlled by UdfpsKeyguardViewController)
|
||||
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(true)).isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOccludingAppFingerprintListeningState() {
|
||||
// GIVEN keyguard isn't visible (app occluding)
|
||||
@@ -3108,7 +3130,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
mDreamManager, mDevicePolicyManager, mSensorPrivacyManager, mTelephonyManager,
|
||||
mPackageManager, mFaceManager, mFingerprintManager, mBiometricManager,
|
||||
mFaceWakeUpTriggersConfig, mDevicePostureController,
|
||||
Optional.of(mInteractiveToAuthProvider));
|
||||
Optional.of(mInteractiveToAuthProvider), mFeatureFlags);
|
||||
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user