Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java +2 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import static com.android.systemui.log.LogBufferHelperKt.logcatLogBuffer; import static com.google.common.truth.Truth.assertThat; import static kotlinx.coroutines.flow.FlowKt.emptyFlow; import static kotlinx.coroutines.flow.SharedFlowKt.MutableSharedFlow; import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; import static org.mockito.ArgumentMatchers.any; Loading Loading @@ -85,6 +84,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingObserver; import com.android.systemui.keyguard.shared.model.KeyguardState; import com.android.systemui.keyguard.ui.transitions.BlurConfig; import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel; import com.android.systemui.keyguard.ui.viewmodel.KeyguardTouchHandlingViewModel; Loading Loading @@ -170,7 +170,6 @@ import com.android.wm.shell.animation.FlingAnimationUtils; import dagger.Lazy; import kotlinx.coroutines.CoroutineDispatcher; import kotlinx.coroutines.channels.BufferOverflow; import kotlinx.coroutines.test.TestScope; import org.junit.After; Loading Loading @@ -340,7 +339,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase { when(mKeyguardTransitionInteractor.isInTransition(any(), any())) .thenReturn(emptyFlow()); when(mKeyguardTransitionInteractor.getCurrentKeyguardState()).thenReturn( MutableSharedFlow(0, 0, BufferOverflow.SUSPEND)); MutableStateFlow(KeyguardState.LOCKSCREEN)); when(mDeviceEntryFaceAuthInteractor.isBypassEnabled()).thenReturn(MutableStateFlow(false)); DeviceEntryUdfpsInteractor deviceEntryUdfpsInteractor = mock(DeviceEntryUdfpsInteractor.class); Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.kt +5 −4 Original line number Diff line number Diff line Loading @@ -245,7 +245,6 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa } @Test @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer fun testLockscreenPartlyShowing_groupAndSectionChangesNotAllowed() = testScope.runTest { // GIVEN the panel true expanded and device isn't pulsing Loading @@ -263,7 +262,6 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa } @Test @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer fun testLockscreenFullyShowing_groupAndSectionChangesNotAllowed() = testScope.runTest { // GIVEN the panel true expanded and device isn't pulsing Loading Loading @@ -1001,12 +999,15 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa } else { statusBarStateListener.onExpandedChanged(panelExpanded || lockscreenShowing > 0.0f) } testScope.testScheduler.runCurrent() } private fun makeLockscreenTransitionStep(value: Float): TransitionStep { return when (value) { 0.0f -> TransitionStep(KeyguardState.GONE) 1.0f -> TransitionStep(KeyguardState.LOCKSCREEN) 0.0f -> TransitionStep(from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, value = 1f) 1.0f -> TransitionStep(from = KeyguardState.GONE, to = KeyguardState.LOCKSCREEN, value = 1f) else -> TransitionStep( KeyguardState.GONE, Loading packages/SystemUI/src/com/android/systemui/bouncer/data/repository/KeyguardBouncerRepository.kt +14 −14 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EX import com.android.systemui.bouncer.shared.model.BouncerDismissActionModel import com.android.systemui.bouncer.shared.model.BouncerShowMessageModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.log.dagger.BouncerTableLog import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.log.table.logDiffsForTable Loading Loading @@ -137,7 +137,7 @@ open class KeyguardBouncerRepositoryImpl @Inject constructor( private val clock: SystemClock, @Application private val applicationScope: CoroutineScope, @Background private val backgroundScope: CoroutineScope, @BouncerTableLog private val buffer: TableLogBuffer, ) : KeyguardBouncerRepository { override var bouncerDismissActionModel: BouncerDismissActionModel? = null Loading Loading @@ -292,47 +292,47 @@ constructor( primaryBouncerShow .logDiffsForTable(buffer, "", "PrimaryBouncerShow", false) .onEach { Log.d(TAG, "Keyguard Bouncer is ${if (it) "showing" else "hiding."}") } .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerShowingSoon .logDiffsForTable(buffer, "", "PrimaryBouncerShowingSoon", false) .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerStartingToHide .logDiffsForTable(buffer, "", "PrimaryBouncerStartingToHide", false) .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerStartingDisappearAnimation .map { it != null } .logDiffsForTable(buffer, "", "PrimaryBouncerStartingDisappearAnimation", false) .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerScrimmed .logDiffsForTable(buffer, "", "PrimaryBouncerScrimmed", false) .launchIn(applicationScope) .launchIn(backgroundScope) panelExpansionAmount .map { (it * 1000).toInt() } .logDiffsForTable(buffer, "", "PanelExpansionAmountMillis", -1) .launchIn(applicationScope) .launchIn(backgroundScope) keyguardPosition .filterNotNull() .map { it.toInt() } .logDiffsForTable(buffer, "", "KeyguardPosition", -1) .launchIn(applicationScope) .launchIn(backgroundScope) isBackButtonEnabled .filterNotNull() .logDiffsForTable(buffer, "", "IsBackButtonEnabled", false) .launchIn(applicationScope) .launchIn(backgroundScope) showMessage .map { it?.message } .logDiffsForTable(buffer, "", "ShowMessage", null) .launchIn(applicationScope) .launchIn(backgroundScope) resourceUpdateRequests .logDiffsForTable(buffer, "", "ResourceUpdateRequests", false) .launchIn(applicationScope) .launchIn(backgroundScope) alternateBouncerVisible .logDiffsForTable(buffer, "", "AlternateBouncerVisible", false) .launchIn(applicationScope) .launchIn(backgroundScope) lastShownSecurityMode .map { it.name } .logDiffsForTable(buffer, "", "lastShownSecurityMode", null) .launchIn(applicationScope) .launchIn(backgroundScope) } companion object { Loading packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/BouncerViewBinder.kt +4 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransitionViewModel Loading @@ -22,6 +23,7 @@ import com.android.systemui.user.domain.interactor.SelectedUserInteractor import dagger.Lazy import java.util.Optional import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope /** Helper data class that allows to lazy load all the dependencies of the legacy bouncer. */ Loading @@ -29,6 +31,7 @@ import kotlinx.coroutines.CoroutineScope data class LegacyBouncerDependencies @Inject constructor( @Main val mainDispatcher: CoroutineDispatcher, val viewModel: KeyguardBouncerViewModel, val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel, val glanceableHubToPrimaryBouncerTransitionViewModel: Loading Loading @@ -82,6 +85,7 @@ constructor( } else { val deps = legacyBouncerDependencies.get() KeyguardBouncerViewBinder.bind( deps.mainDispatcher, view, deps.viewModel, deps.primaryBouncerToGoneTransitionViewModel, Loading packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt +28 −27 Original line number Diff line number Diff line Loading @@ -40,13 +40,14 @@ import com.android.systemui.log.BouncerLogger import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.AuthContextPlugin import com.android.systemui.user.domain.interactor.SelectedUserInteractor import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.flow.filter /** Binds the bouncer container to its view model. */ object KeyguardBouncerViewBinder { @JvmStatic fun bind( mainImmediateDispatcher: CoroutineDispatcher, view: ViewGroup, viewModel: KeyguardBouncerViewModel, primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel, Loading Loading @@ -117,6 +118,32 @@ object KeyguardBouncerViewBinder { securityContainerController.showPromptReason(reason) } } view.repeatWhenAttached(mainImmediateDispatcher) { repeatOnLifecycle(Lifecycle.State.CREATED) { launch { viewModel.bouncerExpansionAmount.collect { expansion -> securityContainerController.setExpansion(expansion) if (expansion == EXPANSION_VISIBLE) { securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) } } } launch { primaryBouncerToGoneTransitionViewModel.bouncerAlpha.collect { alpha -> securityContainerController.setAlpha(alpha) } } launch { viewModel.keyguardPosition.collect { position -> securityContainerController.updateKeyguardPosition(position) } } } } view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.CREATED) { try { Loading Loading @@ -190,38 +217,12 @@ object KeyguardBouncerViewBinder { } } launch { viewModel.bouncerExpansionAmount.collect { expansion -> securityContainerController.setExpansion(expansion) } } launch { primaryBouncerToGoneTransitionViewModel.bouncerAlpha.collect { alpha -> securityContainerController.setAlpha(alpha) } } launch { viewModel.bouncerExpansionAmount .filter { it == EXPANSION_VISIBLE } .collect { securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) } } launch { viewModel.isInteractable.collect { isInteractable -> securityContainerController.setInteractable(isInteractable) } } launch { viewModel.keyguardPosition.collect { position -> securityContainerController.updateKeyguardPosition(position) } } launch { viewModel.updateResources.collect { securityContainerController.updateResources() Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java +2 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import static com.android.systemui.log.LogBufferHelperKt.logcatLogBuffer; import static com.google.common.truth.Truth.assertThat; import static kotlinx.coroutines.flow.FlowKt.emptyFlow; import static kotlinx.coroutines.flow.SharedFlowKt.MutableSharedFlow; import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; import static org.mockito.ArgumentMatchers.any; Loading Loading @@ -85,6 +84,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingObserver; import com.android.systemui.keyguard.shared.model.KeyguardState; import com.android.systemui.keyguard.ui.transitions.BlurConfig; import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel; import com.android.systemui.keyguard.ui.viewmodel.KeyguardTouchHandlingViewModel; Loading Loading @@ -170,7 +170,6 @@ import com.android.wm.shell.animation.FlingAnimationUtils; import dagger.Lazy; import kotlinx.coroutines.CoroutineDispatcher; import kotlinx.coroutines.channels.BufferOverflow; import kotlinx.coroutines.test.TestScope; import org.junit.After; Loading Loading @@ -340,7 +339,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase { when(mKeyguardTransitionInteractor.isInTransition(any(), any())) .thenReturn(emptyFlow()); when(mKeyguardTransitionInteractor.getCurrentKeyguardState()).thenReturn( MutableSharedFlow(0, 0, BufferOverflow.SUSPEND)); MutableStateFlow(KeyguardState.LOCKSCREEN)); when(mDeviceEntryFaceAuthInteractor.isBypassEnabled()).thenReturn(MutableStateFlow(false)); DeviceEntryUdfpsInteractor deviceEntryUdfpsInteractor = mock(DeviceEntryUdfpsInteractor.class); Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.kt +5 −4 Original line number Diff line number Diff line Loading @@ -245,7 +245,6 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa } @Test @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer fun testLockscreenPartlyShowing_groupAndSectionChangesNotAllowed() = testScope.runTest { // GIVEN the panel true expanded and device isn't pulsing Loading @@ -263,7 +262,6 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa } @Test @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer fun testLockscreenFullyShowing_groupAndSectionChangesNotAllowed() = testScope.runTest { // GIVEN the panel true expanded and device isn't pulsing Loading Loading @@ -1001,12 +999,15 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa } else { statusBarStateListener.onExpandedChanged(panelExpanded || lockscreenShowing > 0.0f) } testScope.testScheduler.runCurrent() } private fun makeLockscreenTransitionStep(value: Float): TransitionStep { return when (value) { 0.0f -> TransitionStep(KeyguardState.GONE) 1.0f -> TransitionStep(KeyguardState.LOCKSCREEN) 0.0f -> TransitionStep(from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, value = 1f) 1.0f -> TransitionStep(from = KeyguardState.GONE, to = KeyguardState.LOCKSCREEN, value = 1f) else -> TransitionStep( KeyguardState.GONE, Loading
packages/SystemUI/src/com/android/systemui/bouncer/data/repository/KeyguardBouncerRepository.kt +14 −14 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants.EX import com.android.systemui.bouncer.shared.model.BouncerDismissActionModel import com.android.systemui.bouncer.shared.model.BouncerShowMessageModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.log.dagger.BouncerTableLog import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.log.table.logDiffsForTable Loading Loading @@ -137,7 +137,7 @@ open class KeyguardBouncerRepositoryImpl @Inject constructor( private val clock: SystemClock, @Application private val applicationScope: CoroutineScope, @Background private val backgroundScope: CoroutineScope, @BouncerTableLog private val buffer: TableLogBuffer, ) : KeyguardBouncerRepository { override var bouncerDismissActionModel: BouncerDismissActionModel? = null Loading Loading @@ -292,47 +292,47 @@ constructor( primaryBouncerShow .logDiffsForTable(buffer, "", "PrimaryBouncerShow", false) .onEach { Log.d(TAG, "Keyguard Bouncer is ${if (it) "showing" else "hiding."}") } .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerShowingSoon .logDiffsForTable(buffer, "", "PrimaryBouncerShowingSoon", false) .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerStartingToHide .logDiffsForTable(buffer, "", "PrimaryBouncerStartingToHide", false) .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerStartingDisappearAnimation .map { it != null } .logDiffsForTable(buffer, "", "PrimaryBouncerStartingDisappearAnimation", false) .launchIn(applicationScope) .launchIn(backgroundScope) primaryBouncerScrimmed .logDiffsForTable(buffer, "", "PrimaryBouncerScrimmed", false) .launchIn(applicationScope) .launchIn(backgroundScope) panelExpansionAmount .map { (it * 1000).toInt() } .logDiffsForTable(buffer, "", "PanelExpansionAmountMillis", -1) .launchIn(applicationScope) .launchIn(backgroundScope) keyguardPosition .filterNotNull() .map { it.toInt() } .logDiffsForTable(buffer, "", "KeyguardPosition", -1) .launchIn(applicationScope) .launchIn(backgroundScope) isBackButtonEnabled .filterNotNull() .logDiffsForTable(buffer, "", "IsBackButtonEnabled", false) .launchIn(applicationScope) .launchIn(backgroundScope) showMessage .map { it?.message } .logDiffsForTable(buffer, "", "ShowMessage", null) .launchIn(applicationScope) .launchIn(backgroundScope) resourceUpdateRequests .logDiffsForTable(buffer, "", "ResourceUpdateRequests", false) .launchIn(applicationScope) .launchIn(backgroundScope) alternateBouncerVisible .logDiffsForTable(buffer, "", "AlternateBouncerVisible", false) .launchIn(applicationScope) .launchIn(backgroundScope) lastShownSecurityMode .map { it.name } .logDiffsForTable(buffer, "", "lastShownSecurityMode", null) .launchIn(applicationScope) .launchIn(backgroundScope) } companion object { Loading
packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/BouncerViewBinder.kt +4 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ import com.android.systemui.bouncer.ui.viewmodel.BouncerOverlayContentViewModel import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToPrimaryBouncerTransitionViewModel import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransitionViewModel Loading @@ -22,6 +23,7 @@ import com.android.systemui.user.domain.interactor.SelectedUserInteractor import dagger.Lazy import java.util.Optional import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope /** Helper data class that allows to lazy load all the dependencies of the legacy bouncer. */ Loading @@ -29,6 +31,7 @@ import kotlinx.coroutines.CoroutineScope data class LegacyBouncerDependencies @Inject constructor( @Main val mainDispatcher: CoroutineDispatcher, val viewModel: KeyguardBouncerViewModel, val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel, val glanceableHubToPrimaryBouncerTransitionViewModel: Loading Loading @@ -82,6 +85,7 @@ constructor( } else { val deps = legacyBouncerDependencies.get() KeyguardBouncerViewBinder.bind( deps.mainDispatcher, view, deps.viewModel, deps.primaryBouncerToGoneTransitionViewModel, Loading
packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt +28 −27 Original line number Diff line number Diff line Loading @@ -40,13 +40,14 @@ import com.android.systemui.log.BouncerLogger import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.AuthContextPlugin import com.android.systemui.user.domain.interactor.SelectedUserInteractor import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.flow.filter /** Binds the bouncer container to its view model. */ object KeyguardBouncerViewBinder { @JvmStatic fun bind( mainImmediateDispatcher: CoroutineDispatcher, view: ViewGroup, viewModel: KeyguardBouncerViewModel, primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel, Loading Loading @@ -117,6 +118,32 @@ object KeyguardBouncerViewBinder { securityContainerController.showPromptReason(reason) } } view.repeatWhenAttached(mainImmediateDispatcher) { repeatOnLifecycle(Lifecycle.State.CREATED) { launch { viewModel.bouncerExpansionAmount.collect { expansion -> securityContainerController.setExpansion(expansion) if (expansion == EXPANSION_VISIBLE) { securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) } } } launch { primaryBouncerToGoneTransitionViewModel.bouncerAlpha.collect { alpha -> securityContainerController.setAlpha(alpha) } } launch { viewModel.keyguardPosition.collect { position -> securityContainerController.updateKeyguardPosition(position) } } } } view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.CREATED) { try { Loading Loading @@ -190,38 +217,12 @@ object KeyguardBouncerViewBinder { } } launch { viewModel.bouncerExpansionAmount.collect { expansion -> securityContainerController.setExpansion(expansion) } } launch { primaryBouncerToGoneTransitionViewModel.bouncerAlpha.collect { alpha -> securityContainerController.setAlpha(alpha) } } launch { viewModel.bouncerExpansionAmount .filter { it == EXPANSION_VISIBLE } .collect { securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) } } launch { viewModel.isInteractable.collect { isInteractable -> securityContainerController.setInteractable(isInteractable) } } launch { viewModel.keyguardPosition.collect { position -> securityContainerController.updateKeyguardPosition(position) } } launch { viewModel.updateResources.collect { securityContainerController.updateResources() Loading