diff options
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt | 78 |
1 files changed, 71 insertions, 7 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt index 60c5404a2c46..a1b63b159277 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.kt @@ -31,13 +31,13 @@ import android.graphics.Color import android.os.Binder import android.os.UserManager import android.os.fakeExecutorHandler +import android.platform.test.flag.junit.FlagsParameterization import android.provider.Settings import android.service.notification.NotificationListenerService import android.testing.TestableLooper.RunWithLooper import android.util.ArraySet import android.view.View import android.view.accessibility.AccessibilityManager -import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.logging.MetricsLogger import com.android.internal.logging.UiEventLogger @@ -45,6 +45,9 @@ import com.android.internal.logging.testing.UiEventLoggerFake import com.android.internal.statusbar.IStatusBarService import com.android.systemui.SysuiTestCase import com.android.systemui.concurrency.fakeExecutor +import com.android.systemui.flags.DisableSceneContainer +import com.android.systemui.flags.EnableSceneContainer +import com.android.systemui.flags.andSceneContainer import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.kosmos.testScope import com.android.systemui.people.widget.PeopleSpaceWidgetManager @@ -53,9 +56,12 @@ import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin.MenuItem import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.domain.interactor.PowerInteractorFactory.create +import com.android.systemui.scene.data.repository.Idle import com.android.systemui.scene.data.repository.WindowRootViewVisibilityRepository +import com.android.systemui.scene.data.repository.setSceneTransition import com.android.systemui.scene.domain.interactor.WindowRootViewVisibilityInteractor import com.android.systemui.scene.domain.interactor.sceneInteractor +import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.settings.UserContextProvider import com.android.systemui.shade.ShadeController import com.android.systemui.statusbar.NotificationEntryHelper @@ -101,12 +107,14 @@ import org.mockito.kotlin.spy import org.mockito.kotlin.times import org.mockito.kotlin.verify import org.mockito.kotlin.whenever +import platform.test.runner.parameterized.ParameterizedAndroidJunit4 +import platform.test.runner.parameterized.Parameters /** Tests for [NotificationGutsManager]. */ @SmallTest -@RunWith(AndroidJUnit4::class) +@RunWith(ParameterizedAndroidJunit4::class) @RunWithLooper -class NotificationGutsManagerTest : SysuiTestCase() { +class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase() { private val testNotificationChannel = NotificationChannel( TEST_CHANNEL_ID, @@ -154,6 +162,20 @@ class NotificationGutsManagerTest : SysuiTestCase() { private lateinit var windowRootViewVisibilityInteractor: WindowRootViewVisibilityInteractor + companion object { + private const val TEST_CHANNEL_ID = "NotificationManagerServiceTestChannelId" + + @JvmStatic + @Parameters(name = "{0}") + fun getParams(): List<FlagsParameterization> { + return FlagsParameterization.allCombinationsOf().andSceneContainer() + } + } + + init { + mSetFlagsRule.setFlagsParameterization(flags) + } + @Before fun setUp() { allowTestableLooperAsMainThread() @@ -264,6 +286,7 @@ class NotificationGutsManagerTest : SysuiTestCase() { } @Test + @DisableSceneContainer fun testLockscreenShadeVisible_notVisible_gutsClosed() = testScope.runTest { // First, start out lockscreen or shade as visible @@ -290,6 +313,34 @@ class NotificationGutsManagerTest : SysuiTestCase() { } @Test + @EnableSceneContainer + fun testShadeVisible_notVisible_gutsClosed() = + testScope.runTest { + // First, start with shade as visible + kosmos.setSceneTransition(Idle(Scenes.Shade)) + runCurrent() + + val guts: NotificationGuts = mock() + gutsManager.exposedGuts = guts + + // WHEN the shade is no longer visible + kosmos.setSceneTransition(Idle(Scenes.Gone)) + runCurrent() + + // THEN the guts are closed + verify(guts).removeCallbacks(null) + verify(guts) + .closeControls( + /* leavebehinds = */ eq(true), + /* controls = */ eq(true), + /* x = */ anyInt(), + /* y = */ anyInt(), + /* force = */ eq(true), + ) + } + + @Test + @DisableSceneContainer fun testLockscreenShadeVisible_notVisible_listContainerReset() = testScope.runTest { // First, start out lockscreen or shade as visible @@ -306,6 +357,23 @@ class NotificationGutsManagerTest : SysuiTestCase() { } @Test + @EnableSceneContainer + fun testShadeVisible_notVisible_listContainerReset() = + testScope.runTest { + // First, start with shade as visible + kosmos.setSceneTransition(Idle(Scenes.Shade)) + runCurrent() + clearInvocations(notificationListContainer) + + // WHEN the shade is no longer visible + kosmos.setSceneTransition(Idle(Scenes.Gone)) + runCurrent() + + // THEN the list container is reset + verify(notificationListContainer).resetExposedMenuView(anyBoolean(), anyBoolean()) + } + + @Test fun testChangeDensityOrFontScale() { val guts = spy(NotificationGuts(mContext)) whenever(guts.post(any())).thenAnswer { invocation: InvocationOnMock -> @@ -577,8 +645,4 @@ class NotificationGutsManagerTest : SysuiTestCase() { assertNotNull(menuItem) return menuItem } - - companion object { - private const val TEST_CHANNEL_ID = "NotificationManagerServiceTestChannelId" - } } |