diff options
| author | 2023-11-15 13:43:58 +0000 | |
|---|---|---|
| committer | 2023-11-16 20:35:50 +0000 | |
| commit | b7ed9579c78f1ecddbcbd4d68549134f9439cd63 (patch) | |
| tree | 1f4033e45f398f2c742196aea3972eec854d5102 | |
| parent | fa492c0d549fb930b05f3c748f250c2ff83d9e2c (diff) | |
Make sure user tracking stops
There was one case of the user tracking not stopping, which resulted
in the incorrect number of notifications showing. Also simplify the
notification count logic slightly.
Test: atest SharedNotificationContainerViewModelTest
Bug: 296606746
Flag: ACONFIG com.android.systemui.keyguard_shade_migration_nssl DEVELOPMENT
Change-Id: I8a572087ba8c44d80cda192567fa187c4e132464
3 files changed, 27 insertions, 16 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt index ae765e40c790..49c729eada1f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt @@ -160,8 +160,15 @@ constructor( var mUdfpsKeyguardViewControllerLegacy: UdfpsKeyguardViewControllerLegacy? = null /** The touch helper responsible for the drag down animation. */ - val touchHelper = DragDownHelper(falsingManager, falsingCollector, this, - naturalScrollingSettingObserver, context) + val touchHelper = + DragDownHelper( + falsingManager, + falsingCollector, + this, + naturalScrollingSettingObserver, + shadeRepository, + context + ) private val splitShadeOverScroller: SplitShadeLockScreenOverScroller by lazy { splitShadeOverScrollerFactory.create({ qS }, { nsslController }) @@ -756,6 +763,7 @@ class DragDownHelper( private val falsingCollector: FalsingCollector, private val dragDownCallback: LockscreenShadeTransitionController, private val naturalScrollingSettingObserver: NaturalScrollingSettingObserver, + private val shadeRepository: ShadeRepository, context: Context ) : Gefingerpoken { @@ -808,8 +816,9 @@ class DragDownHelper( startingChild = null initialTouchY = y initialTouchX = x - isTrackpadReverseScroll = !naturalScrollingSettingObserver.isNaturalScrollingEnabled - && isTrackpadScroll(true, event) + isTrackpadReverseScroll = + !naturalScrollingSettingObserver.isNaturalScrollingEnabled && + isTrackpadScroll(true, event) } MotionEvent.ACTION_MOVE -> { val h = (if (isTrackpadReverseScroll) -1 else 1) * (y - initialTouchY) @@ -875,6 +884,7 @@ class DragDownHelper( } isDraggingDown = false isTrackpadReverseScroll = false + shadeRepository.setLegacyLockscreenShadeTracking(false) } else { stopDragging() return false diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt index 296ea884e5c3..09b4dfa31788 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt @@ -168,15 +168,11 @@ constructor( // When to limit notifications: on lockscreen with an unexpanded shade. Also, recalculate // when the notification stack has changed internally val limitedNotifications = - combineTransform( - isOnLockscreen, + combine( position, - shadeInteractor.shadeExpansion, interactor.notificationStackChanged.onStart { emit(Unit) }, - ) { isOnLockscreen, position, shadeExpansion, _ -> - if (isOnLockscreen && shadeExpansion == 0f) { - emit(calculateSpace(position.bottom - position.top)) - } + ) { position, _ -> + calculateSpace(position.bottom - position.top) } // When to show unlimited notifications: When the shade is fully expanded and the user is @@ -190,11 +186,14 @@ constructor( emit(-1) } } - - return merge( - limitedNotifications, - unlimitedNotifications, - ) + return isOnLockscreenWithoutShade + .flatMapLatest { isOnLockscreenWithoutShade -> + if (isOnLockscreenWithoutShade) { + limitedNotifications + } else { + unlimitedNotifications + } + } .distinctUntilChanged() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/DragDownHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/DragDownHelperTest.kt index ea7c06865001..ffde6015c127 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/DragDownHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/DragDownHelperTest.kt @@ -27,6 +27,7 @@ import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingOb import com.android.systemui.plugins.FalsingManager import com.android.systemui.statusbar.notification.row.ExpandableView import com.android.systemui.util.mockito.mock +import com.android.systemui.shade.data.repository.FakeShadeRepository import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -61,6 +62,7 @@ class DragDownHelperTest : SysuiTestCase() { falsingCollector, dragDownloadCallback, naturalScrollingSettingObserver, + FakeShadeRepository(), mContext, ).also { it.expandCallback = expandCallback |