Merge "Close guts during transitions" into sc-dev

This commit is contained in:
Beth Thibodeau
2021-05-12 13:35:35 +00:00
committed by Android (Google) Code Review
6 changed files with 31 additions and 5 deletions

View File

@@ -535,12 +535,20 @@ class MediaCarouselController @Inject constructor(
this.desiredLocation = desiredLocation
this.desiredHostState = it
currentlyExpanded = it.expansion > 0
val shouldCloseGuts = !currentlyExpanded && !mediaManager.hasActiveMedia() &&
desiredHostState.showsOnlyActiveMedia
for (mediaPlayer in MediaPlayerData.players()) {
if (animate) {
mediaPlayer.mediaViewController.animatePendingStateChange(
duration = duration,
delay = startDelay)
}
if (shouldCloseGuts && mediaPlayer.mediaViewController.isGutsVisible) {
mediaPlayer.closeGuts(!animate)
}
mediaPlayer.mediaViewController.onLocationPreChange(desiredLocation)
}
mediaCarouselScrollHandler.showsSettingsButton = !it.showsOnlyActiveMedia
@@ -556,9 +564,9 @@ class MediaCarouselController @Inject constructor(
}
}
fun closeGuts() {
fun closeGuts(immediate: Boolean = true) {
MediaPlayerData.players().forEach {
it.closeGuts(true)
it.closeGuts(immediate)
}
}

View File

@@ -59,7 +59,7 @@ class MediaCarouselScrollHandler(
private val mainExecutor: DelayableExecutor,
private val dismissCallback: () -> Unit,
private var translationChangedListener: () -> Unit,
private val closeGuts: () -> Unit,
private val closeGuts: (immediate: Boolean) -> Unit,
private val falsingCollector: FalsingCollector,
private val falsingManager: FalsingManager,
private val logSmartspaceImpression: () -> Unit
@@ -473,7 +473,7 @@ class MediaCarouselScrollHandler(
if (oldIndex != visibleMediaIndex && visibleToUser) {
logSmartspaceImpression()
}
closeGuts()
closeGuts(false)
updatePlayerVisibilities()
}
val relativeLocation = visibleMediaIndex.toFloat() + if (playerWidthPlusPadding > 0)

View File

@@ -213,7 +213,8 @@ public class MediaControlPanel {
mMediaViewController.openGuts();
return true;
} else {
return false;
closeGuts();
return true;
}
});
mPlayerViewHolder.getCancel().setOnClickListener(v -> {

View File

@@ -273,6 +273,7 @@ class MediaHierarchyManager @Inject constructor(
} else {
updateDesiredLocation()
qsExpanded = false
closeGuts()
}
mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = isVisibleToUser()
}

View File

@@ -289,6 +289,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
captor.value.onLongClick(holder.player)
verify(mediaViewController, never()).openGuts()
verify(mediaViewController).closeGuts(false)
}
@Test

View File

@@ -24,6 +24,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.SysuiStatusBarStateController
@@ -73,11 +74,15 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
@Mock
private lateinit var mediaCarouselController: MediaCarouselController
@Mock
private lateinit var mediaCarouselScrollHandler: MediaCarouselScrollHandler
@Mock
private lateinit var wakefulnessLifecycle: WakefulnessLifecycle
@Mock
private lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager
@Captor
private lateinit var wakefullnessObserver: ArgumentCaptor<(WakefulnessLifecycle.Observer)>
@Captor
private lateinit var statusBarCallback: ArgumentCaptor<(StatusBarStateController.StateListener)>
@JvmField
@Rule
val mockito = MockitoJUnit.rule()
@@ -96,10 +101,13 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
wakefulnessLifecycle,
statusBarKeyguardViewManager)
verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
verify(statusBarStateController).addCallback(statusBarCallback.capture())
setupHost(lockHost, MediaHierarchyManager.LOCATION_LOCKSCREEN)
setupHost(qsHost, MediaHierarchyManager.LOCATION_QS)
setupHost(qqsHost, MediaHierarchyManager.LOCATION_QQS)
`when`(statusBarStateController.state).thenReturn(StatusBarState.SHADE)
`when`(mediaCarouselController.mediaCarouselScrollHandler)
.thenReturn(mediaCarouselScrollHandler)
// We'll use the viewmanager to verify a few calls below, let's reset this.
clearInvocations(mediaCarouselController)
}
@@ -153,4 +161,11 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
verify(mediaCarouselController).closeGuts()
}
@Test
fun testCloseGutsWhenDoze() {
statusBarCallback.value.onDozingChanged(true)
verify(mediaCarouselController).closeGuts()
}
}