Merge "Remove ModernAlternateBouncer flag & legacyAltBouncer code" into udc-dev
This commit is contained in:
@@ -59,8 +59,6 @@ import com.android.systemui.dagger.SysUISingleton
|
|||||||
import com.android.systemui.dagger.qualifiers.Application
|
import com.android.systemui.dagger.qualifiers.Application
|
||||||
import com.android.systemui.dagger.qualifiers.Main
|
import com.android.systemui.dagger.qualifiers.Main
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.flags.FeatureFlags
|
|
||||||
import com.android.systemui.flags.Flags
|
|
||||||
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor
|
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor
|
||||||
import com.android.systemui.recents.OverviewProxyService
|
import com.android.systemui.recents.OverviewProxyService
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||||
@@ -90,7 +88,6 @@ constructor(
|
|||||||
@Main private val handler: Handler,
|
@Main private val handler: Handler,
|
||||||
private val alternateBouncerInteractor: AlternateBouncerInteractor,
|
private val alternateBouncerInteractor: AlternateBouncerInteractor,
|
||||||
@Application private val scope: CoroutineScope,
|
@Application private val scope: CoroutineScope,
|
||||||
private val featureFlags: FeatureFlags,
|
|
||||||
dumpManager: DumpManager
|
dumpManager: DumpManager
|
||||||
) : Dumpable {
|
) : Dumpable {
|
||||||
private val requests: HashSet<SideFpsUiRequestSource> = HashSet()
|
private val requests: HashSet<SideFpsUiRequestSource> = HashSet()
|
||||||
@@ -191,7 +188,6 @@ constructor(
|
|||||||
|
|
||||||
private fun listenForAlternateBouncerVisibility() {
|
private fun listenForAlternateBouncerVisibility() {
|
||||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true)
|
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true)
|
||||||
if (featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER)) {
|
|
||||||
scope.launch {
|
scope.launch {
|
||||||
alternateBouncerInteractor.isVisible.collect { isVisible: Boolean ->
|
alternateBouncerInteractor.isVisible.collect { isVisible: Boolean ->
|
||||||
if (isVisible) {
|
if (isVisible) {
|
||||||
@@ -202,7 +198,6 @@ constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/** Shows the side fps overlay if not already shown. */
|
/** Shows the side fps overlay if not already shown. */
|
||||||
fun show(
|
fun show(
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ import com.android.systemui.statusbar.StatusBarState
|
|||||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
|
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.KeyguardViewManagerCallback
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.KeyguardViewManagerCallback
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.LegacyAlternateBouncer
|
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.OccludingAppBiometricUI
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.OccludingAppBiometricUI
|
||||||
import com.android.systemui.statusbar.phone.SystemUIDialogManager
|
import com.android.systemui.statusbar.phone.SystemUIDialogManager
|
||||||
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController
|
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController
|
||||||
@@ -82,8 +81,6 @@ constructor(
|
|||||||
) {
|
) {
|
||||||
private val useExpandedOverlay: Boolean =
|
private val useExpandedOverlay: Boolean =
|
||||||
featureFlags.isEnabled(Flags.UDFPS_NEW_TOUCH_DETECTION)
|
featureFlags.isEnabled(Flags.UDFPS_NEW_TOUCH_DETECTION)
|
||||||
private val isModernAlternateBouncerEnabled: Boolean =
|
|
||||||
featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER)
|
|
||||||
private var showingUdfpsBouncer = false
|
private var showingUdfpsBouncer = false
|
||||||
private var udfpsRequested = false
|
private var udfpsRequested = false
|
||||||
private var qsExpansion = 0f
|
private var qsExpansion = 0f
|
||||||
@@ -107,7 +104,7 @@ constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private var inputBouncerExpansion = 0f // only used for modernBouncer
|
private var inputBouncerExpansion = 0f
|
||||||
|
|
||||||
private val stateListener: StatusBarStateController.StateListener =
|
private val stateListener: StatusBarStateController.StateListener =
|
||||||
object : StatusBarStateController.StateListener {
|
object : StatusBarStateController.StateListener {
|
||||||
@@ -251,7 +248,7 @@ constructor(
|
|||||||
// that may make the view visible again.
|
// that may make the view visible again.
|
||||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||||
listenForBouncerExpansion(this)
|
listenForBouncerExpansion(this)
|
||||||
if (isModernAlternateBouncerEnabled) listenForAlternateBouncerVisibility(this)
|
listenForAlternateBouncerVisibility(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,7 +292,6 @@ constructor(
|
|||||||
view.updatePadding()
|
view.updatePadding()
|
||||||
updateAlpha()
|
updateAlpha()
|
||||||
updatePauseAuth()
|
updatePauseAuth()
|
||||||
keyguardViewManager.setLegacyAlternateBouncer(legacyAlternateBouncer)
|
|
||||||
keyguardViewManager.setOccludingAppBiometricUI(occludingAppBiometricUI)
|
keyguardViewManager.setOccludingAppBiometricUI(occludingAppBiometricUI)
|
||||||
lockScreenShadeTransitionController.udfpsKeyguardViewController = this
|
lockScreenShadeTransitionController.udfpsKeyguardViewController = this
|
||||||
activityLaunchAnimator.addListener(activityLaunchAnimatorListener)
|
activityLaunchAnimator.addListener(activityLaunchAnimatorListener)
|
||||||
@@ -309,7 +305,6 @@ constructor(
|
|||||||
faceDetectRunning = false
|
faceDetectRunning = false
|
||||||
keyguardStateController.removeCallback(keyguardStateControllerCallback)
|
keyguardStateController.removeCallback(keyguardStateControllerCallback)
|
||||||
statusBarStateController.removeCallback(stateListener)
|
statusBarStateController.removeCallback(stateListener)
|
||||||
keyguardViewManager.removeLegacyAlternateBouncer(legacyAlternateBouncer)
|
|
||||||
keyguardViewManager.removeOccludingAppBiometricUI(occludingAppBiometricUI)
|
keyguardViewManager.removeOccludingAppBiometricUI(occludingAppBiometricUI)
|
||||||
keyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false)
|
keyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false)
|
||||||
configurationController.removeCallback(configurationListener)
|
configurationController.removeCallback(configurationListener)
|
||||||
@@ -323,7 +318,6 @@ constructor(
|
|||||||
|
|
||||||
override fun dump(pw: PrintWriter, args: Array<String>) {
|
override fun dump(pw: PrintWriter, args: Array<String>) {
|
||||||
super.dump(pw, args)
|
super.dump(pw, args)
|
||||||
pw.println("isModernAlternateBouncerEnabled=$isModernAlternateBouncerEnabled")
|
|
||||||
pw.println("showingUdfpsAltBouncer=$showingUdfpsBouncer")
|
pw.println("showingUdfpsAltBouncer=$showingUdfpsBouncer")
|
||||||
pw.println(
|
pw.println(
|
||||||
"altBouncerInteractor#isAlternateBouncerVisible=" +
|
"altBouncerInteractor#isAlternateBouncerVisible=" +
|
||||||
@@ -473,22 +467,6 @@ constructor(
|
|||||||
private fun updateScaleFactor() {
|
private fun updateScaleFactor() {
|
||||||
udfpsController.mOverlayParams?.scaleFactor?.let { view.setScaleFactor(it) }
|
udfpsController.mOverlayParams?.scaleFactor?.let { view.setScaleFactor(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private val legacyAlternateBouncer: LegacyAlternateBouncer =
|
|
||||||
object : LegacyAlternateBouncer {
|
|
||||||
override fun showAlternateBouncer(): Boolean {
|
|
||||||
return showUdfpsBouncer(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun hideAlternateBouncer(): Boolean {
|
|
||||||
return showUdfpsBouncer(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isShowingAlternateBouncer(): Boolean {
|
|
||||||
return showingUdfpsBouncer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "UdfpsKeyguardViewController"
|
const val TAG = "UdfpsKeyguardViewController"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,13 +169,6 @@ object Flags {
|
|||||||
@JvmField
|
@JvmField
|
||||||
val LIGHT_REVEAL_MIGRATION = unreleasedFlag(218, "light_reveal_migration", teamfood = false)
|
val LIGHT_REVEAL_MIGRATION = unreleasedFlag(218, "light_reveal_migration", teamfood = false)
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether to use the new alternate bouncer architecture, a refactor of and eventual replacement
|
|
||||||
* of the Alternate/Authentication Bouncer. No visual UI changes.
|
|
||||||
*/
|
|
||||||
// TODO(b/260619425): Tracking Bug
|
|
||||||
@JvmField val MODERN_ALTERNATE_BOUNCER = releasedFlag(219, "modern_alternate_bouncer")
|
|
||||||
|
|
||||||
/** Flag to control the migration of face auth to modern architecture. */
|
/** Flag to control the migration of face auth to modern architecture. */
|
||||||
// TODO(b/262838215): Tracking bug
|
// TODO(b/262838215): Tracking bug
|
||||||
@JvmField val FACE_AUTH_REFACTOR = unreleasedFlag(220, "face_auth_refactor")
|
@JvmField val FACE_AUTH_REFACTOR = unreleasedFlag(220, "face_auth_refactor")
|
||||||
|
|||||||
@@ -16,15 +16,11 @@
|
|||||||
|
|
||||||
package com.android.systemui.keyguard.domain.interactor
|
package com.android.systemui.keyguard.domain.interactor
|
||||||
|
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor
|
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.flags.FeatureFlags
|
|
||||||
import com.android.systemui.flags.Flags
|
|
||||||
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
|
import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.LegacyAlternateBouncer
|
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController
|
import com.android.systemui.statusbar.policy.KeyguardStateController
|
||||||
import com.android.systemui.util.time.SystemClock
|
import com.android.systemui.util.time.SystemClock
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -41,13 +37,7 @@ constructor(
|
|||||||
private val biometricSettingsRepository: BiometricSettingsRepository,
|
private val biometricSettingsRepository: BiometricSettingsRepository,
|
||||||
private val deviceEntryFingerprintAuthRepository: DeviceEntryFingerprintAuthRepository,
|
private val deviceEntryFingerprintAuthRepository: DeviceEntryFingerprintAuthRepository,
|
||||||
private val systemClock: SystemClock,
|
private val systemClock: SystemClock,
|
||||||
private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
|
|
||||||
featureFlags: FeatureFlags,
|
|
||||||
) {
|
) {
|
||||||
val isModernAlternateBouncerEnabled = featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER)
|
|
||||||
var legacyAlternateBouncer: LegacyAlternateBouncer? = null
|
|
||||||
var legacyAlternateBouncerVisibleTime: Long = NOT_VISIBLE
|
|
||||||
|
|
||||||
var receivedDownTouch = false
|
var receivedDownTouch = false
|
||||||
val isVisible: Flow<Boolean> = bouncerRepository.alternateBouncerVisible
|
val isVisible: Flow<Boolean> = bouncerRepository.alternateBouncerVisible
|
||||||
|
|
||||||
@@ -68,21 +58,8 @@ constructor(
|
|||||||
* @return whether alternateBouncer is visible
|
* @return whether alternateBouncer is visible
|
||||||
*/
|
*/
|
||||||
fun show(): Boolean {
|
fun show(): Boolean {
|
||||||
return when {
|
|
||||||
isModernAlternateBouncerEnabled -> {
|
|
||||||
bouncerRepository.setAlternateVisible(canShowAlternateBouncerForFingerprint())
|
bouncerRepository.setAlternateVisible(canShowAlternateBouncerForFingerprint())
|
||||||
isVisibleState()
|
return isVisibleState()
|
||||||
}
|
|
||||||
canShowAlternateBouncerForFingerprint() -> {
|
|
||||||
if (legacyAlternateBouncer?.showAlternateBouncer() == true) {
|
|
||||||
legacyAlternateBouncerVisibleTime = systemClock.uptimeMillis()
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -94,21 +71,13 @@ constructor(
|
|||||||
*/
|
*/
|
||||||
fun hide(): Boolean {
|
fun hide(): Boolean {
|
||||||
receivedDownTouch = false
|
receivedDownTouch = false
|
||||||
return if (isModernAlternateBouncerEnabled) {
|
|
||||||
val wasAlternateBouncerVisible = isVisibleState()
|
val wasAlternateBouncerVisible = isVisibleState()
|
||||||
bouncerRepository.setAlternateVisible(false)
|
bouncerRepository.setAlternateVisible(false)
|
||||||
wasAlternateBouncerVisible && !isVisibleState()
|
return wasAlternateBouncerVisible && !isVisibleState()
|
||||||
} else {
|
|
||||||
legacyAlternateBouncer?.hideAlternateBouncer() ?: false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isVisibleState(): Boolean {
|
fun isVisibleState(): Boolean {
|
||||||
return if (isModernAlternateBouncerEnabled) {
|
return bouncerRepository.alternateBouncerVisible.value
|
||||||
bouncerRepository.alternateBouncerVisible.value
|
|
||||||
} else {
|
|
||||||
legacyAlternateBouncer?.isShowingAlternateBouncer ?: false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setAlternateBouncerUIAvailable(isAvailable: Boolean) {
|
fun setAlternateBouncerUIAvailable(isAvailable: Boolean) {
|
||||||
@@ -116,18 +85,13 @@ constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun canShowAlternateBouncerForFingerprint(): Boolean {
|
fun canShowAlternateBouncerForFingerprint(): Boolean {
|
||||||
return if (isModernAlternateBouncerEnabled) {
|
return bouncerRepository.alternateBouncerUIAvailable.value &&
|
||||||
bouncerRepository.alternateBouncerUIAvailable.value &&
|
|
||||||
biometricSettingsRepository.isFingerprintEnrolled.value &&
|
biometricSettingsRepository.isFingerprintEnrolled.value &&
|
||||||
biometricSettingsRepository.isStrongBiometricAllowed.value &&
|
biometricSettingsRepository.isStrongBiometricAllowed.value &&
|
||||||
biometricSettingsRepository.isFingerprintEnabledByDevicePolicy.value &&
|
biometricSettingsRepository.isFingerprintEnabledByDevicePolicy.value &&
|
||||||
!deviceEntryFingerprintAuthRepository.isLockedOut.value &&
|
!deviceEntryFingerprintAuthRepository.isLockedOut.value &&
|
||||||
!keyguardStateController.isUnlocked &&
|
!keyguardStateController.isUnlocked &&
|
||||||
!statusBarStateController.isDozing
|
!statusBarStateController.isDozing
|
||||||
} else {
|
|
||||||
legacyAlternateBouncer != null &&
|
|
||||||
keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -135,12 +99,8 @@ constructor(
|
|||||||
* alternate bouncer and show the primary bouncer.
|
* alternate bouncer and show the primary bouncer.
|
||||||
*/
|
*/
|
||||||
fun hasAlternateBouncerShownWithMinTime(): Boolean {
|
fun hasAlternateBouncerShownWithMinTime(): Boolean {
|
||||||
return if (isModernAlternateBouncerEnabled) {
|
return (systemClock.uptimeMillis() - bouncerRepository.lastAlternateBouncerVisibleTime) >
|
||||||
(systemClock.uptimeMillis() - bouncerRepository.lastAlternateBouncerVisibleTime) >
|
|
||||||
MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS
|
MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS
|
||||||
} else {
|
|
||||||
systemClock.uptimeMillis() - legacyAlternateBouncerVisibleTime > 200
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun maybeHide() {
|
private fun maybeHide() {
|
||||||
@@ -151,6 +111,5 @@ constructor(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS = 200L
|
private const val MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS = 200L
|
||||||
private const val NOT_VISIBLE = -1L
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -281,7 +281,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
private boolean mLastScreenOffAnimationPlaying;
|
private boolean mLastScreenOffAnimationPlaying;
|
||||||
private float mQsExpansion;
|
private float mQsExpansion;
|
||||||
final Set<KeyguardViewManagerCallback> mCallbacks = new HashSet<>();
|
final Set<KeyguardViewManagerCallback> mCallbacks = new HashSet<>();
|
||||||
private boolean mIsModernAlternateBouncerEnabled;
|
|
||||||
private boolean mIsBackAnimationEnabled;
|
private boolean mIsBackAnimationEnabled;
|
||||||
private final boolean mUdfpsNewTouchDetectionEnabled;
|
private final boolean mUdfpsNewTouchDetectionEnabled;
|
||||||
private final UdfpsOverlayInteractor mUdfpsOverlayInteractor;
|
private final UdfpsOverlayInteractor mUdfpsOverlayInteractor;
|
||||||
@@ -363,7 +362,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
mPrimaryBouncerView = primaryBouncerView;
|
mPrimaryBouncerView = primaryBouncerView;
|
||||||
mFoldAodAnimationController = sysUIUnfoldComponent
|
mFoldAodAnimationController = sysUIUnfoldComponent
|
||||||
.map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null);
|
.map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null);
|
||||||
mIsModernAlternateBouncerEnabled = featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER);
|
|
||||||
mAlternateBouncerInteractor = alternateBouncerInteractor;
|
mAlternateBouncerInteractor = alternateBouncerInteractor;
|
||||||
mIsBackAnimationEnabled =
|
mIsBackAnimationEnabled =
|
||||||
featureFlags.isEnabled(Flags.WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM);
|
featureFlags.isEnabled(Flags.WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM);
|
||||||
@@ -395,35 +393,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
registerListeners();
|
registerListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the given legacy alternate bouncer to null if it's the current alternate bouncer. Else,
|
|
||||||
* does nothing. Only used if modern alternate bouncer is NOT enabled.
|
|
||||||
*/
|
|
||||||
public void removeLegacyAlternateBouncer(
|
|
||||||
@NonNull LegacyAlternateBouncer alternateBouncerLegacy) {
|
|
||||||
if (!mIsModernAlternateBouncerEnabled) {
|
|
||||||
if (Objects.equals(mAlternateBouncerInteractor.getLegacyAlternateBouncer(),
|
|
||||||
alternateBouncerLegacy)) {
|
|
||||||
mAlternateBouncerInteractor.setLegacyAlternateBouncer(null);
|
|
||||||
hideAlternateBouncer(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a new legacy alternate bouncer. Only used if modern alternate bouncer is NOT enabled.
|
|
||||||
*/
|
|
||||||
public void setLegacyAlternateBouncer(@NonNull LegacyAlternateBouncer alternateBouncerLegacy) {
|
|
||||||
if (!mIsModernAlternateBouncerEnabled) {
|
|
||||||
if (!Objects.equals(mAlternateBouncerInteractor.getLegacyAlternateBouncer(),
|
|
||||||
alternateBouncerLegacy)) {
|
|
||||||
mAlternateBouncerInteractor.setLegacyAlternateBouncer(alternateBouncerLegacy);
|
|
||||||
hideAlternateBouncer(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the given OccludingAppBiometricUI to null if it's the current auth interceptor. Else,
|
* Sets the given OccludingAppBiometricUI to null if it's the current auth interceptor. Else,
|
||||||
@@ -1386,7 +1355,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
|
|
||||||
public void dump(PrintWriter pw) {
|
public void dump(PrintWriter pw) {
|
||||||
pw.println("StatusBarKeyguardViewManager:");
|
pw.println("StatusBarKeyguardViewManager:");
|
||||||
pw.println(" mIsModernAlternateBouncerEnabled: " + mIsModernAlternateBouncerEnabled);
|
|
||||||
pw.println(" mRemoteInputActive: " + mRemoteInputActive);
|
pw.println(" mRemoteInputActive: " + mRemoteInputActive);
|
||||||
pw.println(" mDozing: " + mDozing);
|
pw.println(" mDozing: " + mDozing);
|
||||||
pw.println(" mAfterKeyguardGoneAction: " + mAfterKeyguardGoneAction);
|
pw.println(" mAfterKeyguardGoneAction: " + mAfterKeyguardGoneAction);
|
||||||
@@ -1584,28 +1552,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
|| mode == KeyguardSecurityModel.SecurityMode.SimPuk;
|
|| mode == KeyguardSecurityModel.SecurityMode.SimPuk;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Delegate used to send show and hide events to an alternate bouncer.
|
|
||||||
*/
|
|
||||||
public interface LegacyAlternateBouncer {
|
|
||||||
/**
|
|
||||||
* Show alternate authentication bouncer.
|
|
||||||
* @return whether alternate auth method was newly shown
|
|
||||||
*/
|
|
||||||
boolean showAlternateBouncer();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hide alternate authentication bouncer
|
|
||||||
* @return whether the alternate auth method was newly hidden
|
|
||||||
*/
|
|
||||||
boolean hideAlternateBouncer();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return true if the alternate auth bouncer is showing
|
|
||||||
*/
|
|
||||||
boolean isShowingAlternateBouncer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delegate used to send show and hide events to an alternate authentication method instead of
|
* Delegate used to send show and hide events to an alternate authentication method instead of
|
||||||
* the regular pin/pattern/password bouncer.
|
* the regular pin/pattern/password bouncer.
|
||||||
|
|||||||
@@ -51,13 +51,10 @@ import android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG
|
|||||||
import android.view.WindowMetrics
|
import android.view.WindowMetrics
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.airbnb.lottie.LottieAnimationView
|
import com.airbnb.lottie.LottieAnimationView
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor
|
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.SysuiTestableContext
|
import com.android.systemui.SysuiTestableContext
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.flags.FakeFeatureFlags
|
|
||||||
import com.android.systemui.flags.Flags.MODERN_ALTERNATE_BOUNCER
|
|
||||||
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
|
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardBouncerRepository
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardBouncerRepository
|
||||||
@@ -113,7 +110,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
private lateinit var keyguardBouncerRepository: FakeKeyguardBouncerRepository
|
private lateinit var keyguardBouncerRepository: FakeKeyguardBouncerRepository
|
||||||
private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor
|
private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor
|
||||||
private val featureFlags = FakeFeatureFlags()
|
|
||||||
private val executor = FakeExecutor(FakeSystemClock())
|
private val executor = FakeExecutor(FakeSystemClock())
|
||||||
private lateinit var overlayController: ISidefpsController
|
private lateinit var overlayController: ISidefpsController
|
||||||
private lateinit var sideFpsController: SideFpsController
|
private lateinit var sideFpsController: SideFpsController
|
||||||
@@ -134,7 +130,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
featureFlags.set(MODERN_ALTERNATE_BOUNCER, true)
|
|
||||||
keyguardBouncerRepository = FakeKeyguardBouncerRepository()
|
keyguardBouncerRepository = FakeKeyguardBouncerRepository()
|
||||||
alternateBouncerInteractor =
|
alternateBouncerInteractor =
|
||||||
AlternateBouncerInteractor(
|
AlternateBouncerInteractor(
|
||||||
@@ -144,8 +139,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
|||||||
FakeBiometricSettingsRepository(),
|
FakeBiometricSettingsRepository(),
|
||||||
FakeDeviceEntryFingerprintAuthRepository(),
|
FakeDeviceEntryFingerprintAuthRepository(),
|
||||||
FakeSystemClock(),
|
FakeSystemClock(),
|
||||||
mock(KeyguardUpdateMonitor::class.java),
|
|
||||||
featureFlags,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
context.addMockSystemService(DisplayManager::class.java, displayManager)
|
context.addMockSystemService(DisplayManager::class.java, displayManager)
|
||||||
@@ -246,7 +239,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
|||||||
handler,
|
handler,
|
||||||
alternateBouncerInteractor,
|
alternateBouncerInteractor,
|
||||||
TestCoroutineScope(),
|
TestCoroutineScope(),
|
||||||
featureFlags,
|
|
||||||
dumpManager,
|
dumpManager,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,6 @@ public class UdfpsKeyguardViewControllerBaseTest extends SysuiTestCase {
|
|||||||
|
|
||||||
protected UdfpsKeyguardViewController createUdfpsKeyguardViewController(
|
protected UdfpsKeyguardViewController createUdfpsKeyguardViewController(
|
||||||
boolean useModernBouncer, boolean useExpandedOverlay) {
|
boolean useModernBouncer, boolean useExpandedOverlay) {
|
||||||
mFeatureFlags.set(Flags.MODERN_ALTERNATE_BOUNCER, useModernBouncer);
|
|
||||||
mFeatureFlags.set(Flags.UDFPS_NEW_TOUCH_DETECTION, useExpandedOverlay);
|
mFeatureFlags.set(Flags.UDFPS_NEW_TOUCH_DETECTION, useExpandedOverlay);
|
||||||
UdfpsKeyguardViewController controller = new UdfpsKeyguardViewController(
|
UdfpsKeyguardViewController controller = new UdfpsKeyguardViewController(
|
||||||
mView,
|
mView,
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ import android.testing.AndroidTestingRunner
|
|||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.keyguard.KeyguardSecurityModel
|
import com.android.keyguard.KeyguardSecurityModel
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor
|
|
||||||
import com.android.systemui.classifier.FalsingCollector
|
import com.android.systemui.classifier.FalsingCollector
|
||||||
import com.android.systemui.flags.FeatureFlags
|
|
||||||
import com.android.systemui.keyguard.DismissCallbackRegistry
|
import com.android.systemui.keyguard.DismissCallbackRegistry
|
||||||
import com.android.systemui.keyguard.data.BouncerView
|
import com.android.systemui.keyguard.data.BouncerView
|
||||||
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
||||||
@@ -100,8 +98,6 @@ class UdfpsKeyguardViewControllerWithCoroutinesTest : UdfpsKeyguardViewControlle
|
|||||||
mock(BiometricSettingsRepository::class.java),
|
mock(BiometricSettingsRepository::class.java),
|
||||||
mock(DeviceEntryFingerprintAuthRepository::class.java),
|
mock(DeviceEntryFingerprintAuthRepository::class.java),
|
||||||
mock(SystemClock::class.java),
|
mock(SystemClock::class.java),
|
||||||
mock(KeyguardUpdateMonitor::class.java),
|
|
||||||
mock(FeatureFlags::class.java)
|
|
||||||
)
|
)
|
||||||
return createUdfpsKeyguardViewController(
|
return createUdfpsKeyguardViewController(
|
||||||
/* useModernBouncer */ true, /* useExpandedOverlay */
|
/* useModernBouncer */ true, /* useExpandedOverlay */
|
||||||
|
|||||||
@@ -18,11 +18,8 @@ package com.android.systemui.keyguard.domain.interactor
|
|||||||
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor
|
|
||||||
import com.android.keyguard.ViewMediatorCallback
|
import com.android.keyguard.ViewMediatorCallback
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.flags.FakeFeatureFlags
|
|
||||||
import com.android.systemui.flags.Flags
|
|
||||||
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
|
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
||||||
@@ -40,10 +37,8 @@ import org.junit.Assert.assertTrue
|
|||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.ArgumentCaptor
|
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
import org.mockito.Mockito.verify
|
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
@@ -58,9 +53,7 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var statusBarStateController: StatusBarStateController
|
@Mock private lateinit var statusBarStateController: StatusBarStateController
|
||||||
@Mock private lateinit var keyguardStateController: KeyguardStateController
|
@Mock private lateinit var keyguardStateController: KeyguardStateController
|
||||||
@Mock private lateinit var systemClock: SystemClock
|
@Mock private lateinit var systemClock: SystemClock
|
||||||
@Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor
|
|
||||||
@Mock private lateinit var bouncerLogger: TableLogBuffer
|
@Mock private lateinit var bouncerLogger: TableLogBuffer
|
||||||
private lateinit var featureFlags: FakeFeatureFlags
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
@@ -74,7 +67,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
||||||
deviceEntryFingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
|
deviceEntryFingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
|
||||||
featureFlags = FakeFeatureFlags().apply { this.set(Flags.MODERN_ALTERNATE_BOUNCER, true) }
|
|
||||||
underTest =
|
underTest =
|
||||||
AlternateBouncerInteractor(
|
AlternateBouncerInteractor(
|
||||||
statusBarStateController,
|
statusBarStateController,
|
||||||
@@ -83,8 +75,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
|||||||
biometricSettingsRepository,
|
biometricSettingsRepository,
|
||||||
deviceEntryFingerprintAuthRepository,
|
deviceEntryFingerprintAuthRepository,
|
||||||
systemClock,
|
systemClock,
|
||||||
keyguardUpdateMonitor,
|
|
||||||
featureFlags,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,14 +124,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
|||||||
assertFalse(underTest.canShowAlternateBouncerForFingerprint())
|
assertFalse(underTest.canShowAlternateBouncerForFingerprint())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun canShowAlternateBouncerForFingerprint_isDozing() {
|
|
||||||
givenCanShowAlternateBouncer()
|
|
||||||
whenever(statusBarStateController.isDozing).thenReturn(true)
|
|
||||||
|
|
||||||
assertFalse(underTest.canShowAlternateBouncerForFingerprint())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun show_whenCanShow() {
|
fun show_whenCanShow() {
|
||||||
givenCanShowAlternateBouncer()
|
givenCanShowAlternateBouncer()
|
||||||
@@ -182,42 +164,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
|||||||
assertFalse(bouncerRepository.alternateBouncerVisible.value)
|
assertFalse(bouncerRepository.alternateBouncerVisible.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun onUnlockedIsFalse_doesNotHide() {
|
|
||||||
// GIVEN alternate bouncer is showing
|
|
||||||
bouncerRepository.setAlternateVisible(true)
|
|
||||||
|
|
||||||
val keyguardStateControllerCallbackCaptor =
|
|
||||||
ArgumentCaptor.forClass(KeyguardStateController.Callback::class.java)
|
|
||||||
verify(keyguardStateController).addCallback(keyguardStateControllerCallbackCaptor.capture())
|
|
||||||
|
|
||||||
// WHEN isUnlocked=false
|
|
||||||
givenCanShowAlternateBouncer()
|
|
||||||
whenever(keyguardStateController.isUnlocked).thenReturn(false)
|
|
||||||
keyguardStateControllerCallbackCaptor.value.onUnlockedChanged()
|
|
||||||
|
|
||||||
// THEN the alternate bouncer is still visible
|
|
||||||
assertTrue(bouncerRepository.alternateBouncerVisible.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun onUnlockedChangedIsTrue_hide() {
|
|
||||||
// GIVEN alternate bouncer is showing
|
|
||||||
bouncerRepository.setAlternateVisible(true)
|
|
||||||
|
|
||||||
val keyguardStateControllerCallbackCaptor =
|
|
||||||
ArgumentCaptor.forClass(KeyguardStateController.Callback::class.java)
|
|
||||||
verify(keyguardStateController).addCallback(keyguardStateControllerCallbackCaptor.capture())
|
|
||||||
|
|
||||||
// WHEN isUnlocked=true
|
|
||||||
givenCanShowAlternateBouncer()
|
|
||||||
whenever(keyguardStateController.isUnlocked).thenReturn(true)
|
|
||||||
keyguardStateControllerCallbackCaptor.value.onUnlockedChanged()
|
|
||||||
|
|
||||||
// THEN the alternate bouncer is hidden
|
|
||||||
assertFalse(bouncerRepository.alternateBouncerVisible.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun givenCanShowAlternateBouncer() {
|
private fun givenCanShowAlternateBouncer() {
|
||||||
bouncerRepository.setAlternateBouncerUIAvailable(true)
|
bouncerRepository.setAlternateBouncerUIAvailable(true)
|
||||||
biometricSettingsRepository.setFingerprintEnrolled(true)
|
biometricSettingsRepository.setFingerprintEnrolled(true)
|
||||||
@@ -225,7 +171,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
|||||||
biometricSettingsRepository.setFingerprintEnabledByDevicePolicy(true)
|
biometricSettingsRepository.setFingerprintEnabledByDevicePolicy(true)
|
||||||
deviceEntryFingerprintAuthRepository.setLockedOut(false)
|
deviceEntryFingerprintAuthRepository.setLockedOut(false)
|
||||||
whenever(keyguardStateController.isUnlocked).thenReturn(false)
|
whenever(keyguardStateController.isUnlocked).thenReturn(false)
|
||||||
whenever(statusBarStateController.isDozing).thenReturn(false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun givenCannotShowAlternateBouncer() {
|
private fun givenCannotShowAlternateBouncer() {
|
||||||
|
|||||||
Reference in New Issue
Block a user