summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorImplTest.kt18
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImplTest.kt26
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeInteractorLegacyImpl.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java37
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();
}