Deflag SidefpsController refactor
Removing SideFpsController, and removing all flagged code for
SidefpsControllerRefactor
Flag: NONE
Fixes: 288175061
Bug: 287311775
Test: N/A
Change-Id: Ied1e743db40ecffc0ed07aa506eaf9be82c57a0a
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index 37f2fb2..25bfb2a 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -962,24 +962,6 @@
}
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /**
- * @hide
- */
- @RequiresPermission(USE_BIOMETRIC_INTERNAL)
- public void setSidefpsController(@NonNull ISidefpsController controller) {
- if (mService == null) {
- Slog.w(TAG, "setSidefpsController: no fingerprint service");
- return;
- }
-
- try {
- mService.setSidefpsController(controller);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
/**
* Forwards BiometricStateListener to FingerprintService
* @param listener new BiometricStateListener being added
diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
index 6a96ac4..742fa57 100644
--- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl
+++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
@@ -27,7 +27,6 @@
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
import android.hardware.fingerprint.IUdfpsOverlayController;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintAuthenticateOptions;
import android.hardware.fingerprint.FingerprintEnrollOptions;
@@ -200,10 +199,6 @@
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void setUdfpsOverlayController(in IUdfpsOverlayController controller);
- // Sets the controller for managing the SideFPS overlay.
- @EnforcePermission("USE_BIOMETRIC_INTERNAL")
- void setSidefpsController(in ISidefpsController controller);
-
// Registers AuthenticationStateListener.
@EnforcePermission("USE_BIOMETRIC_INTERNAL")
void registerAuthenticationStateListener(AuthenticationStateListener listener);
diff --git a/core/java/android/hardware/fingerprint/ISidefpsController.aidl b/core/java/android/hardware/fingerprint/ISidefpsController.aidl
deleted file mode 100644
index 684f18f..0000000
--- a/core/java/android/hardware/fingerprint/ISidefpsController.aidl
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.hardware.fingerprint;
-
-/**
- * Interface for interacting with the side fingerprint sensor (side-fps) overlay.
- * @hide
- */
-oneway interface ISidefpsController {
-
- // Shows the overlay for the given sensor with a reason from BiometricOverlayConstants.
- void show(int sensorId, int reason);
-
- // Hides the overlay.
- void hide(int sensorId);
-}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
index ed2d20c..aa70c45 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
@@ -18,7 +18,6 @@
package com.android.keyguard
import android.content.res.Configuration
-import android.hardware.biometrics.BiometricRequestConstants
import android.media.AudioManager
import android.telephony.TelephonyManager
import android.testing.TestableLooper.RunWithLooper
@@ -41,8 +40,6 @@
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.FaceAuthAccessibilityDelegate
-import com.android.systemui.biometrics.SideFpsController
-import com.android.systemui.biometrics.SideFpsUiRequestSource
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
import com.android.systemui.classifier.FalsingA11yDelegate
@@ -70,7 +67,6 @@
import com.android.systemui.scene.shared.model.FakeSceneDataSource
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.fakeSceneDataSource
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.DevicePostureController
import com.android.systemui.statusbar.policy.DeviceProvisionedController
@@ -87,7 +83,6 @@
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.GlobalSettings
import com.google.common.truth.Truth
-import java.util.Optional
import junit.framework.Assert
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
@@ -143,7 +138,6 @@
@Mock private lateinit var userSwitcherController: UserSwitcherController
@Mock private lateinit var sessionTracker: SessionTracker
@Mock private lateinit var keyguardViewController: KeyguardViewController
- @Mock private lateinit var sideFpsController: SideFpsController
@Mock private lateinit var keyguardPasswordViewControllerMock: KeyguardPasswordViewController
@Mock private lateinit var falsingA11yDelegate: FalsingA11yDelegate
@Mock private lateinit var telephonyManager: TelephonyManager
@@ -214,9 +208,6 @@
mSetFlagsRule.enableFlags(
AConfigFlags.FLAG_REVAMPED_BOUNCER_MESSAGES,
)
- mSetFlagsRule.disableFlags(
- FLAG_SIDEFPS_CONTROLLER_REFACTOR,
- )
if (!SceneContainerFlag.isEnabled) {
mSetFlagsRule.disableFlags(
AConfigFlags.FLAG_KEYGUARD_WM_STATE_REFACTOR,
@@ -273,7 +264,6 @@
featureFlags,
globalSettings,
sessionTracker,
- Optional.of(sideFpsController),
falsingA11yDelegate,
telephonyManager,
viewMediatorCallback,
@@ -781,24 +771,6 @@
}
@Test
- fun sideFpsControllerShow() {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- underTest.updateSideFpsVisibility(/* isVisible= */ true)
- verify(sideFpsController)
- .show(
- SideFpsUiRequestSource.PRIMARY_BOUNCER,
- BiometricRequestConstants.REASON_AUTH_KEYGUARD
- )
- }
-
- @Test
- fun sideFpsControllerHide() {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- underTest.updateSideFpsVisibility(/* isVisible= */ false)
- verify(sideFpsController).hide(SideFpsUiRequestSource.PRIMARY_BOUNCER)
- }
-
- @Test
fun setExpansion_setsAlpha() {
underTest.setExpansion(KeyguardBouncerConstants.EXPANSION_VISIBLE)
verify(view).alpha = 1f
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java
index 289896e01..f4ad764 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthControllerTest.java
@@ -145,8 +145,6 @@
@Mock
private UdfpsController mUdfpsController;
@Mock
- private SideFpsController mSideFpsController;
- @Mock
private DisplayManager mDisplayManager;
@Mock
private WakefulnessLifecycle mWakefulnessLifecycle;
@@ -1064,14 +1062,12 @@
TestableAuthController(Context context) {
super(context, null /* applicationCoroutineScope */,
mExecution, mCommandQueue, mActivityTaskManager, mWindowManager,
- mFingerprintManager, mFaceManager, () -> mUdfpsController,
- () -> mSideFpsController, mDisplayManager, mWakefulnessLifecycle,
- mPanelInteractionDetector, mUserManager, mLockPatternUtils, () -> mUdfpsLogger,
- () -> mLogContextInteractor,
- () -> mBiometricPromptCredentialInteractor,
- () -> mPromptSelectionInteractor, () -> mCredentialViewModel,
- () -> mPromptViewModel, mInteractionJankMonitor, mHandler, mBackgroundExecutor,
- mUdfpsUtils, mVibratorHelper);
+ mFingerprintManager, mFaceManager, () -> mUdfpsController, mDisplayManager,
+ mWakefulnessLifecycle, mPanelInteractionDetector, mUserManager,
+ mLockPatternUtils, () -> mUdfpsLogger, () -> mLogContextInteractor,
+ () -> mBiometricPromptCredentialInteractor, () -> mPromptSelectionInteractor,
+ () -> mCredentialViewModel, () -> mPromptViewModel, mInteractionJankMonitor,
+ mHandler, mBackgroundExecutor, mUdfpsUtils, mVibratorHelper);
}
@Override
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt
deleted file mode 100644
index 07e9815..0000000
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt
+++ /dev/null
@@ -1,898 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.biometrics
-
-import android.animation.Animator
-import android.app.ActivityManager
-import android.app.ActivityTaskManager
-import android.content.ComponentName
-import android.graphics.Insets
-import android.graphics.Rect
-import android.hardware.biometrics.BiometricRequestConstants.REASON_AUTH_KEYGUARD
-import android.hardware.biometrics.BiometricRequestConstants.REASON_AUTH_SETTINGS
-import android.hardware.biometrics.BiometricRequestConstants.REASON_UNKNOWN
-import android.hardware.biometrics.SensorLocationInternal
-import android.hardware.biometrics.SensorProperties
-import android.hardware.display.DisplayManager
-import android.hardware.display.DisplayManagerGlobal
-import android.hardware.fingerprint.FingerprintManager
-import android.hardware.fingerprint.FingerprintSensorProperties
-import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
-import android.hardware.fingerprint.ISidefpsController
-import android.os.Handler
-import android.testing.TestableLooper
-import android.view.Display
-import android.view.DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS
-import android.view.DisplayInfo
-import android.view.LayoutInflater
-import android.view.Surface
-import android.view.View
-import android.view.ViewPropertyAnimator
-import android.view.WindowInsets
-import android.view.WindowManager
-import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION
-import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
-import android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG
-import android.view.WindowMetrics
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.airbnb.lottie.LottieAnimationView
-import com.android.keyguard.KeyguardUpdateMonitor
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.SysuiTestableContext
-import com.android.systemui.biometrics.data.repository.FakeDisplayStateRepository
-import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
-import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
-import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractorImpl
-import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
-import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
-import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFingerprintAuthInteractor
-import com.android.systemui.display.data.repository.FakeDisplayRepository
-import com.android.systemui.dump.DumpManager
-import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
-import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
-import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
-import com.android.systemui.plugins.statusbar.StatusBarStateController
-import com.android.systemui.res.R
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
-import com.android.systemui.statusbar.policy.KeyguardStateController
-import com.android.systemui.util.concurrency.FakeExecutor
-import com.android.systemui.util.time.FakeSystemClock
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.test.StandardTestDispatcher
-import kotlinx.coroutines.test.TestCoroutineScope
-import kotlinx.coroutines.test.TestScope
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.eq
-import org.mockito.Captor
-import org.mockito.Mock
-import org.mockito.Mockito.any
-import org.mockito.Mockito.anyFloat
-import org.mockito.Mockito.anyInt
-import org.mockito.Mockito.anyLong
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.never
-import org.mockito.Mockito.reset
-import org.mockito.Mockito.times
-import org.mockito.Mockito.verify
-import org.mockito.Mockito.`when` as whenEver
-import org.mockito.junit.MockitoJUnit
-
-private const val DISPLAY_ID = 2
-private const val SENSOR_ID = 1
-
-private const val REAR_DISPLAY_MODE_DEVICE_STATE = 3
-
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-@TestableLooper.RunWithLooper
-class SideFpsControllerTest : SysuiTestCase() {
-
- @JvmField @Rule var rule = MockitoJUnit.rule()
-
- @Mock lateinit var layoutInflater: LayoutInflater
- @Mock lateinit var fingerprintManager: FingerprintManager
- @Mock lateinit var windowManager: WindowManager
- @Mock lateinit var activityTaskManager: ActivityTaskManager
- @Mock lateinit var sideFpsView: View
- @Mock lateinit var displayManager: DisplayManager
- @Mock lateinit var handler: Handler
- @Mock lateinit var dumpManager: DumpManager
- @Mock lateinit var fpsUnlockTracker: FpsUnlockTracker
- @Captor lateinit var overlayCaptor: ArgumentCaptor<View>
- @Captor lateinit var overlayViewParamsCaptor: ArgumentCaptor<WindowManager.LayoutParams>
-
- private lateinit var displayRepository: FakeDisplayRepository
- private lateinit var displayStateRepository: FakeDisplayStateRepository
- private lateinit var keyguardBouncerRepository: FakeKeyguardBouncerRepository
- private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor
- private lateinit var displayStateInteractor: DisplayStateInteractor
-
- private val executor = FakeExecutor(FakeSystemClock())
- private val testScope = TestScope(StandardTestDispatcher())
-
- private lateinit var overlayController: ISidefpsController
- private lateinit var sideFpsController: SideFpsController
-
- enum class DeviceConfig {
- X_ALIGNED,
- Y_ALIGNED,
- }
-
- private lateinit var deviceConfig: DeviceConfig
- private lateinit var indicatorBounds: Rect
- private lateinit var displayBounds: Rect
- private lateinit var sensorLocation: SensorLocationInternal
- private var displayWidth: Int = 0
- private var displayHeight: Int = 0
- private var boundsWidth: Int = 0
- private var boundsHeight: Int = 0
-
- @Before
- fun setup() {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- displayRepository = FakeDisplayRepository()
- displayStateRepository = FakeDisplayStateRepository()
- keyguardBouncerRepository = FakeKeyguardBouncerRepository()
- alternateBouncerInteractor =
- AlternateBouncerInteractor(
- mock(StatusBarStateController::class.java),
- mock(KeyguardStateController::class.java),
- keyguardBouncerRepository,
- FakeFingerprintPropertyRepository(),
- FakeBiometricSettingsRepository(),
- FakeSystemClock(),
- mock(KeyguardUpdateMonitor::class.java),
- { mock(DeviceEntryFingerprintAuthInteractor::class.java) },
- { mock(KeyguardInteractor::class.java) },
- { mock(KeyguardTransitionInteractor::class.java) },
- testScope.backgroundScope,
- )
- displayStateInteractor =
- DisplayStateInteractorImpl(
- testScope.backgroundScope,
- context,
- executor,
- displayStateRepository,
- displayRepository,
- )
-
- context.addMockSystemService(DisplayManager::class.java, displayManager)
- context.addMockSystemService(WindowManager::class.java, windowManager)
-
- whenEver(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView)
- whenEver(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation)))
- .thenReturn(mock(LottieAnimationView::class.java))
- with(mock(ViewPropertyAnimator::class.java)) {
- whenEver(sideFpsView.animate()).thenReturn(this)
- whenEver(alpha(anyFloat())).thenReturn(this)
- whenEver(setStartDelay(anyLong())).thenReturn(this)
- whenEver(setDuration(anyLong())).thenReturn(this)
- whenEver(setListener(any())).thenAnswer {
- (it.arguments[0] as Animator.AnimatorListener).onAnimationEnd(
- mock(Animator::class.java)
- )
- this
- }
- }
- }
-
- private fun testWithDisplay(
- deviceConfig: DeviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation: Boolean = false,
- initInfo: DisplayInfo.() -> Unit = {},
- windowInsets: WindowInsets = insetsForSmallNavbar(),
- inRearDisplayMode: Boolean = false,
- block: () -> Unit
- ) {
- this.deviceConfig = deviceConfig
-
- when (deviceConfig) {
- DeviceConfig.X_ALIGNED -> {
- displayWidth = 3000
- displayHeight = 1500
- sensorLocation = SensorLocationInternal("", 2500, 0, 0)
- boundsWidth = 200
- boundsHeight = 100
- }
- DeviceConfig.Y_ALIGNED -> {
- displayWidth = 2500
- displayHeight = 2000
- sensorLocation = SensorLocationInternal("", 0, 300, 0)
- boundsWidth = 100
- boundsHeight = 200
- }
- }
-
- indicatorBounds = Rect(0, 0, boundsWidth, boundsHeight)
- displayBounds = Rect(0, 0, displayWidth, displayHeight)
- var locations = listOf(sensorLocation)
-
- whenEver(fingerprintManager.sensorPropertiesInternal)
- .thenReturn(
- listOf(
- FingerprintSensorPropertiesInternal(
- SENSOR_ID,
- SensorProperties.STRENGTH_STRONG,
- 5 /* maxEnrollmentsPerUser */,
- listOf() /* componentInfo */,
- FingerprintSensorProperties.TYPE_POWER_BUTTON,
- true /* halControlsIllumination */,
- true /* resetLockoutRequiresHardwareAuthToken */,
- locations
- )
- )
- )
-
- val displayInfo = DisplayInfo()
- displayInfo.initInfo()
-
- val dmGlobal = mock(DisplayManagerGlobal::class.java)
- val display = Display(dmGlobal, DISPLAY_ID, displayInfo, DEFAULT_DISPLAY_ADJUSTMENTS)
-
- whenEver(dmGlobal.getDisplayInfo(eq(DISPLAY_ID))).thenReturn(displayInfo)
- whenEver(windowManager.defaultDisplay).thenReturn(display)
- whenEver(windowManager.maximumWindowMetrics)
- .thenReturn(WindowMetrics(displayBounds, WindowInsets.CONSUMED))
- whenEver(windowManager.currentWindowMetrics)
- .thenReturn(WindowMetrics(displayBounds, windowInsets))
-
- val sideFpsControllerContext = context.createDisplayContext(display) as SysuiTestableContext
- sideFpsControllerContext.orCreateTestableResources.addOverride(
- com.android.internal.R.bool.config_reverseDefaultRotation,
- isReverseDefaultRotation
- )
-
- val rearDisplayDeviceStates =
- if (inRearDisplayMode) intArrayOf(REAR_DISPLAY_MODE_DEVICE_STATE) else intArrayOf()
- sideFpsControllerContext.orCreateTestableResources.addOverride(
- com.android.internal.R.array.config_rearDisplayDeviceStates,
- rearDisplayDeviceStates
- )
-
- sideFpsController =
- SideFpsController(
- sideFpsControllerContext,
- layoutInflater,
- fingerprintManager,
- windowManager,
- activityTaskManager,
- displayManager,
- displayStateInteractor,
- executor,
- handler,
- alternateBouncerInteractor,
- TestCoroutineScope(),
- dumpManager,
- fpsUnlockTracker
- )
- displayStateRepository.setIsInRearDisplayMode(inRearDisplayMode)
-
- overlayController =
- ArgumentCaptor.forClass(ISidefpsController::class.java)
- .apply { verify(fingerprintManager).setSidefpsController(capture()) }
- .value
-
- block()
- }
-
- @Test
- fun testSubscribesToOrientationChangesWhenShowingOverlay() = testWithDisplay {
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(displayManager).registerDisplayListener(any(), eq(handler), anyLong())
-
- overlayController.hide(SENSOR_ID)
- executor.runAllReady()
- verify(displayManager).unregisterDisplayListener(any())
- }
-
- @Test
- fun testShowOverlayReasonWhenDisplayChanged() = testWithDisplay {
- sideFpsController.show(SideFpsUiRequestSource.AUTO_SHOW, REASON_AUTH_KEYGUARD)
- executor.runAllReady()
- sideFpsController.orientationListener.onDisplayChanged(1 /* displayId */)
- executor.runAllReady()
-
- assertThat(sideFpsController.orientationReasonListener.reason)
- .isEqualTo(REASON_AUTH_KEYGUARD)
- }
-
- @Test
- fun testShowsAndHides() = testWithDisplay {
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).addView(overlayCaptor.capture(), any())
-
- reset(windowManager)
- overlayController.hide(SENSOR_ID)
- executor.runAllReady()
-
- verify(windowManager, never()).addView(any(), any())
- verify(windowManager).removeView(eq(overlayCaptor.value))
- }
-
- @Test
- fun testShowsOnce() = testWithDisplay {
- repeat(5) {
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
- }
-
- verify(windowManager).addView(any(), any())
- verify(windowManager, never()).removeView(any())
- }
-
- @Test
- fun testHidesOnce() = testWithDisplay {
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- repeat(5) {
- overlayController.hide(SENSOR_ID)
- executor.runAllReady()
- }
-
- verify(windowManager).addView(any(), any())
- verify(windowManager).removeView(any())
- }
-
- @Test fun testIgnoredForKeyguard() = testWithDisplay { testIgnoredFor(REASON_AUTH_KEYGUARD) }
-
- @Test
- fun testShowsForMostSettings() = testWithDisplay {
- whenEver(activityTaskManager.getTasks(anyInt())).thenReturn(listOf(fpEnrollTask()))
- testIgnoredFor(REASON_AUTH_SETTINGS, ignored = false)
- }
-
- @Test
- fun testIgnoredForVerySpecificSettings() = testWithDisplay {
- whenEver(activityTaskManager.getTasks(anyInt())).thenReturn(listOf(fpSettingsTask()))
- testIgnoredFor(REASON_AUTH_SETTINGS)
- }
-
- private fun testIgnoredFor(reason: Int, ignored: Boolean = true) {
- overlayController.show(SENSOR_ID, reason)
- executor.runAllReady()
-
- verify(windowManager, if (ignored) never() else times(1)).addView(any(), any())
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_0 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_90 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_180 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarCollapsedDownForXAlignedSensor_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_180 },
- windowInsets = insetsForSmallNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun hidesSfpsIndicatorWhenOccludingTaskbarForXAlignedSensor_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_180 },
- windowInsets = insetsForLargeNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = false)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_270 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_InReverseDefaultRotation_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_0 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_InReverseDefaultRotation_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_90 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarCollapsedDownForXAlignedSensor_InReverseDefaultRotation_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_90 },
- windowInsets = insetsForSmallNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun hidesSfpsIndicatorWhenOccludingTaskbarForXAlignedSensor_InReverseDefaultRotation_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_90 },
- windowInsets = insetsForLargeNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = false)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_InReverseDefaultRotation_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_180 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForXAlignedSensor_InReverseDefaultRotation_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_270 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_0 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_90 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_180 },
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_270 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarCollapsedDownForYAlignedSensor_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_270 },
- windowInsets = insetsForSmallNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun hidesSfpsIndicatorWhenOccludingTaskbarForYAlignedSensor_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_270 },
- windowInsets = insetsForLargeNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = false)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_InReverseDefaultRotation_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_0 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_InReverseDefaultRotation_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_90 },
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_InReverseDefaultRotation_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_180 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarCollapsedDownForYAlignedSensor_InReverseDefaultRotation_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_180 },
- windowInsets = insetsForSmallNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun hidesSfpsIndicatorWhenOccludingTaskbarForYAlignedSensor_InReverseDefaultRotation_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_180 },
- windowInsets = insetsForLargeNavbar()
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = false)
- }
-
- @Test
- fun showsSfpsIndicatorWithTaskbarForYAlignedSensor_InReverseDefaultRotation_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_270 }
- ) {
- verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible = true)
- }
-
- @Test
- fun verifiesSfpsIndicatorNotAddedInRearDisplayMode_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_0 },
- inRearDisplayMode = true,
- ) {
- verifySfpsIndicator_notAdded_InRearDisplayMode()
- }
-
- @Test
- fun verifiesSfpsIndicatorNotAddedInRearDisplayMode_90() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_90 },
- inRearDisplayMode = true,
- ) {
- verifySfpsIndicator_notAdded_InRearDisplayMode()
- }
-
- @Test
- fun verifiesSfpsIndicatorNotAddedInRearDisplayMode_180() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_180 },
- inRearDisplayMode = true,
- ) {
- verifySfpsIndicator_notAdded_InRearDisplayMode()
- }
-
- @Test
- fun verifiesSfpsIndicatorNotAddedInRearDisplayMode_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_270 },
- inRearDisplayMode = true,
- ) {
- verifySfpsIndicator_notAdded_InRearDisplayMode()
- }
-
- private fun verifySfpsIndicatorVisibilityOnTaskbarUpdate(sfpsViewVisible: Boolean) {
- sideFpsController.overlayOffsets = sensorLocation
- }
-
- private fun verifySfpsIndicator_notAdded_InRearDisplayMode() {
- sideFpsController.overlayOffsets = sensorLocation
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager, never()).addView(any(), any())
- }
-
- fun alternateBouncerVisibility_showAndHideSideFpsUI() = testWithDisplay {
- // WHEN alternate bouncer is visible
- keyguardBouncerRepository.setAlternateVisible(true)
- executor.runAllReady()
-
- // THEN side fps shows UI
- verify(windowManager).addView(any(), any())
- verify(windowManager, never()).removeView(any())
-
- // WHEN alternate bouncer is no longer visible
- keyguardBouncerRepository.setAlternateVisible(false)
- executor.runAllReady()
-
- // THEN side fps UI is hidden
- verify(windowManager).removeView(any())
- }
-
- /**
- * {@link SideFpsController#updateOverlayParams} calculates indicator placement for ROTATION_0,
- * and uses RotateUtils.rotateBounds to map to the correct indicator location given the device
- * rotation. Assuming RotationUtils.rotateBounds works correctly, tests for indicator placement
- * in other rotations have been omitted.
- */
- @Test
- fun verifiesIndicatorPlacementForXAlignedSensor_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_0 }
- ) {
- sideFpsController.overlayOffsets = sensorLocation
-
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
-
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
- assertThat(overlayViewParamsCaptor.value.x).isEqualTo(sensorLocation.sensorLocationX)
- assertThat(overlayViewParamsCaptor.value.y).isEqualTo(0)
- }
-
- /**
- * {@link SideFpsController#updateOverlayParams} calculates indicator placement for ROTATION_270
- * in reverse default rotation. It then uses RotateUtils.rotateBounds to map to the correct
- * indicator location given the device rotation. Assuming RotationUtils.rotateBounds works
- * correctly, tests for indicator placement in other rotations have been omitted.
- */
- @Test
- fun verifiesIndicatorPlacementForXAlignedSensor_InReverseDefaultRotation_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.X_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_270 }
- ) {
- sideFpsController.overlayOffsets = sensorLocation
-
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
-
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
- assertThat(overlayViewParamsCaptor.value.x).isEqualTo(sensorLocation.sensorLocationX)
- assertThat(overlayViewParamsCaptor.value.y).isEqualTo(0)
- }
-
- /**
- * {@link SideFpsController#updateOverlayParams} calculates indicator placement for ROTATION_0,
- * and uses RotateUtils.rotateBounds to map to the correct indicator location given the device
- * rotation. Assuming RotationUtils.rotateBounds works correctly, tests for indicator placement
- * in other rotations have been omitted.
- */
- @Test
- fun verifiesIndicatorPlacementForYAlignedSensor_0() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = false,
- { rotation = Surface.ROTATION_0 }
- ) {
- sideFpsController.overlayOffsets = sensorLocation
-
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
-
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
- assertThat(overlayViewParamsCaptor.value.x).isEqualTo(displayWidth - boundsWidth)
- assertThat(overlayViewParamsCaptor.value.y).isEqualTo(sensorLocation.sensorLocationY)
- }
-
- /**
- * {@link SideFpsController#updateOverlayParams} calculates indicator placement for ROTATION_270
- * in reverse default rotation. It then uses RotateUtils.rotateBounds to map to the correct
- * indicator location given the device rotation. Assuming RotationUtils.rotateBounds works
- * correctly, tests for indicator placement in other rotations have been omitted.
- */
- @Test
- fun verifiesIndicatorPlacementForYAlignedSensor_InReverseDefaultRotation_270() =
- testWithDisplay(
- deviceConfig = DeviceConfig.Y_ALIGNED,
- isReverseDefaultRotation = true,
- { rotation = Surface.ROTATION_270 }
- ) {
- sideFpsController.overlayOffsets = sensorLocation
-
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
-
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
- assertThat(overlayViewParamsCaptor.value.x).isEqualTo(displayWidth - boundsWidth)
- assertThat(overlayViewParamsCaptor.value.y).isEqualTo(sensorLocation.sensorLocationY)
- }
-
- @Test
- fun hasSideFpsSensor_withSensorProps_returnsTrue() = testWithDisplay {
- // By default all those tests assume the side fps sensor is available.
- assertThat(fingerprintManager.hasSideFpsSensor()).isTrue()
- }
-
- @Test
- fun hasSideFpsSensor_withoutSensorProps_returnsFalse() {
- whenEver(fingerprintManager.sensorPropertiesInternal).thenReturn(null)
-
- assertThat(fingerprintManager.hasSideFpsSensor()).isFalse()
- }
-
- @Test
- fun testLayoutParams_isKeyguardDialogType() =
- testWithDisplay(deviceConfig = DeviceConfig.Y_ALIGNED) {
- sideFpsController.overlayOffsets = sensorLocation
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
-
- val lpType = overlayViewParamsCaptor.value.type
-
- assertThat((lpType and TYPE_KEYGUARD_DIALOG) != 0).isTrue()
- }
-
- @Test
- fun testLayoutParams_hasNoMoveAnimationWindowFlag() =
- testWithDisplay(deviceConfig = DeviceConfig.Y_ALIGNED) {
- sideFpsController.overlayOffsets = sensorLocation
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
-
- val lpFlags = overlayViewParamsCaptor.value.privateFlags
-
- assertThat((lpFlags and PRIVATE_FLAG_NO_MOVE_ANIMATION) != 0).isTrue()
- }
-
- @Test
- fun testLayoutParams_hasTrustedOverlayWindowFlag() =
- testWithDisplay(deviceConfig = DeviceConfig.Y_ALIGNED) {
- sideFpsController.overlayOffsets = sensorLocation
- sideFpsController.updateOverlayParams(windowManager.defaultDisplay, indicatorBounds)
- overlayController.show(SENSOR_ID, REASON_UNKNOWN)
- executor.runAllReady()
-
- verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture())
-
- val lpFlags = overlayViewParamsCaptor.value.privateFlags
-
- assertThat((lpFlags and PRIVATE_FLAG_TRUSTED_OVERLAY) != 0).isTrue()
- }
-
- @Test
- fun primaryBouncerRequestAnimatesAlphaIn() = testWithDisplay {
- sideFpsController.show(SideFpsUiRequestSource.PRIMARY_BOUNCER, REASON_AUTH_KEYGUARD)
- executor.runAllReady()
- verify(sideFpsView).animate()
- }
-
- @Test
- fun alternateBouncerRequestsDoesNotAnimateAlphaIn() = testWithDisplay {
- sideFpsController.show(SideFpsUiRequestSource.ALTERNATE_BOUNCER, REASON_AUTH_KEYGUARD)
- executor.runAllReady()
- verify(sideFpsView, never()).animate()
- }
-
- @Test
- fun autoShowRequestsDoesNotAnimateAlphaIn() = testWithDisplay {
- sideFpsController.show(SideFpsUiRequestSource.AUTO_SHOW, REASON_AUTH_KEYGUARD)
- executor.runAllReady()
- verify(sideFpsView, never()).animate()
- }
-}
-
-private fun insetsForSmallNavbar() = insetsWithBottom(60)
-
-private fun insetsForLargeNavbar() = insetsWithBottom(100)
-
-private fun insetsWithBottom(bottom: Int) =
- WindowInsets.Builder()
- .setInsets(WindowInsets.Type.navigationBars(), Insets.of(0, 0, 0, bottom))
- .build()
-
-private fun fpEnrollTask() = settingsTask(".biometrics.fingerprint.FingerprintEnrollEnrolling")
-
-private fun fpSettingsTask() = settingsTask(".biometrics.fingerprint.FingerprintSettings")
-
-private fun settingsTask(cls: String) =
- ActivityManager.RunningTaskInfo().apply {
- topActivity = ComponentName.createRelative("com.android.settings", cls)
- }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt
index 63f6c20..546a6b7 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorTest.kt
@@ -36,8 +36,6 @@
import com.android.systemui.keyguard.DismissCallbackRegistry
import com.android.systemui.keyguard.data.repository.FakeTrustRepository
import com.android.systemui.plugins.ActivityStarter
-import com.android.systemui.res.R
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.mockito.any
@@ -343,90 +341,6 @@
assertThat(underTest.willDismissWithAction()).isFalse()
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun testSideFpsVisibility() {
- updateSideFpsVisibilityParameters(
- isVisible = true,
- sfpsEnabled = true,
- fpsDetectionRunning = true,
- isUnlockingWithFpAllowed = true,
- isAnimatingAway = false
- )
- underTest.updateSideFpsVisibility()
- verify(repository).setSideFpsShowing(true)
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun testSideFpsVisibility_notVisible() {
- updateSideFpsVisibilityParameters(
- isVisible = false,
- sfpsEnabled = true,
- fpsDetectionRunning = true,
- isUnlockingWithFpAllowed = true,
- isAnimatingAway = false
- )
- underTest.updateSideFpsVisibility()
- verify(repository).setSideFpsShowing(false)
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun testSideFpsVisibility_sfpsNotEnabled() {
- updateSideFpsVisibilityParameters(
- isVisible = true,
- sfpsEnabled = false,
- fpsDetectionRunning = true,
- isUnlockingWithFpAllowed = true,
- isAnimatingAway = false
- )
- underTest.updateSideFpsVisibility()
- verify(repository).setSideFpsShowing(false)
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun testSideFpsVisibility_fpsDetectionNotRunning() {
- updateSideFpsVisibilityParameters(
- isVisible = true,
- sfpsEnabled = true,
- fpsDetectionRunning = false,
- isUnlockingWithFpAllowed = true,
- isAnimatingAway = false
- )
- underTest.updateSideFpsVisibility()
- verify(repository).setSideFpsShowing(false)
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun testSideFpsVisibility_UnlockingWithFpNotAllowed() {
- updateSideFpsVisibilityParameters(
- isVisible = true,
- sfpsEnabled = true,
- fpsDetectionRunning = true,
- isUnlockingWithFpAllowed = false,
- isAnimatingAway = false
- )
- underTest.updateSideFpsVisibility()
- verify(repository).setSideFpsShowing(false)
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun testSideFpsVisibility_AnimatingAway() {
- updateSideFpsVisibilityParameters(
- isVisible = true,
- sfpsEnabled = true,
- fpsDetectionRunning = true,
- isUnlockingWithFpAllowed = true,
- isAnimatingAway = true
- )
- underTest.updateSideFpsVisibility()
- verify(repository).setSideFpsShowing(false)
- }
-
@Test
fun delayBouncerWhenFaceAuthPossible() {
mainHandler.setMode(FakeHandler.Mode.QUEUEING)
@@ -491,22 +405,4 @@
verify(repository).setPrimaryShowingSoon(false)
}
}
-
- private fun updateSideFpsVisibilityParameters(
- isVisible: Boolean,
- sfpsEnabled: Boolean,
- fpsDetectionRunning: Boolean,
- isUnlockingWithFpAllowed: Boolean,
- isAnimatingAway: Boolean
- ) {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- whenever(repository.primaryBouncerShow.value).thenReturn(isVisible)
- resources.addOverride(R.bool.config_show_sidefps_hint_on_bouncer, sfpsEnabled)
- whenever(keyguardUpdateMonitor.isFingerprintDetectionRunning)
- .thenReturn(fpsDetectionRunning)
- whenever(keyguardUpdateMonitor.isUnlockingWithFingerprintAllowed)
- .thenReturn(isUnlockingWithFpAllowed)
- whenever(repository.primaryBouncerStartingDisappearAnimation.value)
- .thenReturn(if (isAnimatingAway) Runnable {} else null)
- }
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt
index cddbd1f..1a43501 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt
@@ -33,7 +33,6 @@
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor
import com.android.systemui.keyguard.DismissCallbackRegistry
import com.android.systemui.keyguard.data.repository.TrustRepository
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.utils.os.FakeHandler
@@ -66,9 +65,7 @@
@Mock private lateinit var faceAuthInteractor: DeviceEntryFaceAuthInteractor
lateinit var bouncerInteractor: PrimaryBouncerInteractor
- private val mainHandler by lazy {
- FakeHandler(Looper.getMainLooper())
- }
+ private val mainHandler by lazy { FakeHandler(Looper.getMainLooper()) }
val repository = FakeKeyguardBouncerRepository()
lateinit var underTest: KeyguardBouncerViewModel
@@ -108,46 +105,6 @@
job.cancel()
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun shouldUpdateSideFps_show() = runTest {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- var count = 0
- val job = underTest.shouldUpdateSideFps.onEach { count++ }.launchIn(this)
- repository.setPrimaryShow(true)
- // Run the tasks that are pending at this point of virtual time.
- runCurrent()
- assertThat(count).isEqualTo(1)
- job.cancel()
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun shouldUpdateSideFps_hide() = runTest {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- repository.setPrimaryShow(true)
- var count = 0
- val job = underTest.shouldUpdateSideFps.onEach { count++ }.launchIn(this)
- repository.setPrimaryShow(false)
- // Run the tasks that are pending at this point of virtual time.
- runCurrent()
- assertThat(count).isEqualTo(1)
- job.cancel()
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Test
- fun sideFpsShowing() = runTest {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- var sideFpsIsShowing = false
- val job = underTest.sideFpsShowing.onEach { sideFpsIsShowing = it }.launchIn(this)
- repository.setSideFpsShowing(true)
- // Run the tasks that are pending at this point of virtual time.
- runCurrent()
- assertThat(sideFpsIsShowing).isEqualTo(true)
- job.cancel()
- }
-
@Test
fun isShowing() = runTest {
var isShowing: Boolean? = null
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
index e8e1cab..4ddf3c9 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
@@ -39,7 +39,6 @@
import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.hardware.biometrics.BiometricRequestConstants;
import android.media.AudioManager;
import android.metrics.LogMaker;
import android.os.SystemClock;
@@ -73,9 +72,6 @@
import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.biometrics.FaceAuthAccessibilityDelegate;
-import com.android.systemui.biometrics.SideFpsController;
-import com.android.systemui.biometrics.SideFpsUiRequestSource;
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor;
import com.android.systemui.classifier.FalsingA11yDelegate;
@@ -103,15 +99,14 @@
import dagger.Lazy;
+import kotlinx.coroutines.Job;
+
import java.io.File;
import java.util.Arrays;
-import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Provider;
-import kotlinx.coroutines.Job;
-
/** Controller for {@link KeyguardSecurityContainer} */
@KeyguardBouncerScope
public class KeyguardSecurityContainerController extends ViewController<KeyguardSecurityContainer>
@@ -135,7 +130,6 @@
private final GlobalSettings mGlobalSettings;
private final FeatureFlags mFeatureFlags;
private final SessionTracker mSessionTracker;
- private final Optional<SideFpsController> mSideFpsController;
private final FalsingA11yDelegate mFalsingA11yDelegate;
private final DeviceEntryFaceAuthInteractor mDeviceEntryFaceAuthInteractor;
private final BouncerMessageInteractor mBouncerMessageInteractor;
@@ -457,7 +451,6 @@
FeatureFlags featureFlags,
GlobalSettings globalSettings,
SessionTracker sessionTracker,
- Optional<SideFpsController> sideFpsController,
FalsingA11yDelegate falsingA11yDelegate,
TelephonyManager telephonyManager,
ViewMediatorCallback viewMediatorCallback,
@@ -491,11 +484,6 @@
mFeatureFlags = featureFlags;
mGlobalSettings = globalSettings;
mSessionTracker = sessionTracker;
- if (SideFpsControllerRefactor.isEnabled()) {
- mSideFpsController = Optional.empty();
- } else {
- mSideFpsController = sideFpsController;
- }
mFalsingA11yDelegate = falsingA11yDelegate;
mTelephonyManager = telephonyManager;
mViewMediatorCallback = viewMediatorCallback;
@@ -578,28 +566,6 @@
mView.clearFocus();
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /**
- * Shows and hides the side finger print sensor animation.
- *
- * @param isVisible sets whether we show or hide the side fps animation
- */
- public void updateSideFpsVisibility(boolean isVisible) {
- SideFpsControllerRefactor.assertInLegacyMode();
- if (!mSideFpsController.isPresent()) {
- return;
- }
-
- if (isVisible) {
- mSideFpsController.get().show(
- SideFpsUiRequestSource.PRIMARY_BOUNCER,
- BiometricRequestConstants.REASON_AUTH_KEYGUARD
- );
- } else {
- mSideFpsController.get().hide(SideFpsUiRequestSource.PRIMARY_BOUNCER);
- }
- }
-
/**
* Shows the primary security screen for the user. This will be either the multi-selector
* or the user's security method.
diff --git a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java
index afea224..4bbc2d6 100644
--- a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java
+++ b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java
@@ -16,23 +16,14 @@
package com.android.keyguard.dagger;
-import static com.android.systemui.biometrics.SideFpsControllerKt.hasSideFpsSensor;
-
-import android.annotation.Nullable;
-import android.hardware.fingerprint.FingerprintManager;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.android.keyguard.KeyguardSecurityContainer;
import com.android.keyguard.KeyguardSecurityViewFlipper;
-import com.android.systemui.res.R;
-import com.android.systemui.biometrics.SideFpsController;
-import com.android.systemui.dagger.qualifiers.RootView;
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor;
-
-import java.util.Optional;
-
-import javax.inject.Provider;
+import com.android.systemui.dagger.qualifiers.RootView;
+import com.android.systemui.res.R;
import dagger.Module;
import dagger.Provides;
@@ -62,16 +53,4 @@
KeyguardSecurityContainer containerView) {
return containerView.findViewById(R.id.view_flipper);
}
-
- /** Provides {@link SideFpsController} if the device has the side fingerprint sensor. */
- @Provides
- @KeyguardBouncerScope
- static Optional<SideFpsController> providesOptionalSidefpsController(
- @Nullable FingerprintManager fingerprintManager,
- Provider<SideFpsController> sidefpsControllerProvider) {
- if (!hasSideFpsSensor(fingerprintManager)) {
- return Optional.empty();
- }
- return Optional.of(sidefpsControllerProvider.get());
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
index d85b81d..ca88d40d 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
@@ -71,7 +71,6 @@
import com.android.systemui.biometrics.domain.interactor.LogContextInteractor;
import com.android.systemui.biometrics.domain.interactor.PromptCredentialInteractor;
import com.android.systemui.biometrics.domain.interactor.PromptSelectorInteractor;
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor;
import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams;
import com.android.systemui.biometrics.ui.viewmodel.CredentialViewModel;
import com.android.systemui.biometrics.ui.viewmodel.PromptViewModel;
@@ -93,6 +92,9 @@
import kotlin.Unit;
+import kotlinx.coroutines.CoroutineScope;
+import kotlinx.coroutines.Job;
+
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -106,9 +108,6 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import kotlinx.coroutines.CoroutineScope;
-import kotlinx.coroutines.Job;
-
/**
* Receives messages sent from {@link com.android.server.biometrics.BiometricService} and shows the
* appropriate biometric UI (e.g. BiometricDialogView).
@@ -136,7 +135,6 @@
@Nullable private final FingerprintManager mFingerprintManager;
@Nullable private final FaceManager mFaceManager;
private final Provider<UdfpsController> mUdfpsControllerFactory;
- private final Provider<SideFpsController> mSidefpsControllerFactory;
private final CoroutineScope mApplicationCoroutineScope;
private Job mBiometricContextListenerJob = null;
@@ -163,7 +161,6 @@
@Nullable private UdfpsController mUdfpsController;
@Nullable private UdfpsOverlayParams mUdfpsOverlayParams;
@Nullable private IUdfpsRefreshRateRequestCallback mUdfpsRefreshRateRequestCallback;
- @Nullable private SideFpsController mSideFpsController;
@NonNull private Lazy<UdfpsLogger> mUdfpsLogger;
@VisibleForTesting IBiometricSysuiReceiver mReceiver;
@VisibleForTesting @NonNull final BiometricDisplayListener mOrientationListener;
@@ -320,14 +317,7 @@
this, mUdfpsLogger.get()));
mUdfpsBounds = mUdfpsProps.get(0).getLocation().getRect();
}
-
mSidefpsProps = !sidefpsProps.isEmpty() ? sidefpsProps : null;
- if (mSidefpsProps != null) {
- if (!SideFpsControllerRefactor.isEnabled()) {
- mSideFpsController = mSidefpsControllerFactory.get();
- }
- }
-
mFingerprintManager.registerBiometricStateListener(new BiometricStateListener() {
@Override
public void onEnrollmentsChanged(int userId, int sensorId, boolean hasEnrollments) {
@@ -738,7 +728,6 @@
@Nullable FingerprintManager fingerprintManager,
@Nullable FaceManager faceManager,
Provider<UdfpsController> udfpsControllerFactory,
- Provider<SideFpsController> sidefpsControllerFactory,
@NonNull DisplayManager displayManager,
@NonNull WakefulnessLifecycle wakefulnessLifecycle,
@NonNull AuthDialogPanelInteractionDetector panelInteractionDetector,
@@ -766,7 +755,6 @@
mFingerprintManager = fingerprintManager;
mFaceManager = faceManager;
mUdfpsControllerFactory = udfpsControllerFactory;
- mSidefpsControllerFactory = sidefpsControllerFactory;
mUdfpsLogger = udfpsLogger;
mDisplayManager = displayManager;
mWindowManager = windowManager;
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/SideFpsController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/SideFpsController.kt
deleted file mode 100644
index 85f63e9..0000000
--- a/packages/SystemUI/src/com/android/systemui/biometrics/SideFpsController.kt
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.systemui.biometrics
-
-import android.app.ActivityTaskManager
-import android.content.Context
-import android.content.res.Configuration
-import android.graphics.Color
-import android.graphics.PixelFormat
-import android.graphics.PorterDuff
-import android.graphics.PorterDuffColorFilter
-import android.graphics.Rect
-import android.hardware.biometrics.BiometricRequestConstants
-import android.hardware.biometrics.BiometricRequestConstants.REASON_AUTH_KEYGUARD
-import android.hardware.biometrics.BiometricRequestConstants.REASON_AUTH_SETTINGS
-import android.hardware.biometrics.SensorLocationInternal
-import android.hardware.display.DisplayManager
-import android.hardware.fingerprint.FingerprintManager
-import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
-import android.hardware.fingerprint.ISidefpsController
-import android.os.Handler
-import android.util.Log
-import android.util.RotationUtils
-import android.view.Display
-import android.view.DisplayInfo
-import android.view.Gravity
-import android.view.LayoutInflater
-import android.view.Surface
-import android.view.View
-import android.view.View.AccessibilityDelegate
-import android.view.View.INVISIBLE
-import android.view.View.VISIBLE
-import android.view.ViewPropertyAnimator
-import android.view.WindowManager
-import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION
-import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY
-import android.view.accessibility.AccessibilityEvent
-import androidx.annotation.RawRes
-import com.airbnb.lottie.LottieAnimationView
-import com.airbnb.lottie.LottieProperty
-import com.airbnb.lottie.model.KeyPath
-import com.android.app.animation.Interpolators
-import com.android.app.tracing.traceSection
-import com.android.internal.annotations.VisibleForTesting
-import com.android.keyguard.KeyguardPINView
-import com.android.systemui.Dumpable
-import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
-import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
-import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Application
-import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor
-import com.android.systemui.dump.DumpManager
-import com.android.systemui.res.R
-import com.android.systemui.util.boundsOnScreen
-import com.android.systemui.util.concurrency.DelayableExecutor
-import java.io.PrintWriter
-import javax.inject.Inject
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.launch
-
-private const val TAG = "SideFpsController"
-
-/**
- * Shows and hides the side fingerprint sensor (side-fps) overlay and handles side fps touch events.
- */
-@SysUISingleton
-class SideFpsController
-@Inject
-constructor(
- private val context: Context,
- private val layoutInflater: LayoutInflater,
- fingerprintManager: FingerprintManager?,
- private val windowManager: WindowManager,
- private val activityTaskManager: ActivityTaskManager,
- displayManager: DisplayManager,
- private val displayStateInteractor: DisplayStateInteractor,
- @Main private val mainExecutor: DelayableExecutor,
- @Main private val handler: Handler,
- private val alternateBouncerInteractor: AlternateBouncerInteractor,
- @Application private val applicationScope: CoroutineScope,
- dumpManager: DumpManager,
- fpsUnlockTracker: FpsUnlockTracker
-) : Dumpable {
- private val requests: HashSet<SideFpsUiRequestSource> = HashSet()
-
- @VisibleForTesting
- val sensorProps: FingerprintSensorPropertiesInternal =
- fingerprintManager?.sideFpsSensorProperties
- ?: throw IllegalStateException("no side fingerprint sensor")
-
- @VisibleForTesting
- val orientationReasonListener =
- OrientationReasonListener(
- context,
- displayManager,
- handler,
- sensorProps,
- { reason -> onOrientationChanged(reason) },
- BiometricRequestConstants.REASON_UNKNOWN
- )
-
- @VisibleForTesting val orientationListener = orientationReasonListener.orientationListener
-
- private val isReverseDefaultRotation =
- context.resources.getBoolean(com.android.internal.R.bool.config_reverseDefaultRotation)
-
- private var overlayShowAnimator: ViewPropertyAnimator? = null
-
- private var overlayView: View? = null
- set(value) {
- field?.let { oldView ->
- val lottie = oldView.requireViewById(R.id.sidefps_animation) as LottieAnimationView
- lottie.pauseAnimation()
- lottie.removeAllLottieOnCompositionLoadedListener()
- windowManager.removeView(oldView)
- orientationListener.disable()
- }
- overlayShowAnimator?.cancel()
- overlayShowAnimator = null
-
- field = value
- field?.let { newView ->
- if (requests.contains(SideFpsUiRequestSource.PRIMARY_BOUNCER)) {
- newView.alpha = 0f
- overlayShowAnimator =
- newView
- .animate()
- .alpha(1f)
- .setDuration(KeyguardPINView.ANIMATION_DURATION)
- .setInterpolator(Interpolators.ALPHA_IN)
- }
- windowManager.addView(newView, overlayViewParams)
- orientationListener.enable()
- overlayShowAnimator?.start()
- }
- }
- @VisibleForTesting var overlayOffsets: SensorLocationInternal = SensorLocationInternal.DEFAULT
-
- private val displayInfo = DisplayInfo()
-
- private val overlayViewParams =
- WindowManager.LayoutParams(
- WindowManager.LayoutParams.WRAP_CONTENT,
- WindowManager.LayoutParams.WRAP_CONTENT,
- WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
- Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS,
- PixelFormat.TRANSLUCENT
- )
- .apply {
- title = TAG
- fitInsetsTypes = 0 // overrides default, avoiding status bars during layout
- gravity = Gravity.TOP or Gravity.LEFT
- layoutInDisplayCutoutMode =
- WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
- privateFlags = PRIVATE_FLAG_TRUSTED_OVERLAY or PRIVATE_FLAG_NO_MOVE_ANIMATION
- }
-
- init {
- if (!SideFpsControllerRefactor.isEnabled) {
- fpsUnlockTracker.startTracking()
- fingerprintManager?.setSidefpsController(
- object : ISidefpsController.Stub() {
- override fun show(
- sensorId: Int,
- @BiometricRequestConstants.RequestReason reason: Int
- ) =
- if (reason.isReasonToAutoShow(activityTaskManager)) {
- show(SideFpsUiRequestSource.AUTO_SHOW, reason)
- } else {
- hide(SideFpsUiRequestSource.AUTO_SHOW)
- }
-
- override fun hide(sensorId: Int) = hide(SideFpsUiRequestSource.AUTO_SHOW)
- }
- )
- listenForAlternateBouncerVisibility()
-
- dumpManager.registerDumpable(this)
- }
- }
-
- private fun listenForAlternateBouncerVisibility() {
- if (!DeviceEntryUdfpsRefactor.isEnabled) {
- alternateBouncerInteractor.setAlternateBouncerUIAvailable(true, "SideFpsController")
- }
-
- applicationScope.launch {
- alternateBouncerInteractor.isVisible.collect { isVisible: Boolean ->
- if (isVisible) {
- show(SideFpsUiRequestSource.ALTERNATE_BOUNCER, REASON_AUTH_KEYGUARD)
- } else {
- hide(SideFpsUiRequestSource.ALTERNATE_BOUNCER)
- }
- }
- }
- }
-
- /** Shows the side fps overlay if not already shown. */
- fun show(
- request: SideFpsUiRequestSource,
- @BiometricRequestConstants.RequestReason
- reason: Int = BiometricRequestConstants.REASON_UNKNOWN
- ) {
- SideFpsControllerRefactor.assertInLegacyMode()
- if (!displayStateInteractor.isInRearDisplayMode.value) {
- requests.add(request)
- mainExecutor.execute {
- if (overlayView == null) {
- traceSection(
- "SideFpsController#show(request=${request.name}, reason=$reason)"
- ) {
- createOverlayForDisplay(reason)
- }
- } else {
- Log.v(TAG, "overlay already shown")
- }
- }
- }
- }
-
- /** Hides the fps overlay if shown. */
- fun hide(request: SideFpsUiRequestSource) {
- SideFpsControllerRefactor.assertInLegacyMode()
- requests.remove(request)
- mainExecutor.execute {
- if (requests.isEmpty()) {
- traceSection("SideFpsController#hide(${request.name})") { overlayView = null }
- }
- }
- }
-
- /** Hide the arrow indicator. */
- fun hideIndicator() {
- SideFpsControllerRefactor.assertInLegacyMode()
- val lottieAnimationView =
- overlayView?.findViewById(R.id.sidefps_animation) as LottieAnimationView?
- lottieAnimationView?.visibility = INVISIBLE
- }
-
- /** Show the arrow indicator. */
- fun showIndicator() {
- SideFpsControllerRefactor.assertInLegacyMode()
- val lottieAnimationView =
- overlayView?.findViewById(R.id.sidefps_animation) as LottieAnimationView?
- lottieAnimationView?.visibility = VISIBLE
- }
-
- override fun dump(pw: PrintWriter, args: Array<out String>) {
- pw.println("requests:")
- for (requestSource in requests) {
- pw.println(" $requestSource.name")
- }
-
- pw.println("overlayView:")
- pw.println(" width=${overlayView?.width}")
- pw.println(" height=${overlayView?.height}")
- pw.println(" boundsOnScreen=${overlayView?.boundsOnScreen}")
-
- pw.println("displayStateInteractor:")
- pw.println(" isInRearDisplayMode=${displayStateInteractor?.isInRearDisplayMode?.value}")
-
- pw.println("sensorProps:")
- pw.println(" displayId=${displayInfo.uniqueId}")
- pw.println(" sensorType=${sensorProps?.sensorType}")
- pw.println(" location=${sensorProps?.getLocation(displayInfo.uniqueId)}")
- pw.println("lottieAnimationView:")
- pw.println(
- " visibility=${overlayView?.findViewById<View>(R.id.sidefps_animation)?.visibility}"
- )
-
- pw.println("overlayOffsets=$overlayOffsets")
- pw.println("isReverseDefaultRotation=$isReverseDefaultRotation")
- pw.println("currentRotation=${displayInfo.rotation}")
- }
-
- private fun onOrientationChanged(@BiometricRequestConstants.RequestReason reason: Int) {
- if (overlayView?.isAttachedToWindow == true) {
- createOverlayForDisplay(reason)
- }
- }
-
- private fun createOverlayForDisplay(@BiometricRequestConstants.RequestReason reason: Int) {
- val view = layoutInflater.inflate(R.layout.sidefps_view, null, false)
- overlayView = view
- val display = context.display!!
- // b/284098873 `context.display.rotation` may not up-to-date, we use displayInfo.rotation
- display.getDisplayInfo(displayInfo)
- val offsets =
- sensorProps.getLocation(display.uniqueId).let { location ->
- if (location == null) {
- Log.w(TAG, "No location specified for display: ${display.uniqueId}")
- }
- location ?: sensorProps.location
- }
- overlayOffsets = offsets
-
- val lottie = view.requireViewById(R.id.sidefps_animation) as LottieAnimationView
- view.rotation =
- display.asSideFpsAnimationRotation(
- offsets.isYAligned(),
- getRotationFromDefault(displayInfo.rotation)
- )
- lottie.setAnimation(
- display.asSideFpsAnimation(
- offsets.isYAligned(),
- getRotationFromDefault(displayInfo.rotation)
- )
- )
- lottie.addLottieOnCompositionLoadedListener {
- // Check that view is not stale, and that overlayView has not been hidden/removed
- if (overlayView?.isAttachedToWindow == true && overlayView == view) {
- updateOverlayParams(display, it.bounds)
- }
- }
- orientationReasonListener.reason = reason
- lottie.addOverlayDynamicColor(context, reason)
-
- /**
- * Intercepts TYPE_WINDOW_STATE_CHANGED accessibility event, preventing Talkback from
- * speaking @string/accessibility_fingerprint_label twice when sensor location indicator is
- * in focus
- */
- view.setAccessibilityDelegate(
- object : AccessibilityDelegate() {
- override fun dispatchPopulateAccessibilityEvent(
- host: View,
- event: AccessibilityEvent
- ): Boolean {
- return if (
- event.getEventType() === AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
- ) {
- true
- } else {
- super.dispatchPopulateAccessibilityEvent(host, event)
- }
- }
- }
- )
- }
-
- @VisibleForTesting
- fun updateOverlayParams(display: Display, bounds: Rect) {
- val isNaturalOrientation = display.isNaturalOrientation()
- val isDefaultOrientation =
- if (isReverseDefaultRotation) !isNaturalOrientation else isNaturalOrientation
- val size = windowManager.maximumWindowMetrics.bounds
-
- val displayWidth = if (isDefaultOrientation) size.width() else size.height()
- val displayHeight = if (isDefaultOrientation) size.height() else size.width()
- val boundsWidth = if (isDefaultOrientation) bounds.width() else bounds.height()
- val boundsHeight = if (isDefaultOrientation) bounds.height() else bounds.width()
-
- val sensorBounds =
- if (overlayOffsets.isYAligned()) {
- Rect(
- displayWidth - boundsWidth,
- overlayOffsets.sensorLocationY,
- displayWidth,
- overlayOffsets.sensorLocationY + boundsHeight
- )
- } else {
- Rect(
- overlayOffsets.sensorLocationX,
- 0,
- overlayOffsets.sensorLocationX + boundsWidth,
- boundsHeight
- )
- }
-
- RotationUtils.rotateBounds(
- sensorBounds,
- Rect(0, 0, displayWidth, displayHeight),
- getRotationFromDefault(display.rotation)
- )
-
- overlayViewParams.x = sensorBounds.left
- overlayViewParams.y = sensorBounds.top
-
- windowManager.updateViewLayout(overlayView, overlayViewParams)
- }
-
- private fun getRotationFromDefault(rotation: Int): Int =
- if (isReverseDefaultRotation) (rotation + 1) % 4 else rotation
-}
-
-private val FingerprintManager?.sideFpsSensorProperties: FingerprintSensorPropertiesInternal?
- get() = this?.sensorPropertiesInternal?.firstOrNull { it.isAnySidefpsType }
-
-/** Returns [True] when the device has a side fingerprint sensor. */
-fun FingerprintManager?.hasSideFpsSensor(): Boolean = this?.sideFpsSensorProperties != null
-
-@BiometricRequestConstants.RequestReason
-private fun Int.isReasonToAutoShow(activityTaskManager: ActivityTaskManager): Boolean =
- when (this) {
- REASON_AUTH_KEYGUARD -> false
- REASON_AUTH_SETTINGS ->
- when (activityTaskManager.topClass()) {
- // TODO(b/186176653): exclude fingerprint overlays from this list view
- "com.android.settings.biometrics.fingerprint.FingerprintSettings" -> false
- else -> true
- }
- else -> true
- }
-
-private fun ActivityTaskManager.topClass(): String =
- getTasks(1).firstOrNull()?.topActivity?.className ?: ""
-
-@RawRes
-private fun Display.asSideFpsAnimation(yAligned: Boolean, rotationFromDefault: Int): Int =
- when (rotationFromDefault) {
- Surface.ROTATION_0 -> if (yAligned) R.raw.sfps_pulse else R.raw.sfps_pulse_landscape
- Surface.ROTATION_180 -> if (yAligned) R.raw.sfps_pulse else R.raw.sfps_pulse_landscape
- else -> if (yAligned) R.raw.sfps_pulse_landscape else R.raw.sfps_pulse
- }
-
-private fun Display.asSideFpsAnimationRotation(yAligned: Boolean, rotationFromDefault: Int): Float =
- when (rotationFromDefault) {
- Surface.ROTATION_90 -> if (yAligned) 0f else 180f
- Surface.ROTATION_180 -> 180f
- Surface.ROTATION_270 -> if (yAligned) 180f else 0f
- else -> 0f
- }
-
-private fun SensorLocationInternal.isYAligned(): Boolean = sensorLocationY != 0
-
-private fun Display.isNaturalOrientation(): Boolean =
- rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180
-
-private fun LottieAnimationView.addOverlayDynamicColor(
- context: Context,
- @BiometricRequestConstants.RequestReason reason: Int
-) {
- fun update() {
- val isKeyguard = reason == REASON_AUTH_KEYGUARD
- if (isKeyguard) {
- val color =
- com.android.settingslib.Utils.getColorAttrDefaultColor(
- context,
- com.android.internal.R.attr.materialColorPrimaryFixed
- )
- val outerRimColor =
- com.android.settingslib.Utils.getColorAttrDefaultColor(
- context,
- com.android.internal.R.attr.materialColorPrimaryFixedDim
- )
- val chevronFill =
- com.android.settingslib.Utils.getColorAttrDefaultColor(
- context,
- com.android.internal.R.attr.materialColorOnPrimaryFixed
- )
- addValueCallback(KeyPath(".blue600", "**"), LottieProperty.COLOR_FILTER) {
- PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)
- }
- addValueCallback(KeyPath(".blue400", "**"), LottieProperty.COLOR_FILTER) {
- PorterDuffColorFilter(outerRimColor, PorterDuff.Mode.SRC_ATOP)
- }
- addValueCallback(KeyPath(".black", "**"), LottieProperty.COLOR_FILTER) {
- PorterDuffColorFilter(chevronFill, PorterDuff.Mode.SRC_ATOP)
- }
- } else {
- if (!isDarkMode(context)) {
- addValueCallback(KeyPath(".black", "**"), LottieProperty.COLOR_FILTER) {
- PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP)
- }
- }
- for (key in listOf(".blue600", ".blue400")) {
- addValueCallback(KeyPath(key, "**"), LottieProperty.COLOR_FILTER) {
- PorterDuffColorFilter(
- context.getColor(
- com.android.settingslib.color.R.color.settingslib_color_blue400
- ),
- PorterDuff.Mode.SRC_ATOP
- )
- }
- }
- }
- }
-
- if (composition != null) {
- update()
- } else {
- addLottieOnCompositionLoadedListener { update() }
- }
-}
-
-private fun isDarkMode(context: Context): Boolean {
- val darkMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
- return darkMode == Configuration.UI_MODE_NIGHT_YES
-}
-
-@VisibleForTesting
-class OrientationReasonListener(
- context: Context,
- displayManager: DisplayManager,
- handler: Handler,
- sensorProps: FingerprintSensorPropertiesInternal,
- onOrientationChanged: (reason: Int) -> Unit,
- @BiometricRequestConstants.RequestReason var reason: Int
-) {
- val orientationListener =
- BiometricDisplayListener(
- context,
- displayManager,
- handler,
- BiometricDisplayListener.SensorType.SideFingerprint(sensorProps)
- ) {
- onOrientationChanged(reason)
- }
-}
-
-/**
- * The source of a request to show the side fps visual indicator. This is distinct from
- * [BiometricRequestConstants] which corresponds with the reason fingerprint authentication is
- * requested.
- */
-enum class SideFpsUiRequestSource {
- /** see [isReasonToAutoShow] */
- AUTO_SHOW,
- /** Pin, pattern or password bouncer */
- PRIMARY_BOUNCER,
- ALTERNATE_BOUNCER,
-}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/shared/SideFpsControllerRefactor.kt b/packages/SystemUI/src/com/android/systemui/biometrics/shared/SideFpsControllerRefactor.kt
deleted file mode 100644
index 899b07e..0000000
--- a/packages/SystemUI/src/com/android/systemui/biometrics/shared/SideFpsControllerRefactor.kt
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.biometrics.shared
-
-import com.android.systemui.flags.FlagToken
-import com.android.systemui.flags.RefactorFlagUtils
-import com.android.systemui.shared.Flags
-
-/** Helper for reading or using the sidefps controller refactor flag state. */
-@Suppress("NOTHING_TO_INLINE")
-object SideFpsControllerRefactor {
- /** The aconfig flag name */
- const val FLAG_NAME = Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
-
- /** A token used for dependency declaration */
- val token: FlagToken
- get() = FlagToken(FLAG_NAME, isEnabled)
-
- /** Is the refactor enabled */
- @JvmStatic
- inline val isEnabled
- get() = Flags.sidefpsControllerRefactor()
-
- /**
- * Called to ensure code is only run when the flag is enabled. This protects users from the
- * unintended behaviors caused by accidentally running new logic, while also crashing on an eng
- * build to ensure that the refactor author catches issues in testing.
- */
- @JvmStatic
- inline fun isUnexpectedlyInLegacyMode() =
- RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, FLAG_NAME)
-
- /**
- * Called to ensure code is only run when the flag is disabled. This will throw an exception if
- * the flag is enabled to ensure that the refactor author catches issues in testing.
- */
- @JvmStatic
- inline fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, FLAG_NAME)
-}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt
index 9949e4c..245817e 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt
@@ -36,7 +36,6 @@
import com.android.systemui.biometrics.domain.interactor.BiometricStatusInteractor
import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
import com.android.systemui.biometrics.domain.interactor.SideFpsSensorInteractor
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.biometrics.shared.model.AuthenticationReason.NotRunning
import com.android.systemui.biometrics.shared.model.LottieCallback
import com.android.systemui.biometrics.ui.viewmodel.SideFpsOverlayViewModel
@@ -73,10 +72,6 @@
) : CoreStartable {
override fun start() {
- if (!SideFpsControllerRefactor.isEnabled) {
- return
- }
-
applicationScope
.launch {
sfpsSensorInteractor.get().isAvailable.collect { isSfpsAvailable ->
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/data/repository/KeyguardBouncerRepository.kt b/packages/SystemUI/src/com/android/systemui/bouncer/data/repository/KeyguardBouncerRepository.kt
index d0ff185..346ea54 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/data/repository/KeyguardBouncerRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/data/repository/KeyguardBouncerRepository.kt
@@ -18,7 +18,6 @@
import android.os.Build
import android.util.Log
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EXPANSION_HIDDEN
import com.android.systemui.bouncer.shared.model.BouncerDismissActionModel
import com.android.systemui.bouncer.shared.model.BouncerShowMessageModel
@@ -89,7 +88,6 @@
val resourceUpdateRequests: StateFlow<Boolean>
val alternateBouncerVisible: StateFlow<Boolean>
val alternateBouncerUIAvailable: StateFlow<Boolean>
- val sideFpsShowing: StateFlow<Boolean>
/** Action that should be run right after the bouncer is dismissed. */
var bouncerDismissActionModel: BouncerDismissActionModel?
@@ -125,9 +123,6 @@
fun setAlternateVisible(isVisible: Boolean)
fun setAlternateBouncerUIAvailable(isAvailable: Boolean)
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- fun setSideFpsShowing(isShowing: Boolean)
}
@SysUISingleton
@@ -196,8 +191,6 @@
private val _alternateBouncerUIAvailable = MutableStateFlow(false)
override val alternateBouncerUIAvailable: StateFlow<Boolean> =
_alternateBouncerUIAvailable.asStateFlow()
- private val _sideFpsShowing = MutableStateFlow(false)
- override val sideFpsShowing: StateFlow<Boolean> = _sideFpsShowing.asStateFlow()
init {
setUpLogging()
@@ -269,12 +262,6 @@
_isBackButtonEnabled.value = isBackButtonEnabled
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- override fun setSideFpsShowing(isShowing: Boolean) {
- SideFpsControllerRefactor.assertInLegacyMode()
- _sideFpsShowing.value = isShowing
- }
-
/** Sets up logs for state flows. */
private fun setUpLogging() {
if (!Build.IS_DEBUGGABLE) {
@@ -321,9 +308,6 @@
alternateBouncerUIAvailable
.logDiffsForTable(buffer, "", "IsAlternateBouncerUIAvailable", false)
.launchIn(applicationScope)
- sideFpsShowing
- .logDiffsForTable(buffer, "", "isSideFpsShowing", false)
- .launchIn(applicationScope)
}
companion object {
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt
index d88b3dc..a91635b 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractor.kt
@@ -18,18 +18,14 @@
import android.content.Context
import android.content.res.ColorStateList
-import android.hardware.biometrics.BiometricSourceType
import android.os.Handler
import android.os.Trace
import android.util.Log
import android.view.View
-import com.android.keyguard.KeyguardConstants
import com.android.keyguard.KeyguardSecurityModel
import com.android.keyguard.KeyguardUpdateMonitor
-import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.systemui.DejankUtils
import com.android.systemui.Flags
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepository
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EXPANSION_HIDDEN
@@ -122,31 +118,9 @@
/** Allow for interaction when just about fully visible */
val isInteractable: Flow<Boolean> = bouncerExpansion.map { it > 0.9 }
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- val sideFpsShowing: Flow<Boolean> = repository.sideFpsShowing
private var currentUserActiveUnlockRunning = false
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /** This callback needs to be a class field so it does not get garbage collected. */
- val keyguardUpdateMonitorCallback =
- object : KeyguardUpdateMonitorCallback() {
- override fun onBiometricRunningStateChanged(
- running: Boolean,
- biometricSourceType: BiometricSourceType?
- ) {
- updateSideFpsVisibility()
- }
-
- override fun onStrongAuthStateChanged(userId: Int) {
- updateSideFpsVisibility()
- }
- }
-
init {
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- if (!SideFpsControllerRefactor.isEnabled) {
- keyguardUpdateMonitor.registerCallback(keyguardUpdateMonitorCallback)
- }
applicationScope.launch {
trustRepository.isCurrentUserActiveUnlockRunning.collect {
currentUserActiveUnlockRunning = it
@@ -357,36 +331,6 @@
repository.setPrimaryStartDisappearAnimation(runnable)
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /** Determine whether to show the side fps animation. */
- fun updateSideFpsVisibility() {
- SideFpsControllerRefactor.assertInLegacyMode()
- val sfpsEnabled: Boolean =
- context.resources.getBoolean(R.bool.config_show_sidefps_hint_on_bouncer)
- val fpsDetectionRunning: Boolean = keyguardUpdateMonitor.isFingerprintDetectionRunning
- val isUnlockingWithFpAllowed: Boolean =
- keyguardUpdateMonitor.isUnlockingWithFingerprintAllowed
- val toShow =
- (isBouncerShowing() &&
- sfpsEnabled &&
- fpsDetectionRunning &&
- isUnlockingWithFpAllowed &&
- !isAnimatingAway())
-
- if (KeyguardConstants.DEBUG) {
- Log.d(
- TAG,
- ("sideFpsToShow=$toShow\n" +
- "isBouncerShowing=${isBouncerShowing()}\n" +
- "configEnabled=$sfpsEnabled\n" +
- "fpsDetectionRunning=$fpsDetectionRunning\n" +
- "isUnlockingWithFpAllowed=$isUnlockingWithFpAllowed\n" +
- "isAnimatingAway=${isAnimatingAway()}")
- )
- }
- repository.setSideFpsShowing(toShow)
- }
-
/** Returns whether bouncer is fully showing. */
fun isFullyShowing(): Boolean {
return (repository.primaryBouncerShowingSoon.value || isBouncerShowing()) &&
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt
index cc387e9..b76520b 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt
@@ -27,7 +27,6 @@
import com.android.keyguard.KeyguardSecurityModel
import com.android.keyguard.KeyguardSecurityView
import com.android.keyguard.dagger.KeyguardBouncerComponent
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EXPANSION_VISIBLE
import com.android.systemui.bouncer.ui.BouncerViewDelegate
@@ -231,23 +230,6 @@
.collect { view.systemUiVisibility = it }
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- if (!SideFpsControllerRefactor.isEnabled) {
- launch {
- viewModel.shouldUpdateSideFps.collect {
- viewModel.updateSideFpsVisibility()
- }
- }
- }
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- if (!SideFpsControllerRefactor.isEnabled) {
- launch {
- viewModel.sideFpsShowing.collect {
- securityContainerController.updateSideFpsVisibility(it)
- }
- }
- }
awaitCancellation()
} finally {
viewModel.setBouncerViewDelegate(null)
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModel.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModel.kt
index e1fea5f..3fef766 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModel.kt
@@ -17,7 +17,6 @@
package com.android.systemui.bouncer.ui.viewmodel
import android.view.View
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.model.BouncerShowMessageModel
import com.android.systemui.bouncer.ui.BouncerView
@@ -25,9 +24,7 @@
import javax.inject.Inject
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.merge
/** Models UI state for the lock screen bouncer; handles user input. */
@ExperimentalCoroutinesApi
@@ -64,19 +61,6 @@
/** Observe whether keyguard is authenticated already. */
val keyguardAuthenticated: Flow<Boolean> = interactor.keyguardAuthenticatedBiometrics
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /** Observe whether the side fps is showing. */
- val sideFpsShowing: Flow<Boolean> = interactor.sideFpsShowing
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /** Observe whether we should update fps is showing. */
- val shouldUpdateSideFps: Flow<Unit> =
- merge(
- interactor.isShowing.map {},
- interactor.startingToHide,
- interactor.startingDisappearAnimation.filterNotNull().map {}
- )
-
/** Observe whether we want to update resources. */
fun notifyUpdateResources() {
interactor.notifyUpdatedResources()
@@ -92,12 +76,6 @@
interactor.onMessageShown()
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- fun updateSideFpsVisibility() {
- SideFpsControllerRefactor.assertInLegacyMode()
- interactor.updateSideFpsVisibility()
- }
-
/** Observe whether back button is enabled. */
fun observeOnIsBackButtonEnabled(systemUiVisibility: () -> Int): Flow<Int> {
return interactor.isBackButtonEnabled.map { enabled ->
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/SideFpsProgressBarViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/SideFpsProgressBarViewBinder.kt
index 9a6dca3..76edda3 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/SideFpsProgressBarViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/SideFpsProgressBarViewBinder.kt
@@ -20,8 +20,6 @@
import android.graphics.Point
import com.android.systemui.CoreStartable
import com.android.systemui.Flags
-import com.android.systemui.biometrics.SideFpsController
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.ui.view.SideFpsProgressBar
@@ -38,7 +36,7 @@
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.launch
-private const val spfsProgressBarCommand = "sfps-progress-bar"
+private const val sfpsProgressBarCommand = "sfps-progress-bar"
@SysUISingleton
class SideFpsProgressBarViewBinder
@@ -47,8 +45,6 @@
private val viewModel: SideFpsProgressBarViewModel,
private val view: SideFpsProgressBar,
@Application private val applicationScope: CoroutineScope,
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- private val sfpsController: dagger.Lazy<SideFpsController>,
private val logger: SideFpsLogger,
private val commandRegistry: CommandRegistry,
) : CoreStartable {
@@ -61,7 +57,7 @@
// not required.
var layoutJob: Job? = null
var progressJob: Job? = null
- commandRegistry.registerCommand(spfsProgressBarCommand) { SfpsProgressBarCommand() }
+ commandRegistry.registerCommand(sfpsProgressBarCommand) { SfpsProgressBarCommand() }
applicationScope.launch {
viewModel.isProlongedTouchRequiredForAuthentication.collectLatest { enabled ->
logger.isProlongedTouchRequiredForAuthenticationChanged(enabled)
@@ -109,17 +105,6 @@
) {
logger.sfpsProgressBarStateChanged(visible, location, fpDetectRunning, length, rotation)
view.updateView(visible, location, length, thickness, rotation)
- // We have to hide the SFPS indicator as the progress bar will
- // be shown at the same location
- if (!SideFpsControllerRefactor.isEnabled) {
- if (visible) {
- logger.hidingSfpsIndicator()
- sfpsController.get().hideIndicator()
- } else if (fpDetectRunning) {
- logger.showingSfpsIndicator()
- sfpsController.get().showIndicator()
- }
- }
}
inner class SfpsProgressBarCommand : Command {
@@ -164,7 +149,7 @@
}
override fun help(pw: PrintWriter) {
- pw.println("Usage: adb shell cmd statusbar $spfsProgressBarCommand <command>")
+ pw.println("Usage: adb shell cmd statusbar $sfpsProgressBarCommand <command>")
pw.println("Available commands:")
pw.println(" show x y width height rotation")
pw.println(" hide")
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
index d48b600..b3e845f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/data/repository/BiometricStatusRepositoryTest.kt
@@ -36,7 +36,6 @@
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.shared.model.AcquiredFingerprintAuthenticationStatus
import com.android.systemui.kosmos.testScope
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
@@ -65,8 +64,8 @@
@Before
fun setUp() {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
- underTest = BiometricStatusRepositoryImpl(kosmos.testScope.backgroundScope, biometricManager)
+ underTest =
+ BiometricStatusRepositoryImpl(kosmos.testScope.backgroundScope, biometricManager)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
index be5c7bc..4cff3e6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/interactor/BiometricStatusInteractorImplTest.kt
@@ -29,7 +29,6 @@
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.shared.model.AcquiredFingerprintAuthenticationStatus
import com.android.systemui.kosmos.testScope
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -51,7 +50,6 @@
@Before
fun setup() {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
underTest = kosmos.biometricStatusInteractor
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
index a603be4..01d9df8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt
@@ -78,7 +78,6 @@
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.statusbar.phone.dozeServiceHost
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.testKosmos
@@ -175,8 +174,6 @@
@Before
fun setup() {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
-
allowTestableLooperAsMainThread() // repeatWhenAttached requires the main thread
mContext = spy(mContext)
@@ -203,8 +200,11 @@
)
biometricStatusInteractor =
- BiometricStatusInteractorImpl(activityTaskManager, biometricStatusRepository,
- fingerprintPropertyRepository)
+ BiometricStatusInteractorImpl(
+ activityTaskManager,
+ biometricStatusRepository,
+ fingerprintPropertyRepository
+ )
displayStateInteractor =
DisplayStateInteractorImpl(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
index 415da02..05ec64e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModelTest.kt
@@ -77,7 +77,6 @@
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.statusbar.phone.dozeServiceHost
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.testKosmos
@@ -176,8 +175,6 @@
@Before
fun setup() {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
-
mContext = spy(mContext)
val resources = mContext.resources
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
index dc7f372..472d045 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractorTest.kt
@@ -42,7 +42,6 @@
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
-import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.testKosmos
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
@@ -86,8 +85,6 @@
@Before
fun setup() {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
-
primaryBouncerInteractor =
PrimaryBouncerInteractor(
bouncerRepository,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/data/repository/FakeKeyguardBouncerRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/data/repository/FakeKeyguardBouncerRepository.kt
index 8010261..4e3cbae 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/data/repository/FakeKeyguardBouncerRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/data/repository/FakeKeyguardBouncerRepository.kt
@@ -1,6 +1,5 @@
package com.android.systemui.bouncer.data.repository
-import com.android.systemui.biometrics.shared.SideFpsControllerRefactor
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
import com.android.systemui.bouncer.shared.model.BouncerDismissActionModel
import com.android.systemui.bouncer.shared.model.BouncerShowMessageModel
@@ -11,7 +10,6 @@
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow
@@ -52,8 +50,6 @@
override var lastAlternateBouncerVisibleTime: Long = 0L
private val _isAlternateBouncerUIAvailable = MutableStateFlow<Boolean>(false)
override val alternateBouncerUIAvailable = _isAlternateBouncerUIAvailable.asStateFlow()
- private val _sideFpsShowing: MutableStateFlow<Boolean> = MutableStateFlow(false)
- override val sideFpsShowing: StateFlow<Boolean> = _sideFpsShowing.asStateFlow()
override var bouncerDismissActionModel: BouncerDismissActionModel? = null
override fun setPrimaryScrimmed(isScrimmed: Boolean) {
@@ -115,12 +111,6 @@
override fun setIsBackButtonEnabled(isBackButtonEnabled: Boolean) {
_isBackButtonEnabled.value = isBackButtonEnabled
}
-
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- override fun setSideFpsShowing(isShowing: Boolean) {
- SideFpsControllerRefactor.assertInLegacyMode()
- _sideFpsShowing.value = isShowing
- }
}
@Module
diff --git a/services/core/java/com/android/server/biometrics/sensors/SensorOverlays.java b/services/core/java/com/android/server/biometrics/sensors/SensorOverlays.java
index 3d20efc..f5a2f34 100644
--- a/services/core/java/com/android/server/biometrics/sensors/SensorOverlays.java
+++ b/services/core/java/com/android/server/biometrics/sensors/SensorOverlays.java
@@ -16,12 +16,10 @@
package com.android.server.biometrics.sensors;
-import static com.android.systemui.shared.Flags.sidefpsControllerRefactor;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.hardware.biometrics.BiometricRequestConstants;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.hardware.fingerprint.IUdfpsOverlayControllerCallback;
import android.os.RemoteException;
@@ -45,22 +43,6 @@
@NonNull private final Optional<IUdfpsOverlayController> mUdfpsOverlayController;
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @NonNull private final Optional<ISidefpsController> mSidefpsController;
-
- /**
- * Create an overlay controller for each modality.
- *
- * @param udfpsOverlayController under display fps or null if not present on device
- * @param sidefpsController side fps or null if not present on device
- */
- public SensorOverlays(
- @Nullable IUdfpsOverlayController udfpsOverlayController,
- @Nullable ISidefpsController sidefpsController) {
- mUdfpsOverlayController = Optional.ofNullable(udfpsOverlayController);
- mSidefpsController = Optional.ofNullable(sidefpsController);
- }
-
/**
* Create an overlay controller for each modality.
*
@@ -68,8 +50,6 @@
*/
public SensorOverlays(@Nullable IUdfpsOverlayController udfpsOverlayController) {
mUdfpsOverlayController = Optional.ofNullable(udfpsOverlayController);
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- mSidefpsController = Optional.empty();
}
/**
@@ -81,16 +61,6 @@
*/
public void show(int sensorId, @BiometricRequestConstants.RequestReason int reason,
@NonNull AcquisitionClient<?> client) {
- if (!sidefpsControllerRefactor()) {
- if (mSidefpsController.isPresent()) {
- try {
- mSidefpsController.get().show(sensorId, reason);
- } catch (RemoteException e) {
- Slog.e(TAG, "Remote exception when showing the side-fps overlay", e);
- }
- }
- }
-
if (mUdfpsOverlayController.isPresent()) {
final IUdfpsOverlayControllerCallback callback =
new IUdfpsOverlayControllerCallback.Stub() {
@@ -115,16 +85,6 @@
* @param sensorId sensor id
*/
public void hide(int sensorId) {
- if (!sidefpsControllerRefactor()) {
- if (mSidefpsController.isPresent()) {
- try {
- mSidefpsController.get().hide(sensorId);
- } catch (RemoteException e) {
- Slog.e(TAG, "Remote exception when hiding the side-fps overlay", e);
- }
- }
- }
-
if (mUdfpsOverlayController.isPresent()) {
try {
mUdfpsOverlayController.get().hideUdfpsOverlay(sensorId);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
index deda93c7..4c86f57 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
@@ -57,7 +57,6 @@
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
import android.hardware.fingerprint.IFingerprintService;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.Binder;
import android.os.Build;
@@ -974,17 +973,6 @@
}
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
- @Override
- public void setSidefpsController(@NonNull ISidefpsController controller) {
- super.setSidefpsController_enforcePermission();
-
- for (ServiceProvider provider : mRegistry.getProviders()) {
- provider.setSidefpsController(controller);
- }
- }
-
@android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
@Override
public void onPowerPressed() {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java
index c2d1169..a6cf2f4 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java
@@ -28,7 +28,6 @@
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.IBinder;
@@ -137,13 +136,6 @@
void onPowerPressed();
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- /**
- * Sets side-fps controller
- * @param controller side-fps controller
- */
- void setSidefpsController(@NonNull ISidefpsController controller);
-
@NonNull
ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
@NonNull String opPackageName);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
index acc086b..83fc665 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
@@ -22,8 +22,6 @@
import static android.hardware.fingerprint.FingerprintManager.getAcquiredString;
import static android.hardware.fingerprint.FingerprintManager.getErrorString;
-import static com.android.systemui.shared.Flags.sidefpsControllerRefactor;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.TaskStackListener;
@@ -46,7 +44,6 @@
import android.hardware.fingerprint.FingerprintAuthenticateOptions;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.IBinder;
import android.os.RemoteException;
@@ -111,8 +108,6 @@
boolean isStrongBiometric,
@Nullable TaskStackListener taskStackListener,
@Nullable IUdfpsOverlayController udfpsOverlayController,
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Nullable ISidefpsController sidefpsController,
@NonNull AuthenticationStateListeners authenticationStateListeners,
boolean allowBackgroundAuthentication,
@NonNull FingerprintSensorPropertiesInternal sensorProps,
@@ -137,11 +132,7 @@
false /* shouldVibrate */,
biometricStrength);
setRequestId(requestId);
- if (sidefpsControllerRefactor()) {
- mSensorOverlays = new SensorOverlays(udfpsOverlayController);
- } else {
- mSensorOverlays = new SensorOverlays(udfpsOverlayController, sidefpsController);
- }
+ mSensorOverlays = new SensorOverlays(udfpsOverlayController);
mAuthenticationStateListeners = authenticationStateListeners;
mIsStrongBiometric = isStrongBiometric;
mSensorProps = sensorProps;
@@ -198,11 +189,9 @@
getRequestReason(), mIsStrongBiometric, getTargetUserId()).build()
);
}
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
- .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
+ .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
+ );
} else {
mState = STATE_STARTED_PAUSED_ATTEMPTED;
if (reportBiometricAuthAttempts()) {
@@ -287,23 +276,18 @@
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
- .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
+ .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
+ );
}
@Override
protected void startHalOperation() {
resetIgnoreDisplayTouches();
mSensorOverlays.show(getSensorId(), getRequestReason(), this);
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStarted(new AuthenticationStartedInfo
- .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
- );
- }
-
+ mAuthenticationStateListeners.onAuthenticationStarted(new AuthenticationStartedInfo
+ .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
+ );
try {
doAuthenticate();
} catch (RemoteException e) {
@@ -362,11 +346,9 @@
protected void stopHalOperation() {
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
- .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
+ .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
+ );
unsubscribeBiometricContext();
if (mCancellationSignal != null) {
@@ -468,11 +450,9 @@
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
- .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
+ .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
+ );
mCallback.onClientFinished(this, false /* success */);
}
@@ -505,11 +485,9 @@
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
- .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
+ .Builder(BiometricSourceType.FINGERPRINT, getRequestReason()).build()
+ );
mCallback.onClientFinished(this, false /* success */);
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java
index b6c33ba..36af5db 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java
@@ -16,8 +16,6 @@
package com.android.server.biometrics.sensors.fingerprint.aidl;
-import static com.android.systemui.shared.Flags.sidefpsControllerRefactor;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -77,12 +75,7 @@
setRequestId(requestId);
mAuthenticationStateListeners = authenticationStateListeners;
mIsStrongBiometric = isStrongBiometric;
- if (sidefpsControllerRefactor()) {
- mSensorOverlays = new SensorOverlays(udfpsOverlayController);
- } else {
- mSensorOverlays = new SensorOverlays(
- udfpsOverlayController, null /* sideFpsController */);
- }
+ mSensorOverlays = new SensorOverlays(udfpsOverlayController);
mOptions = options;
}
@@ -96,12 +89,10 @@
protected void stopHalOperation() {
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(
- new AuthenticationStoppedInfo.Builder(BiometricSourceType.FINGERPRINT,
- BiometricRequestConstants.REASON_AUTH_KEYGUARD).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(
+ new AuthenticationStoppedInfo.Builder(BiometricSourceType.FINGERPRINT,
+ BiometricRequestConstants.REASON_AUTH_KEYGUARD).build()
+ );
unsubscribeBiometricContext();
if (mCancellationSignal != null) {
@@ -119,25 +110,19 @@
resetIgnoreDisplayTouches();
mSensorOverlays.show(getSensorId(), BiometricRequestConstants.REASON_AUTH_KEYGUARD,
this);
-
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStarted(
- new AuthenticationStartedInfo.Builder(BiometricSourceType.FINGERPRINT,
- BiometricRequestConstants.REASON_AUTH_KEYGUARD).build()
- );
- }
-
+ mAuthenticationStateListeners.onAuthenticationStarted(
+ new AuthenticationStartedInfo.Builder(BiometricSourceType.FINGERPRINT,
+ BiometricRequestConstants.REASON_AUTH_KEYGUARD).build()
+ );
try {
doDetectInteraction();
} catch (RemoteException e) {
Slog.e(TAG, "Remote exception when requesting finger detect", e);
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(
- new AuthenticationStoppedInfo.Builder(BiometricSourceType.FINGERPRINT,
- BiometricRequestConstants.REASON_AUTH_KEYGUARD).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(
+ new AuthenticationStoppedInfo.Builder(BiometricSourceType.FINGERPRINT,
+ BiometricRequestConstants.REASON_AUTH_KEYGUARD).build()
+ );
mCallback.onClientFinished(this, false /* success */);
}
}
@@ -154,14 +139,12 @@
} catch (RemoteException e) {
Slog.e(TAG, "Unable to start detect interaction", e);
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(
- new AuthenticationStoppedInfo.Builder(
- BiometricSourceType.FINGERPRINT,
- BiometricRequestConstants.REASON_AUTH_KEYGUARD
- ).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(
+ new AuthenticationStoppedInfo.Builder(
+ BiometricSourceType.FINGERPRINT,
+ BiometricRequestConstants.REASON_AUTH_KEYGUARD
+ ).build()
+ );
mCallback.onClientFinished(this, false /* success */);
}
}, ctx -> {
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
index 3d170db..3a72d7e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java
@@ -22,8 +22,6 @@
import static android.hardware.fingerprint.FingerprintManager.getAcquiredString;
import static android.hardware.fingerprint.FingerprintManager.getErrorString;
-import static com.android.systemui.shared.Flags.sidefpsControllerRefactor;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -43,7 +41,6 @@
import android.hardware.fingerprint.FingerprintEnrollOptions;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.hardware.keymaster.HardwareAuthToken;
import android.os.IBinder;
@@ -106,8 +103,6 @@
@NonNull BiometricLogger logger, @NonNull BiometricContext biometricContext,
@NonNull FingerprintSensorPropertiesInternal sensorProps,
@Nullable IUdfpsOverlayController udfpsOverlayController,
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Nullable ISidefpsController sidefpsController,
@NonNull AuthenticationStateListeners authenticationStateListeners,
int maxTemplatesPerUser, @FingerprintManager.EnrollReason int enrollReason,
@NonNull FingerprintEnrollOptions options) {
@@ -118,11 +113,7 @@
BiometricFingerprintConstants.reasonToMetric(options.getEnrollReason()));
setRequestId(requestId);
mSensorProps = sensorProps;
- if (sidefpsControllerRefactor()) {
- mSensorOverlays = new SensorOverlays(udfpsOverlayController);
- } else {
- mSensorOverlays = new SensorOverlays(udfpsOverlayController, sidefpsController);
- }
+ mSensorOverlays = new SensorOverlays(udfpsOverlayController);
mAuthenticationStateListeners = authenticationStateListeners;
mMaxTemplatesPerUser = maxTemplatesPerUser;
@@ -161,13 +152,11 @@
if (remaining == 0) {
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(
- new AuthenticationStoppedInfo.Builder(
- BiometricSourceType.FINGERPRINT,
- getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(
+ new AuthenticationStoppedInfo.Builder(
+ BiometricSourceType.FINGERPRINT,
+ getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
+ );
}
}
@@ -224,12 +213,10 @@
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(
- new AuthenticationStoppedInfo.Builder(BiometricSourceType.FINGERPRINT,
- getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(
+ new AuthenticationStoppedInfo.Builder(BiometricSourceType.FINGERPRINT,
+ getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
+ );
}
@Override
@@ -243,12 +230,10 @@
resetIgnoreDisplayTouches();
mSensorOverlays.show(getSensorId(),
getRequestReasonFromFingerprintEnrollReason(mEnrollReason), this);
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStarted(new AuthenticationStartedInfo
- .Builder(BiometricSourceType.FINGERPRINT,
- getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStarted(new AuthenticationStartedInfo
+ .Builder(BiometricSourceType.FINGERPRINT,
+ getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
+ );
BiometricNotificationUtils.cancelBadCalibrationNotification(getContext());
try {
@@ -294,12 +279,10 @@
protected void stopHalOperation() {
resetIgnoreDisplayTouches();
mSensorOverlays.hide(getSensorId());
- if (sidefpsControllerRefactor()) {
- mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
- .Builder(BiometricSourceType.FINGERPRINT,
- getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
- );
- }
+ mAuthenticationStateListeners.onAuthenticationStopped(new AuthenticationStoppedInfo
+ .Builder(BiometricSourceType.FINGERPRINT,
+ getRequestReasonFromFingerprintEnrollReason(mEnrollReason)).build()
+ );
unsubscribeBiometricContext();
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
index f485a65..6874c71 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java
@@ -43,7 +43,6 @@
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.Binder;
import android.os.Build;
@@ -131,8 +130,6 @@
@NonNull private final BiometricHandlerProvider mBiometricHandlerProvider;
@Nullable private IFingerprint mDaemon;
@Nullable private IUdfpsOverlayController mUdfpsOverlayController;
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Nullable private ISidefpsController mSidefpsController;
private final AuthSessionCoordinator mAuthSessionCoordinator;
@Nullable private AuthenticationStatsCollector mAuthenticationStatsCollector;
@Nullable private IVirtualHal mVhal;
@@ -509,8 +506,8 @@
BiometricsProtoEnums.CLIENT_UNKNOWN, mAuthenticationStatsCollector),
mBiometricContext,
mFingerprintSensors.get(sensorId).getSensorProperties(),
- mUdfpsOverlayController, mSidefpsController,
- mAuthenticationStateListeners, maxTemplatesPerUser, enrollReason, options);
+ mUdfpsOverlayController, mAuthenticationStateListeners, maxTemplatesPerUser,
+ enrollReason, options);
scheduleForSensor(sensorId, client, mBiometricStateCallback);
});
return id;
@@ -565,8 +562,8 @@
mAuthenticationStatsCollector),
mBiometricContext, isStrongBiometric,
mTaskStackListener,
- mUdfpsOverlayController, mSidefpsController,
- mAuthenticationStateListeners, allowBackgroundAuthentication,
+ mUdfpsOverlayController, mAuthenticationStateListeners,
+ allowBackgroundAuthentication,
mFingerprintSensors.get(sensorId).getSensorProperties(),
Utils.getCurrentStrength(sensorId),
lockoutTracker);
@@ -801,12 +798,6 @@
}
}
- // TODO(b/288175061): remove with Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
- @Override
- public void setSidefpsController(@NonNull ISidefpsController controller) {
- mSidefpsController = controller;
- }
-
@Override
public void dumpProtoState(int sensorId, @NonNull ProtoOutputStream proto,
boolean clearSchedulerBuffer) {
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
index 90b131a..3dc375c 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
@@ -24,8 +24,6 @@
import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_ERROR_CANCELED;
import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_SUCCESS;
-import static com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR;
-
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
@@ -452,7 +450,6 @@
@Test
public void testRegisterAuthenticationStateListener_callsFingerprintService()
throws Exception {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
setInternalAndTestBiometricPermissions(mContext, true /* hasPermission */);
mAuthService = new AuthService(mContext, mInjector);
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/SensorOverlaysTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/SensorOverlaysTest.java
index 74f8f08..d6eadf2 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/SensorOverlaysTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/SensorOverlaysTest.java
@@ -16,8 +16,6 @@
package com.android.server.biometrics.sensors;
-import static com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR;
-
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
@@ -26,7 +24,6 @@
import static org.mockito.Mockito.when;
import android.hardware.biometrics.BiometricRequestConstants;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.platform.test.annotations.Presubmit;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -52,21 +49,18 @@
private static final long REQUEST_ID = 8;
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
-
@Mock private IUdfpsOverlayController mUdfpsOverlayController;
- @Mock private ISidefpsController mSidefpsController;
@Mock private AcquisitionClient<?> mAcquisitionClient;
@Before
public void setup() {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
when(mAcquisitionClient.getRequestId()).thenReturn(REQUEST_ID);
when(mAcquisitionClient.hasRequestId()).thenReturn(true);
}
@Test
public void noopWhenBothNull() {
- final SensorOverlays useless = new SensorOverlays(null, null);
+ final SensorOverlays useless = new SensorOverlays(null);
useless.show(SENSOR_ID, 2, null);
useless.hide(SENSOR_ID);
}
@@ -74,34 +68,24 @@
@Test
public void testProvidesUdfps() {
final List<IUdfpsOverlayController> udfps = new ArrayList<>();
- SensorOverlays sensorOverlays = new SensorOverlays(null, mSidefpsController);
+ SensorOverlays sensorOverlays = new SensorOverlays(null);
sensorOverlays.ifUdfps(udfps::add);
assertThat(udfps).isEmpty();
- sensorOverlays = new SensorOverlays(mUdfpsOverlayController, mSidefpsController);
+ sensorOverlays = new SensorOverlays(mUdfpsOverlayController);
sensorOverlays.ifUdfps(udfps::add);
assertThat(udfps).containsExactly(mUdfpsOverlayController);
}
@Test
- public void testShow() throws Exception {
- testShow(mUdfpsOverlayController, mSidefpsController);
- }
-
- @Test
public void testShowUdfps() throws Exception {
- testShow(mUdfpsOverlayController, null);
+ testShow(mUdfpsOverlayController);
}
- @Test
- public void testShowSidefps() throws Exception {
- testShow(null, mSidefpsController);
- }
-
- private void testShow(IUdfpsOverlayController udfps, ISidefpsController sidefps)
+ private void testShow(IUdfpsOverlayController udfps)
throws Exception {
- final SensorOverlays sensorOverlays = new SensorOverlays(udfps, sidefps);
+ final SensorOverlays sensorOverlays = new SensorOverlays(udfps);
final int reason = BiometricRequestConstants.REASON_UNKNOWN;
sensorOverlays.show(SENSOR_ID, reason, mAcquisitionClient);
@@ -109,36 +93,20 @@
verify(mUdfpsOverlayController).showUdfpsOverlay(
eq(REQUEST_ID), eq(SENSOR_ID), eq(reason), any());
}
- if (sidefps != null) {
- verify(mSidefpsController).show(eq(SENSOR_ID), eq(reason));
- }
- }
-
- @Test
- public void testHide() throws Exception {
- testHide(mUdfpsOverlayController, mSidefpsController);
}
@Test
public void testHideUdfps() throws Exception {
- testHide(mUdfpsOverlayController, null);
+ testHide(mUdfpsOverlayController);
}
- @Test
- public void testHideSidefps() throws Exception {
- testHide(null, mSidefpsController);
- }
-
- private void testHide(IUdfpsOverlayController udfps, ISidefpsController sidefps)
+ private void testHide(IUdfpsOverlayController udfps)
throws Exception {
- final SensorOverlays sensorOverlays = new SensorOverlays(udfps, sidefps);
+ final SensorOverlays sensorOverlays = new SensorOverlays(udfps);
sensorOverlays.hide(SENSOR_ID);
if (udfps != null) {
verify(mUdfpsOverlayController).hideUdfpsOverlay(eq(SENSOR_ID));
}
- if (sidefps != null) {
- verify(mSidefpsController).hide(eq(SENSOR_ID));
- }
}
}
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
index a8e0c26..a19dfc6 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
@@ -23,8 +23,6 @@
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_HW_UNAVAILABLE;
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_LOCKOUT_PERMANENT;
-import static com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR;
-
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -61,7 +59,6 @@
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintAuthenticateOptions;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.IBinder;
import android.os.RemoteException;
@@ -82,6 +79,7 @@
import com.android.server.biometrics.log.OperationContextExt;
import com.android.server.biometrics.log.Probe;
import com.android.server.biometrics.sensors.AuthSessionCoordinator;
+import com.android.server.biometrics.sensors.AuthenticationClient;
import com.android.server.biometrics.sensors.AuthenticationStateListeners;
import com.android.server.biometrics.sensors.ClientMonitorCallback;
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
@@ -143,8 +141,6 @@
@Mock
private IUdfpsOverlayController mUdfpsOverlayController;
@Mock
- private ISidefpsController mSideFpsController;
- @Mock
private AuthenticationStateListeners mAuthenticationStateListeners;
@Mock
private FingerprintSensorPropertiesInternal mSensorProps;
@@ -189,7 +185,6 @@
@Before
public void setup() {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
mContext.addMockSystemService(BiometricManager.class, mBiometricManager);
mContext.getOrCreateTestableResources().addOverride(
R.string.fingerprint_error_hw_not_available, "hw not available");
@@ -414,12 +409,12 @@
@Test
public void showHideOverlay_cancel() throws RemoteException {
- showHideOverlay(c -> c.cancel());
+ showHideOverlay(AuthenticationClient::cancel);
}
@Test
public void showHideOverlay_stop() throws RemoteException {
- showHideOverlay(c -> c.stopHalOperation());
+ showHideOverlay(FingerprintAuthenticationClient::stopHalOperation);
}
@Test
@@ -434,57 +429,13 @@
}
@Test
- public void showHideOverlay_lockoutPerm() throws RemoteException {
- showHideOverlay(c -> c.onLockoutPermanent());
- }
-
- private void showHideOverlay(Consumer<FingerprintAuthenticationClient> block)
+ public void showHideOverlay_lockoutPerm()
throws RemoteException {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
- final FingerprintAuthenticationClient client = createClient();
-
- client.start(mCallback);
-
- verify(mUdfpsOverlayController).showUdfpsOverlay(eq(REQUEST_ID), anyInt(), anyInt(), any());
- verify(mSideFpsController).show(anyInt(), anyInt());
-
- block.accept(client);
-
- verify(mUdfpsOverlayController).hideUdfpsOverlay(anyInt());
- verify(mSideFpsController).hide(anyInt());
- verify(mHal, times(2)).setIgnoreDisplayTouches(false);
+ showHideOverlay(FingerprintAuthenticationClient::onLockoutPermanent);
}
- @Test
- public void showHideOverlay_cancel_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.cancel());
- }
-
- @Test
- public void showHideOverlay_stop_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.stopHalOperation());
- }
-
- @Test
- public void showHideOverlay_error_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.onError(0, 0));
- verify(mCallback).onClientFinished(any(), eq(false));
- }
-
- @Test
- public void showHideOverlay_lockout_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.onLockoutTimed(5000));
- }
-
- @Test
- public void showHideOverlay_lockoutPerm_sidefpsControllerRemovalRefactor()
- throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.onLockoutPermanent());
- }
-
- private void showHideOverlay_sidefpsControllerRemovalRefactor(
+ private void showHideOverlay(
Consumer<FingerprintAuthenticationClient> block) throws RemoteException {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
final FingerprintAuthenticationClient client = createClient();
client.start(mCallback);
@@ -498,7 +449,6 @@
BiometricRequestConstants.REASON_AUTH_BP).build()
);
-
block.accept(client);
verify(mUdfpsOverlayController).hideUdfpsOverlay(anyInt());
@@ -552,7 +502,6 @@
@Test
public void testAuthenticationStateListeners_onError()
throws RemoteException {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
final FingerprintAuthenticationClient client = createClient();
client.start(mCallback);
client.onError(FINGERPRINT_ERROR_HW_UNAVAILABLE, 0);
@@ -578,7 +527,6 @@
@Test
public void testAuthenticationStateListeners_onLockoutPermanent()
throws RemoteException {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
final FingerprintAuthenticationClient client = createClient();
client.start(mCallback);
client.onLockoutPermanent();
@@ -732,17 +680,12 @@
.setUserId(USER_ID)
.setSensorId(SENSOR_ID)
.build();
- return new FingerprintAuthenticationClient(mContext, () -> aidl, mToken,
- REQUEST_ID, listener, OP_ID,
- false /* restricted */, options, 4 /* cookie */,
- false /* requireConfirmation */,
- mBiometricLogger, mBiometricContext,
- true /* isStrongBiometric */,
- null /* taskStackListener */,
- mUdfpsOverlayController, mSideFpsController, mAuthenticationStateListeners,
- allowBackgroundAuthentication,
- mSensorProps, 0 /* biometricStrength */,
- lockoutTracker) {
+ return new FingerprintAuthenticationClient(mContext, () -> aidl, mToken, REQUEST_ID,
+ listener, OP_ID, false /* restricted */, options, 4 /* cookie */,
+ false /* requireConfirmation */, mBiometricLogger, mBiometricContext,
+ true /* isStrongBiometric */, null /* taskStackListener */, mUdfpsOverlayController,
+ mAuthenticationStateListeners, allowBackgroundAuthentication, mSensorProps,
+ 0 /* biometricStrength */, lockoutTracker) {
@Override
protected ActivityTaskManager getActivityTaskManager() {
return mActivityTaskManager;
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
index b26f8c8..5c6513d 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClientTest.java
@@ -20,8 +20,6 @@
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_TOO_FAST;
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_TIMEOUT;
-import static com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR;
-
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -33,7 +31,6 @@
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.same;
-import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -52,7 +49,6 @@
import android.hardware.fingerprint.FingerprintEnrollOptions;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
-import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.IBinder;
import android.os.RemoteException;
@@ -71,6 +67,7 @@
import com.android.server.biometrics.log.CallbackWithProbe;
import com.android.server.biometrics.log.OperationContextExt;
import com.android.server.biometrics.log.Probe;
+import com.android.server.biometrics.sensors.AcquisitionClient;
import com.android.server.biometrics.sensors.AuthenticationStateListeners;
import com.android.server.biometrics.sensors.BiometricUtils;
import com.android.server.biometrics.sensors.ClientMonitorCallback;
@@ -127,8 +124,6 @@
@Mock
private IUdfpsOverlayController mUdfpsOverlayController;
@Mock
- private ISidefpsController mSideFpsController;
- @Mock
private AuthenticationStateListeners mAuthenticationStateListeners;
@Mock
private FingerprintSensorPropertiesInternal mSensorProps;
@@ -287,12 +282,12 @@
@Test
public void showHideOverlay_cancel() throws RemoteException {
- showHideOverlay(c -> c.cancel());
+ showHideOverlay(AcquisitionClient::cancel);
}
@Test
public void showHideOverlay_stop() throws RemoteException {
- showHideOverlay(c -> c.stopHalOperation());
+ showHideOverlay(FingerprintEnrollClient::stopHalOperation);
}
@Test
@@ -303,45 +298,7 @@
@Test
public void showHideOverlay_result() throws RemoteException {
- showHideOverlay(c -> c.onEnrollResult(new Fingerprint("", 1, 1), 0));
- }
-
- private void showHideOverlay(Consumer<FingerprintEnrollClient> block)
- throws RemoteException {
- mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
- final FingerprintEnrollClient client = createClient();
-
- client.start(mCallback);
-
- verify(mUdfpsOverlayController).showUdfpsOverlay(eq(REQUEST_ID), anyInt(), anyInt(), any());
- verify(mSideFpsController).show(anyInt(), anyInt());
-
- block.accept(client);
-
- verify(mUdfpsOverlayController).hideUdfpsOverlay(anyInt());
- verify(mSideFpsController).hide(anyInt());
- verify(mHal, times(2)).setIgnoreDisplayTouches(false);
- }
-
- @Test
- public void showHideOverlay_cancel_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.cancel());
- }
-
- @Test
- public void showHideOverlay_stop_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.stopHalOperation());
- }
-
- @Test
- public void showHideOverlay_error_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(c -> c.onError(0, 0));
- verify(mCallback).onClientFinished(any(), eq(false));
- }
-
- @Test
- public void showHideOverlay_result_sidefpsControllerRemovalRefactor() throws RemoteException {
- showHideOverlay_sidefpsControllerRemovalRefactor(
+ showHideOverlay(
c -> c.onEnrollResult(new Fingerprint("", 1, 1), 0));
}
@@ -355,9 +312,8 @@
eq(BiometricsProtoEnums.ENROLLMENT_SOURCE_SUW));
}
- private void showHideOverlay_sidefpsControllerRemovalRefactor(
+ private void showHideOverlay(
Consumer<FingerprintEnrollClient> block) throws RemoteException {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
final FingerprintEnrollClient client = createClient();
client.start(mCallback);
@@ -414,7 +370,6 @@
@Test
public void testAuthenticationStateListeners_onError()
throws RemoteException {
- mSetFlagsRule.enableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR);
final FingerprintEnrollClient client = createClient();
client.start(mCallback);
client.onError(FINGERPRINT_ERROR_TIMEOUT, 0);
@@ -449,7 +404,7 @@
mClientMonitorCallbackConverter, 0 /* userId */,
HAT, "owner", mBiometricUtils, 8 /* sensorId */,
mBiometricLogger, mBiometricContext, mSensorProps, mUdfpsOverlayController,
- mSideFpsController, mAuthenticationStateListeners, 6 /* maxTemplatesPerUser */,
+ mAuthenticationStateListeners, 6 /* maxTemplatesPerUser */,
FingerprintManager.ENROLL_ENROLL, (new FingerprintEnrollOptions.Builder())
.setEnrollReason(ENROLL_SOURCE).build()
);
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/hidl/HidlToAidlSensorAdapterTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/hidl/HidlToAidlSensorAdapterTest.java
index 6c3bfe8..1db74b4 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/hidl/HidlToAidlSensorAdapterTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/hidl/HidlToAidlSensorAdapterTest.java
@@ -217,7 +217,7 @@
mContext, mHidlToAidlSensorAdapter.getLazySession(), null /* token */,
1 /* requestId */, null /* listener */, USER_ID, HAT, TAG, mBiometricUtils,
SENSOR_ID, mLogger, mBiometricContext,
- mHidlToAidlSensorAdapter.getSensorProperties(), null, null,
+ mHidlToAidlSensorAdapter.getSensorProperties(), null,
mAuthenticationStateListeners, 5 /* maxTemplatesPerUser */, ENROLL_ENROLL,
(new FingerprintEnrollOptions.Builder()).build()));
mLooper.dispatchAll();