diff options
| author | 2023-09-06 20:13:55 +0000 | |
|---|---|---|
| committer | 2023-09-06 20:21:04 +0000 | |
| commit | fd9ca4bcb405b9714c0deea1085ccd462bedb4a9 (patch) | |
| tree | 6d148a91f23e23a8e533fe92970e909cce4b865a | |
| parent | b06a59959cc9aec78d33206f9f481b1496d696e8 (diff) | |
Remove fp_listen_occluding_apps flag
Fixes: 283260512
Test: manual
Test: atest BiometricsUnlockControllerTest OccludingAppDeviceEntryInteractorTest KeyguardUpdateMonitorTest
Change-Id: I04c9b80e19170db5d808d7440a2e010b0107ca83
8 files changed, 50 insertions, 118 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 0ba6c0576663..8269536ad9a7 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -35,7 +35,6 @@ import static android.hardware.biometrics.BiometricSourceType.FINGERPRINT; import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN; import static android.os.BatteryManager.CHARGING_POLICY_DEFAULT; import static android.os.PowerManager.WAKE_REASON_UNKNOWN; - import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT; @@ -4205,21 +4204,19 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab @Override public void onTaskStackChangedBackground() { try { - if (mFeatureFlags.isEnabled(Flags.FP_LISTEN_OCCLUDING_APPS)) { - RootTaskInfo standardTask = mActivityTaskManager.getRootTaskInfo( - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); - final boolean previousState = mAllowFingerprintOnCurrentOccludingActivity; - mAllowFingerprintOnCurrentOccludingActivity = - standardTask.topActivity != null - && !TextUtils.isEmpty(standardTask.topActivity.getPackageName()) - && mAllowFingerprintOnOccludingActivitiesFromPackage.contains( - standardTask.topActivity.getPackageName()) - && standardTask.visible; - if (mAllowFingerprintOnCurrentOccludingActivity != previousState) { - mLogger.allowFingerprintOnCurrentOccludingActivityChanged( - mAllowFingerprintOnCurrentOccludingActivity); - updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE); - } + RootTaskInfo standardTask = mActivityTaskManager.getRootTaskInfo( + WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD); + final boolean previousState = mAllowFingerprintOnCurrentOccludingActivity; + mAllowFingerprintOnCurrentOccludingActivity = + standardTask.topActivity != null + && !TextUtils.isEmpty(standardTask.topActivity.getPackageName()) + && mAllowFingerprintOnOccludingActivitiesFromPackage.contains( + standardTask.topActivity.getPackageName()) + && standardTask.visible; + if (mAllowFingerprintOnCurrentOccludingActivity != previousState) { + mLogger.allowFingerprintOnCurrentOccludingActivityChanged( + mAllowFingerprintOnCurrentOccludingActivity); + updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE); } RootTaskInfo assistantTask = mActivityTaskManager.getRootTaskInfo( diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index d8bc5ff75b61..2c10b3698d6a 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -268,10 +268,6 @@ object Flags { val MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA = unreleasedFlag("migrate_split_keyguard_bottom_area", teamfood = true) - /** Whether to listen for fingerprint authentication over keyguard occluding activities. */ - // TODO(b/283260512): Tracking bug. - @JvmField val FP_LISTEN_OCCLUDING_APPS = releasedFlag("fp_listen_occluding_apps") - /** Flag meant to guard the talkback fix for the KeyguardIndicationTextView */ // TODO(b/286563884): Tracking bug @JvmField val KEYGUARD_TALKBACK_FIX = releasedFlag("keyguard_talkback_fix") diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt index 3ec660a5b6b9..f6ad8290d034 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt @@ -22,8 +22,6 @@ import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application -import com.android.systemui.flags.FeatureFlags -import com.android.systemui.flags.Flags import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus @@ -60,7 +58,6 @@ constructor( private val context: Context, activityStarter: ActivityStarter, powerInteractor: PowerInteractor, - featureFlags: FeatureFlags, ) { private val keyguardOccludedByApp: Flow<Boolean> = combine( @@ -93,37 +90,35 @@ constructor( .ifKeyguardOccludedByApp(/* elseFlow */ flowOf(null)) init { - if (featureFlags.isEnabled(Flags.FP_LISTEN_OCCLUDING_APPS)) { - scope.launch { - // On fingerprint success when the screen is on, go to the home screen - fingerprintUnlockSuccessEvents.sample(powerInteractor.isInteractive).collect { - if (it) { - goToHomeScreen() - } - // don't go to the home screen if the authentication is from AOD/dozing/off + scope.launch { + // On fingerprint success when the screen is on, go to the home screen + fingerprintUnlockSuccessEvents.sample(powerInteractor.isInteractive).collect { + if (it) { + goToHomeScreen() } + // don't go to the home screen if the authentication is from AOD/dozing/off } + } - scope.launch { - // On device fingerprint lockout, request the bouncer with a runnable to - // go to the home screen. Without this, the bouncer won't proceed to the home - // screen. - fingerprintLockoutEvents.collect { - activityStarter.dismissKeyguardThenExecute( - object : ActivityStarter.OnDismissAction { - override fun onDismiss(): Boolean { - goToHomeScreen() - return false - } + scope.launch { + // On device fingerprint lockout, request the bouncer with a runnable to + // go to the home screen. Without this, the bouncer won't proceed to the home + // screen. + fingerprintLockoutEvents.collect { + activityStarter.dismissKeyguardThenExecute( + object : ActivityStarter.OnDismissAction { + override fun onDismiss(): Boolean { + goToHomeScreen() + return false + } - override fun willRunAnimationOnKeyguard(): Boolean { - return false - } - }, - /* cancel= */ null, - /* afterKeyguardGone */ false - ) - } + override fun willRunAnimationOnKeyguard(): Boolean { + return false + } + }, + /* cancel= */ null, + /* afterKeyguardGone */ false + ) } } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt index 8b0b0ae543a7..ffc4777577f8 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt @@ -59,20 +59,18 @@ object KeyguardRootViewBinder { val disposableHandle = view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.CREATED) { - if (featureFlags.isEnabled(Flags.FP_LISTEN_OCCLUDING_APPS)) { - launch { - occludingAppDeviceEntryMessageViewModel.message.collect { - biometricMessage -> - if (biometricMessage?.message != null) { - chipbarCoordinator.displayView( - createChipbarInfo( - biometricMessage.message, - R.drawable.ic_lock, - ) + launch { + occludingAppDeviceEntryMessageViewModel.message.collect { biometricMessage + -> + if (biometricMessage?.message != null) { + chipbarCoordinator.displayView( + createChipbarInfo( + biometricMessage.message, + R.drawable.ic_lock, ) - } else { - chipbarCoordinator.removeView(ID, "occludingAppMsgNull") - } + ) + } else { + chipbarCoordinator.removeView(ID, "occludingAppMsgNull") } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java index 0031b5745d10..3b9afa1a5eab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java @@ -17,8 +17,6 @@ package com.android.systemui.statusbar.phone; import static android.app.StatusBarManager.SESSION_KEYGUARD; - -import static com.android.systemui.flags.Flags.FP_LISTEN_OCCLUDING_APPS; import static com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION; import static com.android.systemui.keyguard.WakefulnessLifecycle.UNKNOWN_LAST_WAKE_TIME; @@ -702,8 +700,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp } final boolean screenOff = !mUpdateMonitor.isDeviceInteractive(); - if (!mVibratorHelper.hasVibrator() && (screenOff || (mUpdateMonitor.isDreaming() - && !mFeatureFlags.isEnabled(FP_LISTEN_OCCLUDING_APPS)))) { + if (!mVibratorHelper.hasVibrator() && screenOff) { mLogger.d("wakeup device on authentication failure (device doesn't have a vibrator)"); startWakeAndUnlock(MODE_ONLY_WAKE); } else if (biometricSourceType == BiometricSourceType.FINGERPRINT diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java index 0cd82f09b6c2..df2b01051535 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java @@ -29,7 +29,6 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWE import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL; import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE; import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID; - import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN; @@ -39,16 +38,12 @@ 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.flags.Flags.STOP_FACE_AUTH_ON_DISPLAY_OFF; 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; - import static com.google.common.truth.Truth.assertThat; - import static junit.framework.Assert.assertEquals; - import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; @@ -355,7 +350,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mTestableLooper = TestableLooper.get(this); allowTestableLooperAsMainThread(); mFeatureFlags = new FakeFeatureFlags(); - mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, false); mFeatureFlags.set(STOP_FACE_AUTH_ON_DISPLAY_OFF, false); when(mSecureSettings.getUriFor(anyString())).thenReturn(mURI); @@ -1593,8 +1587,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { @Test public void listenForFingerprint_whenOccludingAppPkgOnAllowlist() throws RemoteException { - 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); @@ -1616,8 +1608,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { @Test public void doNotListenForFingerprint_whenOccludingAppPkgNotOnAllowlist() throws RemoteException { - 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); diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt index 499a6362ce05..13a3e5420333 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt @@ -160,7 +160,6 @@ class OccludingAppDeviceEntryInteractorTest : SysuiTestCase() { screenOffAnimationController = mock(), statusBarStateController = mock(), ), - FakeFeatureFlags().apply { set(Flags.FP_LISTEN_OCCLUDING_APPS, true) }, ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java index 5107ecc6bc1a..20e732ad5296 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java @@ -16,12 +16,9 @@ package com.android.systemui.statusbar.phone; -import static com.android.systemui.flags.Flags.FP_LISTEN_OCCLUDING_APPS; import static com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION; import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK; - import static com.google.common.truth.Truth.assertThat; - import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; @@ -133,7 +130,6 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { public void setUp() { MockitoAnnotations.initMocks(this); mFeatureFlags = new FakeFeatureFlags(); - mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, false); mFeatureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false); when(mKeyguardStateController.isShowing()).thenReturn(true); when(mUpdateMonitor.isDeviceInteractive()).thenReturn(true); @@ -439,24 +435,6 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { @Test public void onFPFailureNoHaptics_notInteractive_showLockScreen() { - mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, true); - - // GIVEN no vibrator and device is not interactive - when(mVibratorHelper.hasVibrator()).thenReturn(false); - when(mUpdateMonitor.isDeviceInteractive()).thenReturn(false); - when(mUpdateMonitor.isDreaming()).thenReturn(false); - - // WHEN FP fails - mBiometricUnlockController.onBiometricAuthFailed(BiometricSourceType.FINGERPRINT); - - // THEN wakeup the device - verify(mPowerManager).wakeUp(anyLong(), anyInt(), anyString()); - } - - @Test - public void onFPFailureNoHaptics_notInteractive_showLockScreen_doNotListenOccludingApps() { - mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, false); - // GIVEN no vibrator and device is not interactive when(mVibratorHelper.hasVibrator()).thenReturn(false); when(mUpdateMonitor.isDeviceInteractive()).thenReturn(false); @@ -471,8 +449,6 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { @Test public void onFPFailureNoHaptics_dreaming_showLockScreen() { - mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, true); - // GIVEN no vibrator and device is dreaming when(mVibratorHelper.hasVibrator()).thenReturn(false); when(mUpdateMonitor.isDeviceInteractive()).thenReturn(true); @@ -486,22 +462,6 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { } @Test - public void onFPFailureNoHaptics_dreaming_showLockScreen_doNotListeOccludingApps() { - mFeatureFlags.set(FP_LISTEN_OCCLUDING_APPS, false); - - // GIVEN no vibrator and device is dreaming - when(mVibratorHelper.hasVibrator()).thenReturn(false); - when(mUpdateMonitor.isDeviceInteractive()).thenReturn(true); - when(mUpdateMonitor.isDreaming()).thenReturn(true); - - // WHEN FP fails - mBiometricUnlockController.onBiometricAuthFailed(BiometricSourceType.FINGERPRINT); - - // THEN wakeup the device - verify(mPowerManager).wakeUp(anyLong(), anyInt(), anyString()); - } - - @Test public void onSideFingerprintSuccess_recentPowerButtonPress_noHaptic() { // GIVEN side fingerprint enrolled, last wake reason was power button when(mAuthController.isSfpsEnrolled(anyInt())).thenReturn(true); |