Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt +15 −5 Original line number Diff line number Diff line Loading @@ -164,13 +164,13 @@ constructor( mediaCarouselScrollHandler.scrollToStart() } } private var currentlyExpanded = true @VisibleForTesting var currentlyExpanded = true set(value) { if (field != value) { field = value for (player in MediaPlayerData.players()) { player.setListening(field) } updateSeekbarListening(mediaCarouselScrollHandler.visibleToUser) } } Loading Loading @@ -259,6 +259,7 @@ constructor( executor, this::onSwipeToDismiss, this::updatePageIndicatorLocation, this::updateSeekbarListening, this::closeGuts, falsingCollector, falsingManager, Loading Loading @@ -629,7 +630,9 @@ constructor( ) newPlayer.mediaViewHolder?.player?.setLayoutParams(lp) newPlayer.bindPlayer(data, key) newPlayer.setListening(currentlyExpanded) newPlayer.setListening( mediaCarouselScrollHandler.visibleToUser && currentlyExpanded ) MediaPlayerData.addMediaPlayer( key, data, Loading Loading @@ -914,6 +917,13 @@ constructor( .toFloat() } /** Update listening to seekbar. */ private fun updateSeekbarListening(visibleToUser: Boolean) { for (player in MediaPlayerData.players()) { player.setListening(visibleToUser && currentlyExpanded) } } /** Update the dimension of this carousel. */ private fun updateCarouselDimensions() { var width = 0 Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselScrollHandler.kt +7 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ class MediaCarouselScrollHandler( private val mainExecutor: DelayableExecutor, val dismissCallback: () -> Unit, private var translationChangedListener: () -> Unit, private var seekBarUpdateListener: (visibleToUser: Boolean) -> Unit, private val closeGuts: (immediate: Boolean) -> Unit, private val falsingCollector: FalsingCollector, private val falsingManager: FalsingManager, Loading Loading @@ -177,6 +178,12 @@ class MediaCarouselScrollHandler( /** Whether the media card is visible to user if any */ var visibleToUser: Boolean = false set(value) { if (field != value) { field = value seekBarUpdateListener.invoke(field) } } /** Whether the quick setting is expanded or not */ var qsExpanded: Boolean = false Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java +5 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,11 @@ public class MediaControlPanel { mSeekBarViewModel.setListening(listening); } @VisibleForTesting public boolean getListening() { return mSeekBarViewModel.getListening(); } /** Sets whether the user is touching the seek bar to change the track position. */ private void setIsScrubbing(boolean isScrubbing) { if (mMediaData == null || mMediaData.getSemanticActions() == null) { Loading packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt +57 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,8 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.floatThat import org.mockito.Mockito.mock import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations Loading Loading @@ -775,4 +777,59 @@ class MediaCarouselControllerTest : SysuiTestCase() { job.cancel() } @Test fun testInvisibleToUserAndExpanded_playersNotListening() { // Add players to carousel. testPlayerOrdering() // Make the carousel visible to user in expanded layout. mediaCarouselController.currentlyExpanded = true mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = true // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to true. verify(panel, times(MediaPlayerData.players().size)).listening = true // Make the carousel invisible to user. mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = false // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to false. verify(panel, times(MediaPlayerData.players().size)).listening = false } @Test fun testVisibleToUserAndExpanded_playersListening() { // Add players to carousel. testPlayerOrdering() // Make the carousel visible to user in expanded layout. mediaCarouselController.currentlyExpanded = true mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = true // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to true. verify(panel, times(MediaPlayerData.players().size)).listening = true } @Test fun testUMOCollapsed_playersNotListening() { // Add players to carousel. testPlayerOrdering() // Make the carousel in collapsed layout. mediaCarouselController.currentlyExpanded = false // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to false. verify(panel, times(MediaPlayerData.players().size)).listening = false // Make the carousel visible to user. reset(panel) mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = true // Verify that seekbar listening attribute in media control panel is set to false. verify(panel, times(MediaPlayerData.players().size)).listening = false } } Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt +15 −5 Original line number Diff line number Diff line Loading @@ -164,13 +164,13 @@ constructor( mediaCarouselScrollHandler.scrollToStart() } } private var currentlyExpanded = true @VisibleForTesting var currentlyExpanded = true set(value) { if (field != value) { field = value for (player in MediaPlayerData.players()) { player.setListening(field) } updateSeekbarListening(mediaCarouselScrollHandler.visibleToUser) } } Loading Loading @@ -259,6 +259,7 @@ constructor( executor, this::onSwipeToDismiss, this::updatePageIndicatorLocation, this::updateSeekbarListening, this::closeGuts, falsingCollector, falsingManager, Loading Loading @@ -629,7 +630,9 @@ constructor( ) newPlayer.mediaViewHolder?.player?.setLayoutParams(lp) newPlayer.bindPlayer(data, key) newPlayer.setListening(currentlyExpanded) newPlayer.setListening( mediaCarouselScrollHandler.visibleToUser && currentlyExpanded ) MediaPlayerData.addMediaPlayer( key, data, Loading Loading @@ -914,6 +917,13 @@ constructor( .toFloat() } /** Update listening to seekbar. */ private fun updateSeekbarListening(visibleToUser: Boolean) { for (player in MediaPlayerData.players()) { player.setListening(visibleToUser && currentlyExpanded) } } /** Update the dimension of this carousel. */ private fun updateCarouselDimensions() { var width = 0 Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselScrollHandler.kt +7 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ class MediaCarouselScrollHandler( private val mainExecutor: DelayableExecutor, val dismissCallback: () -> Unit, private var translationChangedListener: () -> Unit, private var seekBarUpdateListener: (visibleToUser: Boolean) -> Unit, private val closeGuts: (immediate: Boolean) -> Unit, private val falsingCollector: FalsingCollector, private val falsingManager: FalsingManager, Loading Loading @@ -177,6 +178,12 @@ class MediaCarouselScrollHandler( /** Whether the media card is visible to user if any */ var visibleToUser: Boolean = false set(value) { if (field != value) { field = value seekBarUpdateListener.invoke(field) } } /** Whether the quick setting is expanded or not */ var qsExpanded: Boolean = false Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java +5 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,11 @@ public class MediaControlPanel { mSeekBarViewModel.setListening(listening); } @VisibleForTesting public boolean getListening() { return mSeekBarViewModel.getListening(); } /** Sets whether the user is touching the seek bar to change the track position. */ private void setIsScrubbing(boolean isScrubbing) { if (mMediaData == null || mMediaData.getSemanticActions() == null) { Loading
packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt +57 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,8 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.floatThat import org.mockito.Mockito.mock import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations Loading Loading @@ -775,4 +777,59 @@ class MediaCarouselControllerTest : SysuiTestCase() { job.cancel() } @Test fun testInvisibleToUserAndExpanded_playersNotListening() { // Add players to carousel. testPlayerOrdering() // Make the carousel visible to user in expanded layout. mediaCarouselController.currentlyExpanded = true mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = true // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to true. verify(panel, times(MediaPlayerData.players().size)).listening = true // Make the carousel invisible to user. mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = false // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to false. verify(panel, times(MediaPlayerData.players().size)).listening = false } @Test fun testVisibleToUserAndExpanded_playersListening() { // Add players to carousel. testPlayerOrdering() // Make the carousel visible to user in expanded layout. mediaCarouselController.currentlyExpanded = true mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = true // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to true. verify(panel, times(MediaPlayerData.players().size)).listening = true } @Test fun testUMOCollapsed_playersNotListening() { // Add players to carousel. testPlayerOrdering() // Make the carousel in collapsed layout. mediaCarouselController.currentlyExpanded = false // panel is the player for each MediaPlayerData. // Verify that seekbar listening attribute in media control panel is set to false. verify(panel, times(MediaPlayerData.players().size)).listening = false // Make the carousel visible to user. reset(panel) mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = true // Verify that seekbar listening attribute in media control panel is set to false. verify(panel, times(MediaPlayerData.players().size)).listening = false } }