Loading packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerLegacyTest.kt +64 −8 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.annotation.IdRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags Loading Loading @@ -167,10 +168,38 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { } @Test fun testLargeScreen_updateResources_splitShadeHeightIsSet() { fun testLargeScreen_updateResources_refactorFlagOff_splitShadeHeightIsSetBasedOnResource() { val headerResourceHeight = 20 val headerHelperHeight = 30 mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, 20) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 1) underTest.updateResources() val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)) .isEqualTo(headerResourceHeight) } @Test fun testLargeScreen_updateResources_refactorFlagOn_splitShadeHeightIsSetBasedOnHelper() { val headerResourceHeight = 20 val headerHelperHeight = 30 mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) Loading @@ -180,7 +209,8 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(20) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)) .isEqualTo(headerHelperHeight) } @Test Loading Loading @@ -416,10 +446,36 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { } @Test fun testLargeScreenLayout_qsAndNotifsTopMarginIsOfHeaderHeight() { fun testLargeScreenLayout_refactorFlagOff_qsAndNotifsTopMarginIsOfHeaderHeightResource() { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderResourceHeight = 100 val largeScreenHeaderHelperHeight = 200 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 10) underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderResourceHeight) assertThat(getConstraintSetLayout(R.id.notification_stack_scroller).topMargin) .isEqualTo(largeScreenHeaderResourceHeight) } @Test fun testLargeScreenLayout_refactorFlagOn_qsAndNotifsTopMarginIsOfHeaderHeightHelper() { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderHeight = 100 overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderHeight) val largeScreenHeaderResourceHeight = 100 val largeScreenHeaderHelperHeight = 200 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) Loading @@ -428,9 +484,9 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderHeight) .isEqualTo(largeScreenHeaderHelperHeight) assertThat(getConstraintSetLayout(R.id.notification_stack_scroller).topMargin) .isEqualTo(largeScreenHeaderHeight) .isEqualTo(largeScreenHeaderHelperHeight) } @Test Loading packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerTest.kt +57 −7 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.annotation.IdRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags Loading Loading @@ -166,10 +167,14 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { } @Test fun testLargeScreen_updateResources_splitShadeHeightIsSet() { fun testLargeScreen_updateResources_refactorFlagOff_splitShadeHeightIsSet_basedOnResource() { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val helperHeight = 30 val resourceHeight = 20 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(helperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, 20) overrideResource(R.dimen.large_screen_shade_header_height, resourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) Loading @@ -179,7 +184,28 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(20) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(resourceHeight) } @Test fun testLargeScreen_updateResources_refactorFlagOn_splitShadeHeightIsSet_basedOnHelper() { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val helperHeight = 30 val resourceHeight = 20 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(helperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, resourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 1) underTest.updateResources() val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(helperHeight) } @Test Loading Loading @@ -404,10 +430,34 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { } @Test fun testLargeScreenLayout_qsAndNotifsTopMarginIsOfHeaderHeight() { fun testLargeScreenLayout_refactorFlagOff_qsAndNotifsTopMarginIsOfHeaderResourceHeight() { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderHelperHeight = 200 val largeScreenHeaderResourceHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 10) underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderResourceHeight) } @Test fun testLargeScreenLayout_refactorFlagOn_qsAndNotifsTopMarginIsOfHeaderHelperHeight() { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderHeight = 100 overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderHeight) val largeScreenHeaderHelperHeight = 200 val largeScreenHeaderResourceHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) Loading @@ -416,7 +466,7 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderHeight) .isEqualTo(largeScreenHeaderHelperHeight) } @Test Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt +81 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.NotificationContainerBounds import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository Loading @@ -39,8 +40,11 @@ import com.android.systemui.keyguard.ui.viewmodel.keyguardRootViewModel import com.android.systemui.kosmos.testScope import com.android.systemui.res.R import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.shade.largeScreenHeaderHelper import com.android.systemui.shade.mockLargeScreenHeaderHelper import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor import com.android.systemui.testKosmos import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope Loading @@ -66,6 +70,7 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository val shadeRepository = kosmos.shadeRepository val sharedNotificationContainerInteractor = kosmos.sharedNotificationContainerInteractor val largeScreenHeaderHelper = kosmos.mockLargeScreenHeaderHelper val underTest = kosmos.sharedNotificationContainerViewModel Loading Loading @@ -101,8 +106,10 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { } @Test fun validatePaddingTopInSplitShade() = fun validatePaddingTopInSplitShade_refactorFlagOff_usesLargeHeaderResource() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) Loading @@ -114,6 +121,22 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { assertThat(dimens!!.paddingTop).isEqualTo(30) } @Test fun validatePaddingTopInSplitShade_refactorFlagOn_usesLargeHeaderHelper() = testScope.runTest { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) val dimens by collectLastValue(underTest.configurationBasedDimensions) configurationRepository.onAnyConfigurationChange() assertThat(dimens!!.paddingTop).isEqualTo(40) } @Test fun validatePaddingTop() = testScope.runTest { Loading Loading @@ -153,17 +176,41 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { } @Test fun validateMarginTopWithLargeScreenHeader() = fun validateMarginTopWithLargeScreenHeader_refactorFlagOff_usesResource() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val headerResourceHeight = 50 val headerHelperHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.large_screen_shade_header_height, 50) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) overrideResource(R.dimen.notification_panel_margin_top, 0) val dimens by collectLastValue(underTest.configurationBasedDimensions) configurationRepository.onAnyConfigurationChange() assertThat(dimens!!.marginTop).isEqualTo(headerResourceHeight) } @Test fun validateMarginTopWithLargeScreenHeader_refactorFlagOn_usesHelper() = testScope.runTest { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val headerResourceHeight = 50 val headerHelperHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) overrideResource(R.dimen.notification_panel_margin_top, 0) val dimens by collectLastValue(underTest.configurationBasedDimensions) configurationRepository.onAnyConfigurationChange() assertThat(dimens!!.marginTop).isEqualTo(50) assertThat(dimens!!.marginTop).isEqualTo(headerHelperHeight) } @Test Loading Loading @@ -275,11 +322,13 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { } @Test fun boundsOnLockscreenInSplitShade() = fun boundsOnLockscreenInSplitShade_refactorFlagOff_usesLargeHeaderResource() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val bounds by collectLastValue(underTest.bounds) // When in split shade whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) Loading @@ -299,6 +348,33 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 31f, bottom = 2f)) } @Test fun boundsOnLockscreenInSplitShade_refactorFlagOn_usesLargeHeaderHelper() = testScope.runTest { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val bounds by collectLastValue(underTest.bounds) // When in split shade whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) configurationRepository.onAnyConfigurationChange() runCurrent() // Start on lockscreen showLockscreen() keyguardInteractor.setNotificationContainerBounds( NotificationContainerBounds(top = 1f, bottom = 2f) ) runCurrent() // Top should be equal to bounds (1) + padding adjustment (40) assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 41f, bottom = 2f)) } @Test fun boundsOnShade() = testScope.runTest { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java +34 −5 Original line number Diff line number Diff line Loading @@ -30,11 +30,13 @@ import android.testing.AndroidTestingRunner; import androidx.test.filters.SmallTest; import com.android.systemui.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.doze.util.BurnInHelperKt; import com.android.systemui.log.LogBuffer; import com.android.systemui.log.core.FakeLogBuffer; import com.android.systemui.res.R; import com.android.systemui.shade.LargeScreenHeaderHelper; import org.junit.After; import org.junit.Before; Loading Loading @@ -79,6 +81,7 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mStaticMockSession = mockitoSession() .mockStatic(BurnInHelperKt.class) .mockStatic(LargeScreenHeaderHelper.class) .startMocking(); LogBuffer logBuffer = FakeLogBuffer.Factory.Companion.create(); Loading Loading @@ -292,18 +295,44 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { } @Test public void notifPaddingMakesUpToFullMarginInSplitShade() { public void notifPaddingMakesUpToFullMarginInSplitShade_refactorFlagOff_usesResource() { mSetFlagsRule.disableFlags(Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR); int keyguardSplitShadeTopMargin = 100; int largeScreenHeaderHeightResource = 70; when(mResources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)) .thenReturn(100); .thenReturn(keyguardSplitShadeTopMargin); when(mResources.getDimensionPixelSize(R.dimen.large_screen_shade_header_height)) .thenReturn(70); .thenReturn(largeScreenHeaderHeightResource); mClockPositionAlgorithm.loadDimens(mContext, mResources); givenLockScreen(); mIsSplitShade = true; // WHEN the position algorithm is run positionClock(); // THEN the notif padding makes up lacking margin (margin - header height = 30). assertThat(mClockPosition.stackScrollerPadding).isEqualTo(30); // THEN the notif padding makes up lacking margin (margin - header height). int expectedPadding = keyguardSplitShadeTopMargin - largeScreenHeaderHeightResource; assertThat(mClockPosition.stackScrollerPadding).isEqualTo(expectedPadding); } @Test public void notifPaddingMakesUpToFullMarginInSplitShade_refactorFlagOn_usesHelper() { mSetFlagsRule.enableFlags(Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR); int keyguardSplitShadeTopMargin = 100; int largeScreenHeaderHeightHelper = 50; int largeScreenHeaderHeightResource = 70; when(LargeScreenHeaderHelper.getLargeScreenHeaderHeight(mContext)) .thenReturn(largeScreenHeaderHeightHelper); when(mResources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)) .thenReturn(keyguardSplitShadeTopMargin); when(mResources.getDimensionPixelSize(R.dimen.large_screen_shade_header_height)) .thenReturn(largeScreenHeaderHeightResource); mClockPositionAlgorithm.loadDimens(mContext, mResources); givenLockScreen(); mIsSplitShade = true; // WHEN the position algorithm is run positionClock(); // THEN the notif padding makes up lacking margin (margin - header height). int expectedPadding = keyguardSplitShadeTopMargin - largeScreenHeaderHeightHelper; assertThat(mClockPosition.stackScrollerPadding).isEqualTo(expectedPadding); } @Test Loading Loading
packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerLegacyTest.kt +64 −8 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.annotation.IdRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags Loading Loading @@ -167,10 +168,38 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { } @Test fun testLargeScreen_updateResources_splitShadeHeightIsSet() { fun testLargeScreen_updateResources_refactorFlagOff_splitShadeHeightIsSetBasedOnResource() { val headerResourceHeight = 20 val headerHelperHeight = 30 mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, 20) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 1) underTest.updateResources() val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)) .isEqualTo(headerResourceHeight) } @Test fun testLargeScreen_updateResources_refactorFlagOn_splitShadeHeightIsSetBasedOnHelper() { val headerResourceHeight = 20 val headerHelperHeight = 30 mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) Loading @@ -180,7 +209,8 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(20) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)) .isEqualTo(headerHelperHeight) } @Test Loading Loading @@ -416,10 +446,36 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { } @Test fun testLargeScreenLayout_qsAndNotifsTopMarginIsOfHeaderHeight() { fun testLargeScreenLayout_refactorFlagOff_qsAndNotifsTopMarginIsOfHeaderHeightResource() { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderResourceHeight = 100 val largeScreenHeaderHelperHeight = 200 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 10) underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderResourceHeight) assertThat(getConstraintSetLayout(R.id.notification_stack_scroller).topMargin) .isEqualTo(largeScreenHeaderResourceHeight) } @Test fun testLargeScreenLayout_refactorFlagOn_qsAndNotifsTopMarginIsOfHeaderHeightHelper() { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderHeight = 100 overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderHeight) val largeScreenHeaderResourceHeight = 100 val largeScreenHeaderHelperHeight = 200 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) Loading @@ -428,9 +484,9 @@ class NotificationsQSContainerControllerLegacyTest : SysuiTestCase() { underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderHeight) .isEqualTo(largeScreenHeaderHelperHeight) assertThat(getConstraintSetLayout(R.id.notification_stack_scroller).topMargin) .isEqualTo(largeScreenHeaderHeight) .isEqualTo(largeScreenHeaderHelperHeight) } @Test Loading
packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerTest.kt +57 −7 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.annotation.IdRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags Loading Loading @@ -166,10 +167,14 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { } @Test fun testLargeScreen_updateResources_splitShadeHeightIsSet() { fun testLargeScreen_updateResources_refactorFlagOff_splitShadeHeightIsSet_basedOnResource() { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val helperHeight = 30 val resourceHeight = 20 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(helperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, 20) overrideResource(R.dimen.large_screen_shade_header_height, resourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) Loading @@ -179,7 +184,28 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(20) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(resourceHeight) } @Test fun testLargeScreen_updateResources_refactorFlagOn_splitShadeHeightIsSet_basedOnHelper() { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val helperHeight = 30 val resourceHeight = 20 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(helperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.qs_header_height, 10) overrideResource(R.dimen.large_screen_shade_header_height, resourceHeight) // ensure the estimated height (would be 3 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 1) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 1) underTest.updateResources() val captor = ArgumentCaptor.forClass(ConstraintSet::class.java) verify(view).applyConstraints(capture(captor)) assertThat(captor.value.getHeight(R.id.split_shade_status_bar)).isEqualTo(helperHeight) } @Test Loading Loading @@ -404,10 +430,34 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { } @Test fun testLargeScreenLayout_qsAndNotifsTopMarginIsOfHeaderHeight() { fun testLargeScreenLayout_refactorFlagOff_qsAndNotifsTopMarginIsOfHeaderResourceHeight() { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderHelperHeight = 200 val largeScreenHeaderResourceHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) overrideResource(R.dimen.new_qs_header_non_clickable_element_height, 10) underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderResourceHeight) } @Test fun testLargeScreenLayout_refactorFlagOn_qsAndNotifsTopMarginIsOfHeaderHelperHeight() { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) setLargeScreen() val largeScreenHeaderHeight = 100 overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderHeight) val largeScreenHeaderHelperHeight = 200 val largeScreenHeaderResourceHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(largeScreenHeaderHelperHeight) overrideResource(R.dimen.large_screen_shade_header_height, largeScreenHeaderResourceHeight) // ensure the estimated height (would be 30 here) wouldn't impact this test case overrideResource(R.dimen.large_screen_shade_header_min_height, 10) Loading @@ -416,7 +466,7 @@ class NotificationsQSContainerControllerTest : SysuiTestCase() { underTest.updateResources() assertThat(getConstraintSetLayout(R.id.qs_frame).topMargin) .isEqualTo(largeScreenHeaderHeight) .isEqualTo(largeScreenHeaderHelperHeight) } @Test Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt +81 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.NotificationContainerBounds import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository Loading @@ -39,8 +40,11 @@ import com.android.systemui.keyguard.ui.viewmodel.keyguardRootViewModel import com.android.systemui.kosmos.testScope import com.android.systemui.res.R import com.android.systemui.shade.data.repository.shadeRepository import com.android.systemui.shade.largeScreenHeaderHelper import com.android.systemui.shade.mockLargeScreenHeaderHelper import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor import com.android.systemui.testKosmos import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope Loading @@ -66,6 +70,7 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository val shadeRepository = kosmos.shadeRepository val sharedNotificationContainerInteractor = kosmos.sharedNotificationContainerInteractor val largeScreenHeaderHelper = kosmos.mockLargeScreenHeaderHelper val underTest = kosmos.sharedNotificationContainerViewModel Loading Loading @@ -101,8 +106,10 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { } @Test fun validatePaddingTopInSplitShade() = fun validatePaddingTopInSplitShade_refactorFlagOff_usesLargeHeaderResource() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) Loading @@ -114,6 +121,22 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { assertThat(dimens!!.paddingTop).isEqualTo(30) } @Test fun validatePaddingTopInSplitShade_refactorFlagOn_usesLargeHeaderHelper() = testScope.runTest { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) val dimens by collectLastValue(underTest.configurationBasedDimensions) configurationRepository.onAnyConfigurationChange() assertThat(dimens!!.paddingTop).isEqualTo(40) } @Test fun validatePaddingTop() = testScope.runTest { Loading Loading @@ -153,17 +176,41 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { } @Test fun validateMarginTopWithLargeScreenHeader() = fun validateMarginTopWithLargeScreenHeader_refactorFlagOff_usesResource() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val headerResourceHeight = 50 val headerHelperHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.large_screen_shade_header_height, 50) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) overrideResource(R.dimen.notification_panel_margin_top, 0) val dimens by collectLastValue(underTest.configurationBasedDimensions) configurationRepository.onAnyConfigurationChange() assertThat(dimens!!.marginTop).isEqualTo(headerResourceHeight) } @Test fun validateMarginTopWithLargeScreenHeader_refactorFlagOn_usesHelper() = testScope.runTest { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val headerResourceHeight = 50 val headerHelperHeight = 100 whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()) .thenReturn(headerHelperHeight) overrideResource(R.bool.config_use_large_screen_shade_header, true) overrideResource(R.dimen.large_screen_shade_header_height, headerResourceHeight) overrideResource(R.dimen.notification_panel_margin_top, 0) val dimens by collectLastValue(underTest.configurationBasedDimensions) configurationRepository.onAnyConfigurationChange() assertThat(dimens!!.marginTop).isEqualTo(50) assertThat(dimens!!.marginTop).isEqualTo(headerHelperHeight) } @Test Loading Loading @@ -275,11 +322,13 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { } @Test fun boundsOnLockscreenInSplitShade() = fun boundsOnLockscreenInSplitShade_refactorFlagOff_usesLargeHeaderResource() = testScope.runTest { mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val bounds by collectLastValue(underTest.bounds) // When in split shade whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) Loading @@ -299,6 +348,33 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 31f, bottom = 2f)) } @Test fun boundsOnLockscreenInSplitShade_refactorFlagOn_usesLargeHeaderHelper() = testScope.runTest { mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR) val bounds by collectLastValue(underTest.bounds) // When in split shade whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5) overrideResource(R.bool.config_use_split_notification_shade, true) overrideResource(R.dimen.large_screen_shade_header_height, 10) overrideResource(R.dimen.keyguard_split_shade_top_margin, 50) configurationRepository.onAnyConfigurationChange() runCurrent() // Start on lockscreen showLockscreen() keyguardInteractor.setNotificationContainerBounds( NotificationContainerBounds(top = 1f, bottom = 2f) ) runCurrent() // Top should be equal to bounds (1) + padding adjustment (40) assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 41f, bottom = 2f)) } @Test fun boundsOnShade() = testScope.runTest { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java +34 −5 Original line number Diff line number Diff line Loading @@ -30,11 +30,13 @@ import android.testing.AndroidTestingRunner; import androidx.test.filters.SmallTest; import com.android.systemui.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.doze.util.BurnInHelperKt; import com.android.systemui.log.LogBuffer; import com.android.systemui.log.core.FakeLogBuffer; import com.android.systemui.res.R; import com.android.systemui.shade.LargeScreenHeaderHelper; import org.junit.After; import org.junit.Before; Loading Loading @@ -79,6 +81,7 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mStaticMockSession = mockitoSession() .mockStatic(BurnInHelperKt.class) .mockStatic(LargeScreenHeaderHelper.class) .startMocking(); LogBuffer logBuffer = FakeLogBuffer.Factory.Companion.create(); Loading Loading @@ -292,18 +295,44 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase { } @Test public void notifPaddingMakesUpToFullMarginInSplitShade() { public void notifPaddingMakesUpToFullMarginInSplitShade_refactorFlagOff_usesResource() { mSetFlagsRule.disableFlags(Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR); int keyguardSplitShadeTopMargin = 100; int largeScreenHeaderHeightResource = 70; when(mResources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)) .thenReturn(100); .thenReturn(keyguardSplitShadeTopMargin); when(mResources.getDimensionPixelSize(R.dimen.large_screen_shade_header_height)) .thenReturn(70); .thenReturn(largeScreenHeaderHeightResource); mClockPositionAlgorithm.loadDimens(mContext, mResources); givenLockScreen(); mIsSplitShade = true; // WHEN the position algorithm is run positionClock(); // THEN the notif padding makes up lacking margin (margin - header height = 30). assertThat(mClockPosition.stackScrollerPadding).isEqualTo(30); // THEN the notif padding makes up lacking margin (margin - header height). int expectedPadding = keyguardSplitShadeTopMargin - largeScreenHeaderHeightResource; assertThat(mClockPosition.stackScrollerPadding).isEqualTo(expectedPadding); } @Test public void notifPaddingMakesUpToFullMarginInSplitShade_refactorFlagOn_usesHelper() { mSetFlagsRule.enableFlags(Flags.FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR); int keyguardSplitShadeTopMargin = 100; int largeScreenHeaderHeightHelper = 50; int largeScreenHeaderHeightResource = 70; when(LargeScreenHeaderHelper.getLargeScreenHeaderHeight(mContext)) .thenReturn(largeScreenHeaderHeightHelper); when(mResources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)) .thenReturn(keyguardSplitShadeTopMargin); when(mResources.getDimensionPixelSize(R.dimen.large_screen_shade_header_height)) .thenReturn(largeScreenHeaderHeightResource); mClockPositionAlgorithm.loadDimens(mContext, mResources); givenLockScreen(); mIsSplitShade = true; // WHEN the position algorithm is run positionClock(); // THEN the notif padding makes up lacking margin (margin - header height). int expectedPadding = keyguardSplitShadeTopMargin - largeScreenHeaderHeightHelper; assertThat(mClockPosition.stackScrollerPadding).isEqualTo(expectedPadding); } @Test Loading