Merge "[Bouncer] Fix flicker tests." into tm-qpr-dev
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.systemui.keyguard.data
|
||||
|
||||
import android.view.KeyEvent
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
import java.lang.ref.WeakReference
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -45,4 +46,9 @@ interface BouncerViewDelegate {
|
||||
fun dispatchBackKeyEventPreIme(): Boolean
|
||||
fun showNextSecurityScreenOrFinish(): Boolean
|
||||
fun resume()
|
||||
fun setDismissAction(
|
||||
onDismissAction: ActivityStarter.OnDismissAction?,
|
||||
cancelAction: Runnable?,
|
||||
)
|
||||
fun willDismissWithActions(): Boolean
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback
|
||||
import com.android.keyguard.ViewMediatorCallback
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel
|
||||
import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel
|
||||
import com.android.systemui.statusbar.phone.KeyguardBouncer
|
||||
@@ -60,8 +59,6 @@ constructor(
|
||||
val hide = _hide.asStateFlow()
|
||||
private val _startingToHide = MutableStateFlow(false)
|
||||
val startingToHide = _startingToHide.asStateFlow()
|
||||
private val _onDismissAction = MutableStateFlow<BouncerCallbackActionsModel?>(null)
|
||||
val onDismissAction = _onDismissAction.asStateFlow()
|
||||
private val _disappearAnimation = MutableStateFlow<Runnable?>(null)
|
||||
val startingDisappearAnimation = _disappearAnimation.asStateFlow()
|
||||
private val _keyguardPosition = MutableStateFlow(0f)
|
||||
@@ -126,10 +123,6 @@ constructor(
|
||||
_startingToHide.value = startingToHide
|
||||
}
|
||||
|
||||
fun setOnDismissAction(bouncerCallbackActionsModel: BouncerCallbackActionsModel?) {
|
||||
_onDismissAction.value = bouncerCallbackActionsModel
|
||||
}
|
||||
|
||||
fun setStartDisappearAnimation(runnable: Runnable?) {
|
||||
_disappearAnimation.value = runnable
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry
|
||||
import com.android.systemui.keyguard.data.BouncerView
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
||||
import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel
|
||||
import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
@@ -94,8 +93,6 @@ constructor(
|
||||
val showMessage: Flow<BouncerShowMessageModel> = repository.showMessage.filterNotNull()
|
||||
val startingDisappearAnimation: Flow<Runnable> =
|
||||
repository.startingDisappearAnimation.filterNotNull()
|
||||
val onDismissAction: Flow<BouncerCallbackActionsModel> =
|
||||
repository.onDismissAction.filterNotNull()
|
||||
val resourceUpdateRequests: Flow<Boolean> = repository.resourceUpdateRequests.filter { it }
|
||||
val keyguardPosition: Flow<Float> = repository.keyguardPosition
|
||||
val panelExpansionAmount: Flow<Float> = repository.panelExpansionAmount
|
||||
@@ -160,7 +157,6 @@ constructor(
|
||||
}
|
||||
keyguardStateController.notifyBouncerShowing(true)
|
||||
callbackInteractor.dispatchStartingToShow()
|
||||
|
||||
Trace.endSection()
|
||||
}
|
||||
|
||||
@@ -179,7 +175,6 @@ constructor(
|
||||
keyguardStateController.notifyBouncerShowing(false /* showing */)
|
||||
cancelShowRunnable()
|
||||
repository.setShowingSoon(false)
|
||||
repository.setOnDismissAction(null)
|
||||
repository.setVisible(false)
|
||||
repository.setHide(true)
|
||||
repository.setShow(null)
|
||||
@@ -241,7 +236,7 @@ constructor(
|
||||
onDismissAction: ActivityStarter.OnDismissAction?,
|
||||
cancelAction: Runnable?
|
||||
) {
|
||||
repository.setOnDismissAction(BouncerCallbackActionsModel(onDismissAction, cancelAction))
|
||||
bouncerView.delegate?.setDismissAction(onDismissAction, cancelAction)
|
||||
}
|
||||
|
||||
/** Update the resources of the views. */
|
||||
@@ -319,7 +314,7 @@ constructor(
|
||||
|
||||
/** Return whether bouncer will dismiss with actions */
|
||||
fun willDismissWithAction(): Boolean {
|
||||
return repository.onDismissAction.value?.onDismissAction != null
|
||||
return bouncerView.delegate?.willDismissWithActions() == true
|
||||
}
|
||||
|
||||
/** Returns whether the bouncer should be full screen. */
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.android.keyguard.dagger.KeyguardBouncerComponent
|
||||
import com.android.systemui.keyguard.data.BouncerViewDelegate
|
||||
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBouncerViewModel
|
||||
import com.android.systemui.lifecycle.repeatWhenAttached
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
import com.android.systemui.statusbar.phone.KeyguardBouncer.EXPANSION_VISIBLE
|
||||
import kotlinx.coroutines.awaitCancellation
|
||||
import kotlinx.coroutines.flow.collect
|
||||
@@ -75,6 +76,17 @@ object KeyguardBouncerViewBinder {
|
||||
hostViewController.showPrimarySecurityScreen()
|
||||
hostViewController.onResume()
|
||||
}
|
||||
|
||||
override fun setDismissAction(
|
||||
onDismissAction: ActivityStarter.OnDismissAction?,
|
||||
cancelAction: Runnable?
|
||||
) {
|
||||
hostViewController.setOnDismissAction(onDismissAction, cancelAction)
|
||||
}
|
||||
|
||||
override fun willDismissWithActions(): Boolean {
|
||||
return hostViewController.hasDismissActions()
|
||||
}
|
||||
}
|
||||
view.repeatWhenAttached {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
@@ -121,15 +133,6 @@ object KeyguardBouncerViewBinder {
|
||||
viewModel.startingToHide.collect { hostViewController.onStartingToHide() }
|
||||
}
|
||||
|
||||
launch {
|
||||
viewModel.setDismissAction.collect {
|
||||
hostViewController.setOnDismissAction(
|
||||
it.onDismissAction,
|
||||
it.cancelAction
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
launch {
|
||||
viewModel.startDisappearAnimation.collect {
|
||||
hostViewController.startDisappearAnimation(it)
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.view.View
|
||||
import com.android.systemui.keyguard.data.BouncerView
|
||||
import com.android.systemui.keyguard.data.BouncerViewDelegate
|
||||
import com.android.systemui.keyguard.domain.interactor.BouncerInteractor
|
||||
import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel
|
||||
import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel
|
||||
import com.android.systemui.statusbar.phone.KeyguardBouncer.EXPANSION_VISIBLE
|
||||
@@ -63,9 +62,6 @@ constructor(
|
||||
/** Observe whether bouncer is starting to hide. */
|
||||
val startingToHide: Flow<Unit> = interactor.startingToHide
|
||||
|
||||
/** Observe whether we want to set the dismiss action to the bouncer. */
|
||||
val setDismissAction: Flow<BouncerCallbackActionsModel> = interactor.onDismissAction
|
||||
|
||||
/** Observe whether we want to start the disappear animation. */
|
||||
val startDisappearAnimation: Flow<Runnable> = interactor.startingDisappearAnimation
|
||||
|
||||
|
||||
@@ -171,7 +171,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
if (mBouncerAnimating) {
|
||||
mCentralSurfaces.setBouncerHiddenFraction(expansion);
|
||||
}
|
||||
updateStates();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -27,8 +27,8 @@ import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.classifier.FalsingCollector
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry
|
||||
import com.android.systemui.keyguard.data.BouncerView
|
||||
import com.android.systemui.keyguard.data.BouncerViewDelegate
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
||||
import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel
|
||||
import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel
|
||||
import com.android.systemui.plugins.ActivityStarter
|
||||
@@ -57,6 +57,7 @@ class BouncerInteractorTest : SysuiTestCase() {
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private lateinit var repository: KeyguardBouncerRepository
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var bouncerView: BouncerView
|
||||
@Mock private lateinit var bouncerViewDelegate: BouncerViewDelegate
|
||||
@Mock private lateinit var keyguardStateController: KeyguardStateController
|
||||
@Mock private lateinit var keyguardSecurityModel: KeyguardSecurityModel
|
||||
@Mock private lateinit var bouncerCallbackInteractor: BouncerCallbackInteractor
|
||||
@@ -86,6 +87,7 @@ class BouncerInteractorTest : SysuiTestCase() {
|
||||
)
|
||||
`when`(repository.startingDisappearAnimation.value).thenReturn(null)
|
||||
`when`(repository.show.value).thenReturn(null)
|
||||
`when`(bouncerView.delegate).thenReturn(bouncerViewDelegate)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -124,7 +126,6 @@ class BouncerInteractorTest : SysuiTestCase() {
|
||||
verify(falsingCollector).onBouncerHidden()
|
||||
verify(keyguardStateController).notifyBouncerShowing(false)
|
||||
verify(repository).setShowingSoon(false)
|
||||
verify(repository).setOnDismissAction(null)
|
||||
verify(repository).setVisible(false)
|
||||
verify(repository).setHide(true)
|
||||
verify(repository).setShow(null)
|
||||
@@ -178,8 +179,7 @@ class BouncerInteractorTest : SysuiTestCase() {
|
||||
val onDismissAction = mock(ActivityStarter.OnDismissAction::class.java)
|
||||
val cancelAction = mock(Runnable::class.java)
|
||||
bouncerInteractor.setDismissAction(onDismissAction, cancelAction)
|
||||
verify(repository)
|
||||
.setOnDismissAction(BouncerCallbackActionsModel(onDismissAction, cancelAction))
|
||||
verify(bouncerViewDelegate).setDismissAction(onDismissAction, cancelAction)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -269,10 +269,9 @@ class BouncerInteractorTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun testWillDismissWithAction() {
|
||||
`when`(repository.onDismissAction.value?.onDismissAction)
|
||||
.thenReturn(mock(ActivityStarter.OnDismissAction::class.java))
|
||||
`when`(bouncerViewDelegate.willDismissWithActions()).thenReturn(true)
|
||||
assertThat(bouncerInteractor.willDismissWithAction()).isTrue()
|
||||
`when`(repository.onDismissAction.value?.onDismissAction).thenReturn(null)
|
||||
`when`(bouncerViewDelegate.willDismissWithActions()).thenReturn(false)
|
||||
assertThat(bouncerInteractor.willDismissWithAction()).isFalse()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user