diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-02-22 00:09:01 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-02-22 00:09:01 +0000 |
commit | f3daa54d46e762cb93324df6969c8f1079bff06d (patch) | |
tree | a2779c12f451071364bd270735f695e6c5ee4935 | |
parent | 5a3e5cdddb7505dfbcc6aa1ff44f8806dfbf48fd (diff) | |
parent | 6b659658e8062510b44fe0cd2b30dfbe867b4b3e (diff) | |
download | base-android14-qpr2-release.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/26024128', 'googleplex-android-review.googlesource.com/26101488'] into 24Q1-release.android-14.0.0_r37android-14.0.0_r36android-14.0.0_r35android-14.0.0_r34android-14.0.0_r33android-14.0.0_r32android-14.0.0_r31android-14.0.0_r30android14-qpr2-s5-releaseandroid14-qpr2-s4-releaseandroid14-qpr2-s3-releaseandroid14-qpr2-s2-releaseandroid14-qpr2-release
Change-Id: I74be43df7b722691e0807c385e6a867a28ddb9ff
6 files changed, 76 insertions, 52 deletions
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 a8c9446fd689..c36e0e21d021 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 @@ -47,6 +47,7 @@ import com.android.systemui.keyguard.ui.viewmodel.SideFpsProgressBarViewModel import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.res.R import com.android.systemui.util.kotlin.sample +import dagger.Lazy import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine @@ -59,49 +60,56 @@ class SideFpsOverlayViewBinder constructor( @Application private val applicationScope: CoroutineScope, @Application private val applicationContext: Context, - private val biometricStatusInteractor: BiometricStatusInteractor, - private val displayStateInteractor: DisplayStateInteractor, - private val deviceEntrySideFpsOverlayInteractor: DeviceEntrySideFpsOverlayInteractor, - private val fpsUnlockTracker: FpsUnlockTracker, - private val layoutInflater: LayoutInflater, - private val sideFpsProgressBarViewModel: SideFpsProgressBarViewModel, - private val sfpsSensorInteractor: SideFpsSensorInteractor, - private val windowManager: WindowManager + private val biometricStatusInteractor: Lazy<BiometricStatusInteractor>, + private val displayStateInteractor: Lazy<DisplayStateInteractor>, + private val deviceEntrySideFpsOverlayInteractor: Lazy<DeviceEntrySideFpsOverlayInteractor>, + private val fpsUnlockTracker: Lazy<FpsUnlockTracker>, + private val layoutInflater: Lazy<LayoutInflater>, + private val sideFpsProgressBarViewModel: Lazy<SideFpsProgressBarViewModel>, + private val sfpsSensorInteractor: Lazy<SideFpsSensorInteractor>, + private val windowManager: Lazy<WindowManager> ) : CoreStartable { override fun start() { if (!SideFpsControllerRefactor.isEnabled) { return } + applicationScope .launch { - combine( - biometricStatusInteractor.sfpsAuthenticationReason, - deviceEntrySideFpsOverlayInteractor.showIndicatorForDeviceEntry, - sideFpsProgressBarViewModel.isVisible, - ::Triple - ) - .sample(displayStateInteractor.isInRearDisplayMode, ::Pair) - .collect { (combinedFlows, isInRearDisplayMode: Boolean) -> - val ( - systemServerAuthReason, - showIndicatorForDeviceEntry, - progressBarIsVisible) = - combinedFlows - if (!isInRearDisplayMode) { - if (progressBarIsVisible) { - hide() - } else if (systemServerAuthReason != NotRunning) { - show() - } else if (showIndicatorForDeviceEntry) { - show() - } else { - hide() + sfpsSensorInteractor.get().isAvailable.collect { isSfpsAvailable -> + if (isSfpsAvailable) { + combine( + biometricStatusInteractor.get().sfpsAuthenticationReason, + deviceEntrySideFpsOverlayInteractor + .get() + .showIndicatorForDeviceEntry, + sideFpsProgressBarViewModel.get().isVisible, + ::Triple + ) + .sample(displayStateInteractor.get().isInRearDisplayMode, ::Pair) + .collect { (combinedFlows, isInRearDisplayMode: Boolean) -> + val ( + systemServerAuthReason, + showIndicatorForDeviceEntry, + progressBarIsVisible) = + combinedFlows + if (!isInRearDisplayMode) { + if (progressBarIsVisible) { + hide() + } else if (systemServerAuthReason != NotRunning) { + show() + } else if (showIndicatorForDeviceEntry) { + show() + } else { + hide() + } + } } - } } + } } - .invokeOnCompletion { fpsUnlockTracker.stopTracking() } + .invokeOnCompletion { fpsUnlockTracker.get().stopTracking() } } private var overlayView: View? = null @@ -113,29 +121,29 @@ constructor( if (it.isAttachedToWindow) { lottie = it.requireViewById<LottieAnimationView>(R.id.sidefps_animation) lottie?.pauseAnimation() - windowManager.removeView(it) + windowManager.get().removeView(it) } } - overlayView = layoutInflater.inflate(R.layout.sidefps_view, null, false) + overlayView = layoutInflater.get().inflate(R.layout.sidefps_view, null, false) val overlayViewModel = SideFpsOverlayViewModel( applicationContext, - biometricStatusInteractor, - deviceEntrySideFpsOverlayInteractor, - displayStateInteractor, - sfpsSensorInteractor, - sideFpsProgressBarViewModel + biometricStatusInteractor.get(), + deviceEntrySideFpsOverlayInteractor.get(), + displayStateInteractor.get(), + sfpsSensorInteractor.get(), + sideFpsProgressBarViewModel.get() ) - bind(overlayView!!, overlayViewModel, fpsUnlockTracker, windowManager) + bind(overlayView!!, overlayViewModel, fpsUnlockTracker.get(), windowManager.get()) overlayView!!.visibility = View.INVISIBLE - windowManager.addView(overlayView, overlayViewModel.defaultOverlayViewParams) + windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) } /** Hide the side fingerprint sensor indicator */ private fun hide() { if (overlayView != null) { - windowManager.removeView(overlayView) + windowManager.get().removeView(overlayView) overlayView = null } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt index de15fd6a958f..ecf78d550a3f 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/DeviceEntrySideFpsOverlayInteractor.kt @@ -22,15 +22,19 @@ import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application +import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor +import com.android.systemui.keyguard.data.repository.BiometricType import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository import com.android.systemui.res.R import javax.inject.Inject +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge +import kotlinx.coroutines.launch /** * Encapsulates business logic for device entry events that impact the side fingerprint sensor @@ -40,6 +44,7 @@ import kotlinx.coroutines.flow.merge class DeviceEntrySideFpsOverlayInteractor @Inject constructor( + @Application private val applicationScope: CoroutineScope, @Application private val context: Context, deviceEntryFingerprintAuthRepository: DeviceEntryFingerprintAuthRepository, private val primaryBouncerInteractor: PrimaryBouncerInteractor, @@ -48,7 +53,15 @@ constructor( ) { init { - alternateBouncerInteractor.setAlternateBouncerUIAvailable(true, TAG) + if (!DeviceEntryUdfpsRefactor.isEnabled) { + applicationScope.launch { + deviceEntryFingerprintAuthRepository.availableFpSensorType.collect { sensorType -> + if (sensorType == BiometricType.SIDE_FINGERPRINT) { + alternateBouncerInteractor.setAlternateBouncerUIAvailable(true, TAG) + } + } + } + } } private val showIndicatorForPrimaryBouncer: Flow<Boolean> = 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 b4ae00ddd608..42d2c98f324c 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 @@ -217,6 +217,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { deviceEntrySideFpsOverlayInteractor = DeviceEntrySideFpsOverlayInteractor( + testScope.backgroundScope, mContext, deviceEntryFingerprintAuthRepository, primaryBouncerInteractor, @@ -260,14 +261,14 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { SideFpsOverlayViewBinder( testScope.backgroundScope, mContext, - biometricStatusInteractor, - displayStateInteractor, - deviceEntrySideFpsOverlayInteractor, - fpsUnlockTracker, - layoutInflater, - sideFpsProgressBarViewModel, - sfpsSensorInteractor, - windowManager + { biometricStatusInteractor }, + { displayStateInteractor }, + { deviceEntrySideFpsOverlayInteractor }, + { fpsUnlockTracker }, + { layoutInflater }, + { sideFpsProgressBarViewModel }, + { sfpsSensorInteractor }, + { windowManager } ) context.addMockSystemService(DisplayManager::class.java, displayManager) 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 2267bdcafad8..983e4b3a9922 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 @@ -220,6 +220,7 @@ class SideFpsOverlayViewModelTest : SysuiTestCase() { deviceEntrySideFpsOverlayInteractor = DeviceEntrySideFpsOverlayInteractor( + testScope.backgroundScope, mContext, deviceEntryFingerprintAuthRepository, primaryBouncerInteractor, 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 70d3f81de35f..b00984cd2e3b 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 @@ -110,6 +110,7 @@ class DeviceEntrySideFpsOverlayInteractorTest : SysuiTestCase() { ) underTest = DeviceEntrySideFpsOverlayInteractor( + testScope.backgroundScope, mContext, FakeDeviceEntryFingerprintAuthRepository(), primaryBouncerInteractor, diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java index 4929df8061b2..a374b26557dc 100644 --- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java +++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java @@ -936,7 +936,7 @@ public class BackgroundActivityStartController { BalVerdict balAllowedForUid = proc.areBackgroundActivityStartsAllowed( state.mAppSwitchState); if (balAllowedForUid.allows()) { - return balAllowedForCaller.withProcessInfo("process", proc); + return balAllowedForUid.withProcessInfo("process", proc); } } } |