diff options
| author | 2024-03-27 14:35:00 +0000 | |
|---|---|---|
| committer | 2024-03-27 14:35:00 +0000 | |
| commit | 9358d9b51c16d84624d6979c9b951686fa894644 (patch) | |
| tree | a77351305e7e0541ee1ae1198b7a18052447b51c | |
| parent | c8ba860379b897e3ce6df4621b75fe73b1c03c16 (diff) | |
| parent | c1db292b4d73818f04531519f5fadbec6c19a70e (diff) | |
Merge changes Id3b3a12b,I1a2b4244 into main
* changes:
Fix shadeExpansion being 0 when QS partially expanded
Fix qsFullScreen when QS only partially expanded
7 files changed, 108 insertions, 12 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt index 4e82feb3a2c6..5be5ef51bac0 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt @@ -326,7 +326,7 @@ class ShadeInteractorImplTest : SysuiTestCase() { } @Test - fun shadeExpansionWhenNotInSplitShadeAndQsExpanded() = + fun shadeExpansionWhenNotInSplitShadeAndQsPartiallyExpanded() = testScope.runTest { val actual by collectLastValue(underTest.shadeExpansion) @@ -338,6 +338,22 @@ class ShadeInteractorImplTest : SysuiTestCase() { runCurrent() // THEN shade expansion is zero + assertThat(actual).isEqualTo(.5f) + } + + @Test + fun shadeExpansionWhenNotInSplitShadeAndQsFullyExpanded() = + testScope.runTest { + val actual by collectLastValue(underTest.shadeExpansion) + + // WHEN split shade is not enabled and QS is expanded + keyguardRepository.setStatusBarState(StatusBarState.SHADE) + overrideResource(R.bool.config_use_split_notification_shade, false) + shadeRepository.setQsExpansion(1f) + shadeRepository.setLegacyShadeExpansion(1f) + runCurrent() + + // THEN shade expansion is zero assertThat(actual).isEqualTo(0f) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt index 682c4ef0b8e7..0ae95e708d24 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt @@ -95,14 +95,14 @@ class ShadeInteractorLegacyImplTest : SysuiTestCase() { } @Test - fun shadeExpansionWhenNotInSplitShadeAndQsExpanded() = + fun shadeExpansionWhenNotInSplitShadeAndQsFullyExpanded() = testScope.runTest { val actual by collectLastValue(underTest.shadeExpansion) // WHEN split shade is not enabled and QS is expanded keyguardRepository.setStatusBarState(StatusBarState.SHADE) overrideResource(R.bool.config_use_split_notification_shade, false) - shadeRepository.setQsExpansion(.5f) + shadeRepository.setQsExpansion(1f) shadeRepository.setLegacyShadeExpansion(1f) runCurrent() @@ -111,16 +111,34 @@ class ShadeInteractorLegacyImplTest : SysuiTestCase() { } @Test + fun shadeExpansionWhenNotInSplitShadeAndQsPartlyExpanded() = + testScope.runTest { + val actual by collectLastValue(underTest.shadeExpansion) + + // WHEN split shade is not enabled and QS partly expanded + keyguardRepository.setStatusBarState(StatusBarState.SHADE) + overrideResource(R.bool.config_use_split_notification_shade, false) + shadeRepository.setQsExpansion(.4f) + shadeRepository.setLegacyShadeExpansion(1f) + runCurrent() + + // THEN shade expansion is the difference + assertThat(actual).isEqualTo(.6f) + } + + @Test fun shadeExpansionWhenNotInSplitShadeAndQsCollapsed() = testScope.runTest { val actual by collectLastValue(underTest.shadeExpansion) - // WHEN split shade is not enabled and QS is expanded + // WHEN split shade is not enabled and QS collapsed keyguardRepository.setStatusBarState(StatusBarState.SHADE) + overrideResource(R.bool.config_use_split_notification_shade, false) shadeRepository.setQsExpansion(0f) shadeRepository.setLegacyShadeExpansion(.6f) + runCurrent() - // THEN shade expansion is zero + // THEN shade expansion is the legacy one assertThat(actual).isEqualTo(.6f) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt index 2a2b2f1892f9..7ac549a7b551 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt @@ -483,6 +483,21 @@ class NotificationListViewModelTest : SysuiTestCase() { } @Test + fun shouldHideFooterView_falseWhenQSPartiallyOpen() = + testScope.runTest { + val shouldHide by collectLastValue(underTest.shouldHideFooterView) + + // WHEN QS partially open + fakeKeyguardRepository.setStatusBarState(StatusBarState.SHADE) + fakeShadeRepository.setQsExpansion(0.5f) + fakeShadeRepository.setLegacyShadeExpansion(0.5f) + runCurrent() + + // THEN footer is hidden + assertThat(shouldHide).isFalse() + } + + @Test @EnableFlags(NotificationsHeadsUpRefactor.FLAG_NAME) fun pinnedHeadsUpRows_filtersForPinnedItems() = testScope.runTest { diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java index 752518475fe5..243ea68ff33b 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java @@ -965,14 +965,21 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum } } - void updateQsState() { - boolean qsFullScreen = getExpanded() && !mSplitShadeEnabled; + private void setQsFullScreen(boolean qsFullScreen) { mShadeRepository.setLegacyQsFullscreen(qsFullScreen); mNotificationStackScrollLayoutController.setQsFullScreen(qsFullScreen); if (!SceneContainerFlag.isEnabled()) { mNotificationStackScrollLayoutController.setScrollingEnabled( mBarState != KEYGUARD && (!qsFullScreen || mExpansionFromOverscroll)); } + } + + void updateQsState() { + if (!FooterViewRefactor.isEnabled()) { + // Update full screen state; note that this will be true if the QS panel is only + // partially expanded, and that is fixed with the footer view refactor. + setQsFullScreen(/* qsFullScreen = */ getExpanded() && !mSplitShadeEnabled); + } if (mQsStateUpdateListener != null) { mQsStateUpdateListener.onQsStateUpdated(getExpanded(), mStackScrollerOverscrolling); @@ -1035,6 +1042,11 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum // Update the light bar mLightBarController.setQsExpanded(mFullyExpanded); + + if (FooterViewRefactor.isEnabled()) { + // Update full screen state + setQsFullScreen(/* qsFullScreen = */ mFullyExpanded && !mSplitShadeEnabled); + } } float getLockscreenShadeDragProgress() { diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImpl.kt index ac881b5bfa97..7d46d2ba17da 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImpl.kt @@ -66,7 +66,8 @@ constructor( when (statusBarState) { // legacyShadeExpansion is 1 instead of 0 when QS is expanded StatusBarState.SHADE -> - if (!splitShadeEnabled && qsExpansion > 0f) 0f else legacyShadeExpansion + if (!splitShadeEnabled && qsExpansion > 0f) 1f - qsExpansion + else legacyShadeExpansion StatusBarState.KEYGUARD -> lockscreenShadeExpansion // dragDownAmount, which drives lockscreenShadeExpansion resets to 0f when // the pointer is lifted and the lockscreen shade is fully expanded diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 3944c3ae5cdb..3367dc427f43 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -4734,6 +4734,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } public void setQsFullScreen(boolean qsFullScreen) { + if (FooterViewRefactor.isEnabled()) { + if (qsFullScreen == mQsFullScreen) { + return; // no change + } + } mQsFullScreen = qsFullScreen; updateAlgorithmLayoutMinHeight(); updateScrollability(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java index b16f41234656..ad4b4fdc4eec 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java @@ -35,6 +35,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.platform.test.annotations.EnableFlags; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.view.MotionEvent; @@ -43,6 +44,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.plugins.qs.QS; import com.android.systemui.res.R; +import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor; import org.junit.Test; import org.junit.runner.RunWith; @@ -285,16 +287,43 @@ public class QuickSettingsControllerImplTest extends QuickSettingsControllerImpl } @Test - public void updateQsState_fullscreenTrue() { + @EnableFlags(FooterViewRefactor.FLAG_NAME) + public void updateExpansion_partiallyExpanded_fullscreenFalse() { + // WHEN QS are only partially expanded mQsController.setExpanded(true); - mQsController.updateQsState(); + when(mQs.getDesiredHeight()).thenReturn(123); + mQsController.setQs(mQs); + mQsController.onHeightChanged(); + mQsController.setExpansionHeight(100); + + // THEN they are not full screen + mQsController.updateExpansion(); + assertThat(mShadeRepository.getLegacyQsFullscreen().getValue()).isFalse(); + } + + @Test + public void updateExpansion_fullyExpanded_fullscreenTrue() { + // WHEN QS are fully expanded + mQsController.setExpanded(true); + when(mQs.getDesiredHeight()).thenReturn(123); + mQsController.setQs(mQs); + mQsController.onHeightChanged(); + mQsController.setExpansionHeight(123); + + // THEN they are full screen assertThat(mShadeRepository.getLegacyQsFullscreen().getValue()).isTrue(); } @Test - public void updateQsState_fullscreenFalse() { + public void updateExpansion_notExpanded_fullscreenFalse() { + // WHEN QS are not expanded mQsController.setExpanded(false); - mQsController.updateQsState(); + when(mQs.getDesiredHeight()).thenReturn(123); + mQsController.setQs(mQs); + mQsController.onHeightChanged(); + mQsController.setExpansionHeight(0); + + // THEN they are not full screen assertThat(mShadeRepository.getLegacyQsFullscreen().getValue()).isFalse(); } |