Tests for media player on the left side on lockscreen in split shade mode
Bug: 181882240 Test: atest KeyguardMediaControllerTest KeyguardClockPositionAlgorithmTest NotificationPanelViewTest Change-Id: Id51293dbd134ea45ed0084a89f2da48136599168
This commit is contained in:
committed by
Michał Brzeziński
parent
4e0bac8243
commit
89bd618dcb
@@ -19,23 +19,23 @@ package com.android.systemui.media
|
||||
import android.testing.AndroidTestingRunner
|
||||
import android.view.View.GONE
|
||||
import android.view.View.VISIBLE
|
||||
import android.widget.FrameLayout
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager
|
||||
import com.android.systemui.statusbar.StatusBarState
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
||||
import com.android.systemui.statusbar.notification.stack.MediaHeaderView
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
||||
import com.android.systemui.util.animation.UniqueObjectHostView
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.Mockito.atLeastOnce
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.junit.MockitoJUnit
|
||||
import org.mockito.Mockito.`when` as whenever
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner::class)
|
||||
@@ -49,46 +49,81 @@ class KeyguardMediaControllerTest : SysuiTestCase() {
|
||||
private lateinit var statusBarStateController: SysuiStatusBarStateController
|
||||
@Mock
|
||||
private lateinit var notificationLockscreenUserManager: NotificationLockscreenUserManager
|
||||
@Mock
|
||||
private lateinit var mediaHeaderView: MediaHeaderView
|
||||
@JvmField @Rule
|
||||
val mockito = MockitoJUnit.rule()
|
||||
|
||||
private val mediaHeaderView: MediaHeaderView = MediaHeaderView(context, null)
|
||||
private lateinit var keyguardMediaController: KeyguardMediaController
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
// default state is positive, media should show up
|
||||
whenever(mediaHost.visible).thenReturn(true)
|
||||
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||
whenever(notificationLockscreenUserManager.shouldShowLockscreenNotifications())
|
||||
.thenReturn(true)
|
||||
whenever(mediaHost.hostView).thenReturn(UniqueObjectHostView(context))
|
||||
|
||||
keyguardMediaController = KeyguardMediaController(mediaHost, bypassController,
|
||||
statusBarStateController, notificationLockscreenUserManager)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAttach_hiddenWhenHostIsHidden() {
|
||||
`when`(mediaHost.visible).thenReturn(false)
|
||||
|
||||
keyguardMediaController.attachSinglePaneContainer(mediaHeaderView)
|
||||
|
||||
verify(mediaHeaderView, atLeastOnce()).visibility = eq(GONE)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAttach_visibleOnKeyguard() {
|
||||
`when`(mediaHost.visible).thenReturn(true)
|
||||
`when`(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||
`when`(notificationLockscreenUserManager.shouldShowLockscreenNotifications())
|
||||
.thenReturn(true)
|
||||
fun testHiddenWhenHostIsHidden() {
|
||||
whenever(mediaHost.visible).thenReturn(false)
|
||||
|
||||
keyguardMediaController.attachSinglePaneContainer(mediaHeaderView)
|
||||
keyguardMediaController.refreshMediaPosition()
|
||||
|
||||
verify(mediaHeaderView, atLeastOnce()).visibility = eq(VISIBLE)
|
||||
assertThat(mediaHeaderView.visibility).isEqualTo(GONE)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAttach_hiddenOnKeyguard_whenNotificationsAreHidden() {
|
||||
`when`(mediaHost.visible).thenReturn(true)
|
||||
`when`(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||
`when`(notificationLockscreenUserManager.shouldShowLockscreenNotifications())
|
||||
fun testVisibleOnKeyguardOrFullScreenUserSwitcher() {
|
||||
testStateVisibility(StatusBarState.SHADE, GONE)
|
||||
testStateVisibility(StatusBarState.SHADE_LOCKED, GONE)
|
||||
testStateVisibility(StatusBarState.FULLSCREEN_USER_SWITCHER, VISIBLE)
|
||||
testStateVisibility(StatusBarState.KEYGUARD, VISIBLE)
|
||||
}
|
||||
|
||||
private fun testStateVisibility(state: Int, visibility: Int) {
|
||||
whenever(statusBarStateController.state).thenReturn(state)
|
||||
keyguardMediaController.refreshMediaPosition()
|
||||
assertThat(mediaHeaderView.visibility).isEqualTo(visibility)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testHiddenOnKeyguard_whenNotificationsAreHidden() {
|
||||
whenever(notificationLockscreenUserManager.shouldShowLockscreenNotifications())
|
||||
.thenReturn(false)
|
||||
|
||||
keyguardMediaController.attachSinglePaneContainer(mediaHeaderView)
|
||||
keyguardMediaController.refreshMediaPosition()
|
||||
|
||||
verify(mediaHeaderView, atLeastOnce()).visibility = eq(GONE)
|
||||
assertThat(mediaHeaderView.visibility).isEqualTo(GONE)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testActivatesSplitShadeContainerInSplitShadeMode() {
|
||||
val splitShadeContainer = FrameLayout(context)
|
||||
keyguardMediaController.attachSplitShadeContainer(
|
||||
splitShadeContainer,
|
||||
useContainer = { true })
|
||||
|
||||
keyguardMediaController.refreshMediaPosition()
|
||||
|
||||
assertThat(splitShadeContainer.visibility).isEqualTo(VISIBLE)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testActivatesSinglePaneContainerInSinglePaneMode() {
|
||||
val splitShadeContainer = FrameLayout(context)
|
||||
keyguardMediaController.attachSplitShadeContainer(
|
||||
splitShadeContainer,
|
||||
useContainer = { false })
|
||||
|
||||
keyguardMediaController.refreshMediaPosition()
|
||||
|
||||
assertThat(splitShadeContainer.visibility).isEqualTo(GONE)
|
||||
assertThat(mediaHeaderView.visibility).isEqualTo(VISIBLE)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,6 +265,19 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
|
||||
assertThat(mClockPosition.stackScrollerPadding).isEqualTo(810);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notifPositionAlignedWithClockInSplitShadeMode() {
|
||||
// GIVEN on lock screen and split shade mode
|
||||
givenLockScreen();
|
||||
mIsSplitShade = true;
|
||||
mPreferredClockY = 100;
|
||||
mHasCustomClock = true;
|
||||
// WHEN the position algorithm is run
|
||||
positionClock();
|
||||
// THEN the notif padding DOESN'T adjust for keyguard status height.
|
||||
assertThat(mClockPosition.stackScrollerPadding).isEqualTo(mPreferredClockY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notifPositionWithLargeClockOnLockScreen() {
|
||||
// GIVEN on lock screen and clock has a nonzero height
|
||||
|
||||
@@ -285,6 +285,7 @@ public class NotificationPanelViewTest extends SysuiTestCase {
|
||||
mNotificationContainerParent = new NotificationsQuickSettingsContainer(getContext(), null);
|
||||
mNotificationContainerParent.addView(newViewWithId(R.id.qs_frame));
|
||||
mNotificationContainerParent.addView(newViewWithId(R.id.notification_stack_scroller));
|
||||
mNotificationContainerParent.addView(newViewWithId(R.id.keyguard_status_view));
|
||||
when(mView.findViewById(R.id.notification_container_parent))
|
||||
.thenReturn(mNotificationContainerParent);
|
||||
FlingAnimationUtils.Builder flingAnimationUtilsBuilder = new FlingAnimationUtils.Builder(
|
||||
@@ -479,6 +480,20 @@ public class NotificationPanelViewTest extends SysuiTestCase {
|
||||
.isEqualTo(ConstraintSet.PARENT_ID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testKeyguardStatusView_isAlignedToGuidelineInSplitShadeMode() {
|
||||
mNotificationPanelViewController.updateResources();
|
||||
|
||||
assertThat(getConstraintSetLayout(R.id.keyguard_status_view).endToEnd)
|
||||
.isEqualTo(ConstraintSet.PARENT_ID);
|
||||
|
||||
enableSplitShade();
|
||||
mNotificationPanelViewController.updateResources();
|
||||
|
||||
assertThat(getConstraintSetLayout(R.id.keyguard_status_view).endToEnd)
|
||||
.isEqualTo(R.id.qs_edge_guideline);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSplitShadeLayout_isAlignedToGuideline() {
|
||||
enableSplitShade();
|
||||
|
||||
Reference in New Issue
Block a user