summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Beth Thibodeau <ethibodeau@google.com> 2025-01-17 12:52:19 -0600
committer Beth Thibodeau <ethibodeau@google.com> 2025-01-27 17:01:27 -0800
commit5b8c5b64226d63ca83ed1cd47eb381e621335af3 (patch)
treef8cc2fec8bc0cf85b02336237880a343ae4ffcbc
parent62d502b587f0789749bfec1d2b1de9357b205905 (diff)
Remove MEDIA_RETAIN_RECOMMENDATIONS flag
Fixes: 267166152 Bug: 382680767 Test: build, atest Flag: EXEMPT removing unused flag code Change-Id: I7cb8f9a663d50e90f5aa3372c0be28f0c397c833
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/data/repository/MediaDataRepositoryTest.kt25
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt23
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaRecommendationsInteractorTest.kt28
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListenerTest.kt84
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModelTest.kt5
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/Flags.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/data/repository/MediaDataRepository.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImpl.kt47
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt29
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImpl.kt53
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataManager.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListener.kt24
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/interactor/MediaCarouselInteractor.kt18
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModel.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/util/MediaFlags.kt4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImplTest.kt69
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt207
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt48
23 files changed, 115 insertions, 642 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/data/repository/MediaDataRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/data/repository/MediaDataRepositoryTest.kt
index 2864f041e451..7e6f5fc71b15 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/data/repository/MediaDataRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/data/repository/MediaDataRepositoryTest.kt
@@ -22,8 +22,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.flags.Flags
-import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.MediaTestHelper
import com.android.systemui.media.controls.shared.model.MediaData
@@ -79,29 +77,6 @@ class MediaDataRepositoryTest : SysuiTestCase() {
}
@Test
- fun setRecommendationInactive() =
- testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, true)
- val smartspaceData by collectLastValue(underTest.smartspaceMediaData)
- val icon = Icon.createWithResource(context, R.drawable.ic_media_play)
- val recommendation =
- SmartspaceMediaData(
- targetId = KEY_MEDIA_SMARTSPACE,
- isActive = true,
- recommendations = MediaTestHelper.getValidRecommendationList(icon),
- )
-
- underTest.setRecommendation(recommendation)
-
- assertThat(smartspaceData).isEqualTo(recommendation)
-
- underTest.setRecommendationInactive(KEY_MEDIA_SMARTSPACE)
-
- assertThat(smartspaceData).isNotEqualTo(recommendation)
- assertThat(smartspaceData!!.isActive).isFalse()
- }
-
- @Test
fun dismissRecommendation() =
testScope.runTest {
val smartspaceData by collectLastValue(underTest.smartspaceMediaData)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt
index 414974cc2941..0a44e7b5b1ed 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaCarouselInteractorTest.kt
@@ -24,8 +24,6 @@ import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.flags.Flags
-import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.MediaTestHelper
import com.android.systemui.media.controls.data.repository.MediaFilterRepository
@@ -140,7 +138,6 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
val hasAnyMediaOrRecommendation by
collectLastValue(underTest.hasAnyMediaOrRecommendation)
val currentMedia by collectLastValue(underTest.currentMedia)
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
val userMedia = MediaData(active = false)
val recsLoadingModel = SmartspaceMediaLoadingModel.Loaded(KEY_MEDIA_SMARTSPACE, true)
@@ -163,7 +160,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
assertThat(currentMedia)
.containsExactly(
MediaCommonModel.MediaRecommendations(recsLoadingModel),
- MediaCommonModel.MediaControl(mediaLoadingModel, true)
+ MediaCommonModel.MediaControl(mediaLoadingModel, true),
)
.inOrder()
@@ -176,7 +173,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
Process.INVALID_UID,
surface = SURFACE,
2,
- true
+ true,
)
}
@@ -187,7 +184,6 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
collectLastValue(underTest.hasActiveMediaOrRecommendation)
val hasAnyMediaOrRecommendation by
collectLastValue(underTest.hasAnyMediaOrRecommendation)
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
mediaFilterRepository.setRecommendation(mediaRecommendation)
@@ -207,7 +203,6 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
collectLastValue(underTest.hasActiveMediaOrRecommendation)
val hasAnyMediaOrRecommendation by
collectLastValue(underTest.hasAnyMediaOrRecommendation)
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
mediaFilterRepository.setRecommendation(mediaRecommendation)
@@ -248,7 +243,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
active = true,
instanceId = instanceId,
packageName = PACKAGE_NAME,
- notificationKey = KEY
+ notificationKey = KEY,
)
val smartspaceLoadingModel = SmartspaceMediaLoadingModel.Loaded(KEY_MEDIA_SMARTSPACE)
val mediaLoadingModel = MediaDataLoadingModel.Loaded(instanceId)
@@ -269,7 +264,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
assertThat(currentMedia)
.containsExactly(
MediaCommonModel.MediaControl(mediaLoadingModel, isMediaFromRec = true),
- MediaCommonModel.MediaRecommendations(smartspaceLoadingModel)
+ MediaCommonModel.MediaRecommendations(smartspaceLoadingModel),
)
.inOrder()
}
@@ -282,7 +277,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
active = true,
instanceId = instanceId,
packageName = PACKAGE_NAME,
- notificationKey = KEY
+ notificationKey = KEY,
)
val smartspaceLoadingModel = SmartspaceMediaLoadingModel.Loaded(KEY_MEDIA_SMARTSPACE)
val mediaLoadingModel = MediaDataLoadingModel.Loaded(instanceId)
@@ -297,7 +292,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
data.smartspaceId,
data.appUid,
surface = SURFACE,
- 1
+ 1,
)
reset(smartspaceLogger)
@@ -311,7 +306,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
data.smartspaceId,
data.appUid,
surface = SURFACE,
- 2
+ 2,
)
reset(smartspaceLogger)
@@ -327,7 +322,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
surface = SURFACE,
2,
true,
- rank = 1
+ rank = 1,
)
reset(smartspaceLogger)
@@ -343,7 +338,7 @@ class MediaCarouselInteractorTest : SysuiTestCase() {
data.smartspaceId,
data.appUid,
surface = SURFACE,
- 2
+ 2,
)
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaRecommendationsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaRecommendationsInteractorTest.kt
index 8af7e1dbe59b..11397d99bc03 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaRecommendationsInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaRecommendationsInteractorTest.kt
@@ -29,8 +29,6 @@ import com.android.systemui.animation.Expandable
import com.android.systemui.broadcast.broadcastSender
import com.android.systemui.broadcast.mockBroadcastSender
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.flags.Flags
-import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.MediaTestHelper
import com.android.systemui.media.controls.domain.pipeline.MediaDataFilterImpl
@@ -104,8 +102,8 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
listOf(
MediaRecModel(icon = icon),
MediaRecModel(icon = icon),
- MediaRecModel(icon = icon)
- )
+ MediaRecModel(icon = icon),
+ ),
)
mediaDataFilter.onSmartspaceMediaDataLoaded(KEY_MEDIA_SMARTSPACE, smartspaceMediaData)
@@ -114,22 +112,6 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
}
@Test
- fun setRecommendationInactive_isActiveUpdate() =
- testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, true)
- val isActive by collectLastValue(underTest.isActive)
-
- mediaDataFilter.onSmartspaceMediaDataLoaded(KEY_MEDIA_SMARTSPACE, smartspaceMediaData)
- assertThat(isActive).isTrue()
-
- mediaDataFilter.onSmartspaceMediaDataLoaded(
- KEY_MEDIA_SMARTSPACE,
- smartspaceMediaData.copy(isActive = false)
- )
- assertThat(isActive).isFalse()
- }
-
- @Test
fun addInvalidRecommendation() =
testScope.runTest {
val recommendations by collectLastValue(underTest.recommendations)
@@ -155,7 +137,7 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
intent,
0,
SMARTSPACE_CARD_DISMISS_EVENT,
- 1
+ 1,
)
verify(smartspaceLogger)
@@ -183,7 +165,7 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
intent,
0,
SMARTSPACE_CARD_DISMISS_EVENT,
- 1
+ 1,
)
verify(spyContext).startActivity(eq(intent))
@@ -216,7 +198,7 @@ class MediaRecommendationsInteractorTest : SysuiTestCase() {
cardinality = 1,
isRecommendationCard = true,
interactedSubcardRank = 2,
- interactedSubcardCardinality = 3
+ interactedSubcardCardinality = 3,
)
verify(spyContext).startActivity(eq(intent))
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListenerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListenerTest.kt
index 51c852531697..a3b3f5c6845d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListenerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListenerTest.kt
@@ -96,7 +96,6 @@ class MediaTimeoutListenerTest : SysuiTestCase() {
@Before
fun setup() {
whenever(mediaControllerFactory.create(any())).thenReturn(mediaController)
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(false)
mainExecutor = FakeExecutor(clock)
bgExecutor = FakeExecutor(clock)
uiExecutor = FakeExecutor(clock)
@@ -612,89 +611,6 @@ class MediaTimeoutListenerTest : SysuiTestCase() {
assertThat(mainExecutor.numPending()).isEqualTo(1)
}
- @Test
- fun testSmartspaceDataLoaded_schedulesTimeout() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- val duration = 60_000
- val createTime = 1234L
- val expireTime = createTime + duration
- whenever(smartspaceData.headphoneConnectionTimeMillis).thenReturn(createTime)
- whenever(smartspaceData.expiryTimeMs).thenReturn(expireTime)
-
- mediaTimeoutListener.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
- assertThat(mainExecutor.numPending()).isEqualTo(1)
- assertThat(mainExecutor.advanceClockToNext()).isEqualTo(duration)
- }
-
- @Test
- fun testSmartspaceMediaData_timesOut_invokesCallback() {
- // Given a pending timeout
- testSmartspaceDataLoaded_schedulesTimeout()
-
- mainExecutor.runAllReady()
- verify(timeoutCallback).invoke(eq(SMARTSPACE_KEY), eq(true))
- }
-
- @Test
- fun testSmartspaceDataLoaded_alreadyExists_updatesTimeout() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- val duration = 100
- val createTime = 1234L
- val expireTime = createTime + duration
- whenever(smartspaceData.headphoneConnectionTimeMillis).thenReturn(createTime)
- whenever(smartspaceData.expiryTimeMs).thenReturn(expireTime)
-
- mediaTimeoutListener.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
- assertThat(mainExecutor.numPending()).isEqualTo(1)
-
- val expiryLonger = expireTime + duration
- whenever(smartspaceData.expiryTimeMs).thenReturn(expiryLonger)
- mediaTimeoutListener.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
-
- assertThat(mainExecutor.numPending()).isEqualTo(1)
- assertThat(mainExecutor.advanceClockToNext()).isEqualTo(duration * 2)
- }
-
- @Test
- fun testSmartspaceDataRemoved_cancelTimeout() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
-
- mediaTimeoutListener.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
- assertThat(mainExecutor.numPending()).isEqualTo(1)
-
- mediaTimeoutListener.onSmartspaceMediaDataRemoved(SMARTSPACE_KEY)
- assertThat(mainExecutor.numPending()).isEqualTo(0)
- }
-
- @Test
- fun testSmartspaceData_dozedPastTimeout_invokedOnWakeup() {
- // Given a pending timeout
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- verify(statusBarStateController).addCallback(capture(dozingCallbackCaptor))
- val duration = 60_000
- val createTime = 1234L
- val expireTime = createTime + duration
- whenever(smartspaceData.headphoneConnectionTimeMillis).thenReturn(createTime)
- whenever(smartspaceData.expiryTimeMs).thenReturn(expireTime)
-
- mediaTimeoutListener.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
- assertThat(mainExecutor.numPending()).isEqualTo(1)
-
- // And we doze past the scheduled timeout
- val time = clock.currentTimeMillis()
- clock.setElapsedRealtime(time + duration * 2)
- assertThat(mainExecutor.numPending()).isEqualTo(1)
-
- // Then when no longer dozing, the timeout runs immediately
- dozingCallbackCaptor.value.onDozingChanged(false)
- verify(timeoutCallback).invoke(eq(SMARTSPACE_KEY), eq(true))
- verify(logger).logTimeout(eq(SMARTSPACE_KEY))
-
- // and cancel any later scheduled timeout
- assertThat(mainExecutor.numPending()).isEqualTo(0)
- }
-
private fun loadMediaDataWithPlaybackState(state: PlaybackState) {
whenever(mediaController.playbackState).thenReturn(state)
loadMediaData(data = mediaData)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModelTest.kt
index 067b00c1658b..fb5bbf452cfa 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModelTest.kt
@@ -25,8 +25,6 @@ import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.flags.Flags
-import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.MediaTestHelper
import com.android.systemui.media.controls.domain.pipeline.MediaDataFilterImpl
@@ -126,7 +124,6 @@ class MediaCarouselViewModelTest : SysuiTestCase() {
fun loadMediaControlsAndRecommendations_mediaItemsAreUpdated() =
testScope.runTest {
val sortedMedia by collectLastValue(underTest.mediaItems)
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
val instanceId1 = InstanceId.fakeInstanceId(123)
val instanceId2 = InstanceId.fakeInstanceId(456)
@@ -147,7 +144,6 @@ class MediaCarouselViewModelTest : SysuiTestCase() {
testScope.runTest {
val sortedMedia by collectLastValue(underTest.mediaItems)
kosmos.visualStabilityProvider.isReorderingAllowed = false
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
val instanceId = InstanceId.fakeInstanceId(123)
loadMediaRecommendations()
@@ -207,7 +203,6 @@ class MediaCarouselViewModelTest : SysuiTestCase() {
fun addMediaRecommendationThenRemove_mediaEventsAreLogged() =
testScope.runTest {
val sortedMedia by collectLastValue(underTest.mediaItems)
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
loadMediaRecommendations()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt
index 424afe171f96..e2d33b6fd3cc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt
@@ -107,7 +107,6 @@ class QuickSettingsSceneContentViewModelTest : SysuiTestCase() {
@Test
fun addAndRemoveMedia_mediaVisibilityIsUpdated() =
testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
val isMediaVisible by collectLastValue(underTest.isMediaVisible)
val userMedia = MediaData(active = true)
@@ -125,7 +124,6 @@ class QuickSettingsSceneContentViewModelTest : SysuiTestCase() {
@Test
fun addInactiveMedia_mediaVisibilityIsUpdated() =
testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
val isMediaVisible by collectLastValue(underTest.isMediaVisible)
val userMedia = MediaData(active = false)
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
index 2c33c0b4403b..d9d39953e99a 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
@@ -206,9 +206,6 @@ object Flags {
// TODO(b/267007629): Tracking Bug
val MEDIA_RESUME_PROGRESS = releasedFlag("media_resume_progress")
- // TODO(b/267166152) : Tracking Bug
- val MEDIA_RETAIN_RECOMMENDATIONS = unreleasedFlag("media_retain_recommendations")
-
// TODO(b/270437894): Tracking Bug
val MEDIA_REMOTE_RESUME = unreleasedFlag("media_remote_resume")
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/data/repository/MediaDataRepository.kt b/packages/SystemUI/src/com/android/systemui/media/controls/data/repository/MediaDataRepository.kt
index b6fd287a675e..8e773a5de194 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/data/repository/MediaDataRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/data/repository/MediaDataRepository.kt
@@ -36,10 +36,7 @@ private const val DEBUG = true
@SysUISingleton
class MediaDataRepository
@Inject
-constructor(
- private val mediaFlags: MediaFlags,
- dumpManager: DumpManager,
-) : Dumpable {
+constructor(private val mediaFlags: MediaFlags, dumpManager: DumpManager) : Dumpable {
private val _mediaEntries: MutableStateFlow<Map<String, MediaData>> =
MutableStateFlow(LinkedHashMap())
@@ -59,27 +56,6 @@ constructor(
}
/**
- * Marks the recommendation data as inactive.
- *
- * @return true if the recommendation was actually marked as inactive, false otherwise.
- */
- fun setRecommendationInactive(key: String): Boolean {
- if (!mediaFlags.isPersistentSsCardEnabled()) {
- Log.e(TAG, "Only persistent recommendation can be inactive!")
- return false
- }
- if (DEBUG) Log.d(TAG, "Setting smartspace recommendation inactive")
-
- if (smartspaceMediaData.value.targetId != key || !smartspaceMediaData.value.isValid()) {
- // If this doesn't match, or we've already invalidated the data, no action needed
- return false
- }
-
- setRecommendation(smartspaceMediaData.value.copy(isActive = false))
- return true
- }
-
- /**
* Marks the recommendation data as dismissed.
*
* @return true if the recommendation was dismissed or already inactive, false otherwise.
@@ -96,7 +72,7 @@ constructor(
setRecommendation(
SmartspaceMediaData(
targetId = smartspaceMediaData.value.targetId,
- instanceId = smartspaceMediaData.value.instanceId
+ instanceId = smartspaceMediaData.value.instanceId,
)
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImpl.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImpl.kt
index 96ef7d250012..6ea161c54aaf 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImpl.kt
@@ -76,6 +76,7 @@ constructor(
private val _listeners: MutableSet<MediaDataManager.Listener> = mutableSetOf()
val listeners: Set<MediaDataManager.Listener>
get() = _listeners.toSet()
+
lateinit var mediaDataManager: MediaDataManager
private val allEntries: LinkedHashMap<String, MediaData> = LinkedHashMap()
@@ -107,7 +108,7 @@ constructor(
data: MediaData,
immediately: Boolean,
receivedSmartspaceCardLatency: Int,
- isSsReactivated: Boolean
+ isSsReactivated: Boolean,
) {
if (oldKey != null && oldKey != key) {
allEntries.remove(oldKey)
@@ -133,11 +134,9 @@ constructor(
override fun onSmartspaceMediaDataLoaded(
key: String,
data: SmartspaceMediaData,
- shouldPrioritize: Boolean
+ shouldPrioritize: Boolean,
) {
- // With persistent recommendation card, we could get a background update while inactive
- // Otherwise, consider it an invalid update
- if (!data.isActive && !mediaFlags.isPersistentSsCardEnabled()) {
+ if (!data.isActive) {
Log.d(TAG, "Inactive recommendation data. Skip triggering.")
return
}
@@ -176,7 +175,7 @@ constructor(
logger.logRecommendationActivated(
mediaData.appUid,
mediaData.packageName,
- mediaData.instanceId
+ mediaData.instanceId,
)
listeners.forEach {
it.onMediaDataLoaded(
@@ -186,7 +185,7 @@ constructor(
receivedSmartspaceCardLatency =
(systemClock.currentTimeMillis() - data.headphoneConnectionTimeMillis)
.toInt(),
- isSsReactivated = true
+ isSsReactivated = true,
)
}
}
@@ -201,7 +200,7 @@ constructor(
}
logger.logRecommendationAdded(
smartspaceMediaData.packageName,
- smartspaceMediaData.instanceId
+ smartspaceMediaData.instanceId,
)
listeners.forEach { it.onSmartspaceMediaDataLoaded(key, data, shouldPrioritizeMutable) }
}
@@ -232,7 +231,7 @@ constructor(
smartspaceMediaData =
EMPTY_SMARTSPACE_MEDIA_DATA.copy(
targetId = smartspaceMediaData.targetId,
- instanceId = smartspaceMediaData.instanceId
+ instanceId = smartspaceMediaData.instanceId,
)
}
listeners.forEach { it.onSmartspaceMediaDataRemoved(key, immediately) }
@@ -286,7 +285,7 @@ constructor(
if (dismissIntent == null) {
Log.w(
TAG,
- "Cannot create dismiss action click action: extras missing dismiss_intent."
+ "Cannot create dismiss action click action: extras missing dismiss_intent.",
)
} else if (
dismissIntent.component?.className == EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME
@@ -297,20 +296,15 @@ constructor(
broadcastSender.sendBroadcast(dismissIntent)
}
- if (mediaFlags.isPersistentSsCardEnabled()) {
- smartspaceMediaData = smartspaceMediaData.copy(isActive = false)
- mediaDataManager.setRecommendationInactive(smartspaceMediaData.targetId)
- } else {
- smartspaceMediaData =
- EMPTY_SMARTSPACE_MEDIA_DATA.copy(
- targetId = smartspaceMediaData.targetId,
- instanceId = smartspaceMediaData.instanceId,
- )
- mediaDataManager.dismissSmartspaceRecommendation(
- smartspaceMediaData.targetId,
- delay = 0L,
+ smartspaceMediaData =
+ EMPTY_SMARTSPACE_MEDIA_DATA.copy(
+ targetId = smartspaceMediaData.targetId,
+ instanceId = smartspaceMediaData.instanceId,
)
- }
+ mediaDataManager.dismissSmartspaceRecommendation(
+ smartspaceMediaData.targetId,
+ delay = 0L,
+ )
}
}
@@ -322,12 +316,7 @@ constructor(
/** Are there any media entries we should display? */
fun hasAnyMediaOrRecommendation(): Boolean {
- val hasSmartspace =
- if (mediaFlags.isPersistentSsCardEnabled()) {
- smartspaceMediaData.isValid()
- } else {
- smartspaceMediaData.isActive && smartspaceMediaData.isValid()
- }
+ val hasSmartspace = smartspaceMediaData.isActive && smartspaceMediaData.isValid()
return userEntries.isNotEmpty() || hasSmartspace
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt
index 52749c54b9ba..3eac12d2b24c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImpl.kt
@@ -70,8 +70,6 @@ import com.android.systemui.media.controls.domain.pipeline.MediaDataManager.Comp
import com.android.systemui.media.controls.domain.resume.MediaResumeListener
import com.android.systemui.media.controls.domain.resume.ResumeMediaBrowser
import com.android.systemui.media.controls.shared.MediaLogger
-import com.android.systemui.media.controls.shared.model.EXTRA_KEY_TRIGGER_SOURCE
-import com.android.systemui.media.controls.shared.model.EXTRA_VALUE_TRIGGER_PERIODIC
import com.android.systemui.media.controls.shared.model.MediaAction
import com.android.systemui.media.controls.shared.model.MediaButton
import com.android.systemui.media.controls.shared.model.MediaData
@@ -769,23 +767,6 @@ class LegacyMediaDataManagerImpl(
)
}
- /** Called when the recommendation card should no longer be visible in QQS or lockscreen */
- override fun setRecommendationInactive(key: String) {
- if (!mediaFlags.isPersistentSsCardEnabled()) {
- Log.e(TAG, "Only persistent recommendation can be inactive!")
- return
- }
- if (DEBUG) Log.d(TAG, "Setting smartspace recommendation inactive")
-
- if (smartspaceMediaData.targetId != key || !smartspaceMediaData.isValid()) {
- // If this doesn't match, or we've already invalidated the data, no action needed
- return
- }
-
- smartspaceMediaData = smartspaceMediaData.copy(isActive = false)
- notifySmartspaceMediaDataLoaded(smartspaceMediaData.targetId, smartspaceMediaData)
- }
-
private suspend fun loadMediaDataForResumption(
userId: Int,
desc: MediaDescription,
@@ -1498,15 +1479,7 @@ class LegacyMediaDataManagerImpl(
val dismissIntent =
baseAction?.extras?.getParcelable(EXTRAS_SMARTSPACE_DISMISS_INTENT_KEY) as Intent?
- val isActive =
- when {
- !mediaFlags.isPersistentSsCardEnabled() -> true
- baseAction == null -> true
- else -> {
- val triggerSource = baseAction.extras?.getString(EXTRA_KEY_TRIGGER_SOURCE)
- triggerSource != EXTRA_VALUE_TRIGGER_PERIODIC
- }
- }
+ val isActive = true
packageName(target)?.let {
return SmartspaceMediaData(
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImpl.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImpl.kt
index 68f1af311b1b..4c0312fb4fa3 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImpl.kt
@@ -103,7 +103,7 @@ constructor(
data: MediaData,
immediately: Boolean,
receivedSmartspaceCardLatency: Int,
- isSsReactivated: Boolean
+ isSsReactivated: Boolean,
) {
if (oldKey != null && oldKey != key) {
mediaFilterRepository.removeMediaEntry(oldKey)
@@ -122,7 +122,7 @@ constructor(
mediaLogger.logMediaLoaded(data.instanceId, data.active, "loading media")
mediaFilterRepository.addMediaDataLoadingState(
MediaDataLoadingModel.Loaded(data.instanceId),
- isUpdate
+ isUpdate,
)
// Notify listeners
@@ -132,11 +132,9 @@ constructor(
override fun onSmartspaceMediaDataLoaded(
key: String,
data: SmartspaceMediaData,
- shouldPrioritize: Boolean
+ shouldPrioritize: Boolean,
) {
- // With persistent recommendation card, we could get a background update while inactive
- // Otherwise, consider it an invalid update
- if (!data.isActive && !mediaFlags.isPersistentSsCardEnabled()) {
+ if (!data.isActive) {
Log.d(TAG, "Inactive recommendation data. Skip triggering.")
return
}
@@ -179,7 +177,7 @@ constructor(
logger.logRecommendationActivated(
mediaData.appUid,
mediaData.packageName,
- mediaData.instanceId
+ mediaData.instanceId,
)
mediaFilterRepository.addMediaDataLoadingState(
MediaDataLoadingModel.Loaded(
@@ -187,13 +185,13 @@ constructor(
receivedSmartspaceCardLatency =
(systemClock.currentTimeMillis() - data.headphoneConnectionTimeMillis)
.toInt(),
- isSsReactivated = true
+ isSsReactivated = true,
)
)
mediaLogger.logMediaLoaded(
mediaData.instanceId,
mediaData.active,
- "reactivating media instead of smartspace"
+ "reactivating media instead of smartspace",
)
listeners.forEach { listener ->
getKey(lastActiveId)?.let { lastActiveKey ->
@@ -205,7 +203,7 @@ constructor(
(systemClock.currentTimeMillis() -
data.headphoneConnectionTimeMillis)
.toInt(),
- isSsReactivated = true
+ isSsReactivated = true,
)
}
}
@@ -222,7 +220,7 @@ constructor(
val smartspaceMediaData = mediaFilterRepository.smartspaceMediaData.value
logger.logRecommendationAdded(
smartspaceMediaData.packageName,
- smartspaceMediaData.instanceId
+ smartspaceMediaData.instanceId,
)
mediaFilterRepository.setRecommendationsLoadingState(
SmartspaceMediaLoadingModel.Loaded(key, shouldPrioritizeMutable)
@@ -268,7 +266,7 @@ constructor(
mediaFilterRepository.setRecommendation(
EMPTY_SMARTSPACE_MEDIA_DATA.copy(
targetId = smartspaceMediaData.targetId,
- instanceId = smartspaceMediaData.instanceId
+ instanceId = smartspaceMediaData.instanceId,
)
)
}
@@ -317,12 +315,12 @@ constructor(
val isUpdate = mediaFilterRepository.addSelectedUserMediaEntry(data)
mediaFilterRepository.addMediaDataLoadingState(
MediaDataLoadingModel.Loaded(data.instanceId),
- isUpdate
+ isUpdate,
)
mediaLogger.logMediaLoaded(
data.instanceId,
data.active,
- "Re-adding $key after user change"
+ "Re-adding $key after user change",
)
listenersCopy.forEach { listener -> listener.onMediaDataLoaded(key, null, data) }
}
@@ -346,7 +344,7 @@ constructor(
if (dismissIntent == null) {
Log.w(
TAG,
- "Cannot create dismiss action click action: extras missing dismiss_intent."
+ "Cannot create dismiss action click action: extras missing dismiss_intent.",
)
} else if (
dismissIntent.component?.className == EXPORTED_SMARTSPACE_TRAMPOLINE_ACTIVITY_NAME
@@ -357,21 +355,16 @@ constructor(
broadcastSender.sendBroadcast(dismissIntent)
}
- if (mediaFlags.isPersistentSsCardEnabled()) {
- mediaFilterRepository.setRecommendation(smartspaceMediaData.copy(isActive = false))
- mediaDataProcessor.setRecommendationInactive(smartspaceMediaData.targetId)
- } else {
- mediaFilterRepository.setRecommendation(
- EMPTY_SMARTSPACE_MEDIA_DATA.copy(
- targetId = smartspaceMediaData.targetId,
- instanceId = smartspaceMediaData.instanceId,
- )
- )
- mediaDataProcessor.dismissSmartspaceRecommendation(
- smartspaceMediaData.targetId,
- delay = 0L,
+ mediaFilterRepository.setRecommendation(
+ EMPTY_SMARTSPACE_MEDIA_DATA.copy(
+ targetId = smartspaceMediaData.targetId,
+ instanceId = smartspaceMediaData.instanceId,
)
- }
+ )
+ mediaDataProcessor.dismissSmartspaceRecommendation(
+ smartspaceMediaData.targetId,
+ delay = 0L,
+ )
}
}
@@ -421,7 +414,7 @@ constructor(
get() =
SystemProperties.getLong(
"debug.sysui.smartspace_max_age",
- TimeUnit.MINUTES.toMillis(30)
+ TimeUnit.MINUTES.toMillis(30),
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataManager.kt
index 8099e593b33d..c3182bf7a320 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataManager.kt
@@ -56,7 +56,7 @@ interface MediaDataManager {
token: MediaSession.Token,
appName: String,
appIntent: PendingIntent,
- packageName: String
+ packageName: String,
)
/** Dismiss a media entry. Returns false if the key was not found. */
@@ -68,9 +68,6 @@ interface MediaDataManager {
*/
fun dismissSmartspaceRecommendation(key: String, delay: Long)
- /** Called when the recommendation card should no longer be visible in QQS or lockscreen */
- fun setRecommendationInactive(key: String)
-
/** Invoked when notification is removed. */
fun onNotificationRemoved(key: String)
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt
index 587a678c6ac0..1464849156dc 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessor.kt
@@ -71,8 +71,6 @@ import com.android.systemui.media.controls.domain.pipeline.MediaDataManager.Comp
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
import com.android.systemui.media.controls.domain.resume.ResumeMediaBrowser
import com.android.systemui.media.controls.shared.MediaLogger
-import com.android.systemui.media.controls.shared.model.EXTRA_KEY_TRIGGER_SOURCE
-import com.android.systemui.media.controls.shared.model.EXTRA_VALUE_TRIGGER_PERIODIC
import com.android.systemui.media.controls.shared.model.MediaAction
import com.android.systemui.media.controls.shared.model.MediaButton
import com.android.systemui.media.controls.shared.model.MediaData
@@ -613,14 +611,6 @@ class MediaDataProcessor(
}
}
- /** Called when the recommendation card should no longer be visible in QQS or lockscreen */
- fun setRecommendationInactive(key: String) {
- if (mediaDataRepository.setRecommendationInactive(key)) {
- val recommendation = mediaDataRepository.smartspaceMediaData.value
- notifySmartspaceMediaDataLoaded(recommendation.targetId, recommendation)
- }
- }
-
private suspend fun loadMediaDataForResumption(
userId: Int,
desc: MediaDescription,
@@ -1459,15 +1449,7 @@ class MediaDataProcessor(
?.extras
?.getParcelable(EXTRAS_SMARTSPACE_DISMISS_INTENT_KEY, Intent::class.java)
- val isActive =
- when {
- !mediaFlags.isPersistentSsCardEnabled() -> true
- baseAction == null -> true
- else -> {
- val triggerSource = baseAction.extras?.getString(EXTRA_KEY_TRIGGER_SOURCE)
- triggerSource != EXTRA_VALUE_TRIGGER_PERIODIC
- }
- }
+ val isActive = true
packageName(target)?.let {
return SmartspaceMediaData(
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListener.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListener.kt
index 39cedc36dbec..684a560b0502 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaTimeoutListener.kt
@@ -180,30 +180,6 @@ constructor(
mediaListeners.remove(key)?.destroy()
}
- override fun onSmartspaceMediaDataLoaded(
- key: String,
- data: SmartspaceMediaData,
- shouldPrioritize: Boolean,
- ) {
- if (!mediaFlags.isPersistentSsCardEnabled()) return
-
- // First check if we already have a listener
- recommendationListeners.get(key)?.let {
- if (!it.destroyed) {
- it.recommendationData = data
- return
- }
- }
-
- // Otherwise, create a new one
- recommendationListeners[key] = RecommendationListener(key, data)
- }
-
- override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) {
- if (!mediaFlags.isPersistentSsCardEnabled()) return
- recommendationListeners.remove(key)?.destroy()
- }
-
fun isTimedOut(key: String): Boolean {
return mediaListeners[key]?.timedOut ?: false
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/interactor/MediaCarouselInteractor.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/interactor/MediaCarouselInteractor.kt
index 8a7d50bab00c..891b85225577 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/interactor/MediaCarouselInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/interactor/MediaCarouselInteractor.kt
@@ -68,7 +68,7 @@ constructor(
combine(
mediaFilterRepository.selectedUserEntries,
mediaFilterRepository.smartspaceMediaData,
- mediaFilterRepository.reactivatedId
+ mediaFilterRepository.reactivatedId,
) { entries, smartspaceMediaData, reactivatedKey ->
entries.any { it.value.active } ||
(smartspaceMediaData.isActive &&
@@ -84,14 +84,10 @@ constructor(
val hasAnyMediaOrRecommendation: StateFlow<Boolean> =
combine(
mediaFilterRepository.selectedUserEntries,
- mediaFilterRepository.smartspaceMediaData
+ mediaFilterRepository.smartspaceMediaData,
) { entries, smartspaceMediaData ->
entries.isNotEmpty() ||
- (if (mediaFlags.isPersistentSsCardEnabled()) {
- smartspaceMediaData.isValid()
- } else {
- smartspaceMediaData.isActive && smartspaceMediaData.isValid()
- })
+ (smartspaceMediaData.isActive && smartspaceMediaData.isValid())
}
.stateIn(
scope = applicationScope,
@@ -168,7 +164,7 @@ constructor(
token: MediaSession.Token,
appName: String,
appIntent: PendingIntent,
- packageName: String
+ packageName: String,
) {
mediaDataProcessor.addResumptionControls(
userId,
@@ -177,7 +173,7 @@ constructor(
token,
appName,
appIntent,
- packageName
+ packageName,
)
}
@@ -193,8 +189,6 @@ constructor(
return mediaDataProcessor.dismissSmartspaceRecommendation(key, delay)
}
- override fun setRecommendationInactive(key: String) = unsupported
-
override fun onNotificationRemoved(key: String) {
mediaDataProcessor.onNotificationRemoved(key)
}
@@ -228,7 +222,7 @@ constructor(
mediaFilterRepository.logSmartspaceCardSeen(
MediaSmartspaceLogger.getSurface(location),
visibleIndex,
- isMediaCardUpdate
+ isMediaCardUpdate,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
index 16f84caac728..f05029b2d55f 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
@@ -614,12 +614,8 @@ constructor(
logSmartspaceImpression(mediaCarouselScrollHandler.qsExpanded)
}
} else {
- if (!mediaFlags.isPersistentSsCardEnabled()) {
- // Handle update to inactive as a removal
- onSmartspaceMediaDataRemoved(data.targetId, immediately = true)
- } else {
- addSmartspaceMediaRecommendations(key, data, shouldPrioritize)
- }
+ // Handle update to inactive as a removal
+ onSmartspaceMediaDataRemoved(data.targetId, immediately = true)
}
MediaPlayerData.isSwipedAway = false
}
@@ -1125,18 +1121,6 @@ constructor(
traceSection("MediaCarouselController#addSmartspaceMediaRecommendations") {
if (DEBUG) Log.d(TAG, "Updating smartspace target in carousel")
MediaPlayerData.getMediaPlayer(key)?.let {
- if (mediaFlags.isPersistentSsCardEnabled()) {
- // The card exists, but could have changed active state, so update for sorting
- MediaPlayerData.addMediaRecommendation(
- key,
- data,
- it,
- shouldPrioritize,
- systemClock,
- debugLogger,
- update = true,
- )
- }
Log.w(TAG, "Skip adding smartspace target in carousel")
return
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModel.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModel.kt
index b2137afa05e6..4bdcfea6485e 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/MediaCarouselViewModel.kt
@@ -167,14 +167,11 @@ constructor(
): MediaCommonViewModel.MediaRecommendations {
return mediaRecs?.copy(
key = commonModel.recsLoadingModel.key,
- loadingEnabled =
- interactor.isRecommendationActive() || mediaFlags.isPersistentSsCardEnabled(),
+ loadingEnabled = interactor.isRecommendationActive(),
)
?: MediaCommonViewModel.MediaRecommendations(
key = commonModel.recsLoadingModel.key,
- loadingEnabled =
- interactor.isRecommendationActive() ||
- mediaFlags.isPersistentSsCardEnabled(),
+ loadingEnabled = interactor.isRecommendationActive(),
recsViewModel = recommendationsViewModel,
onAdded = { commonViewModel ->
mediaLogger.logMediaRecommendationCardAdded(
@@ -217,9 +214,7 @@ constructor(
commonViewModel: MediaCommonViewModel.MediaRecommendations
) {
if (!interactor.isRecommendationActive()) {
- if (!mediaFlags.isPersistentSsCardEnabled()) {
- commonViewModel.onRemoved(true)
- }
+ commonViewModel.onRemoved(true)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaFlags.kt b/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaFlags.kt
index ac60c47ee6ab..172998e09266 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaFlags.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/util/MediaFlags.kt
@@ -49,10 +49,6 @@ class MediaFlags @Inject constructor(private val featureFlags: FeatureFlagsClass
/** Check whether to get progress information for resume players */
fun isResumeProgressEnabled() = featureFlags.isEnabled(FlagsClassic.MEDIA_RESUME_PROGRESS)
- /** If true, do not automatically dismiss the recommendation card */
- fun isPersistentSsCardEnabled() =
- featureFlags.isEnabled(FlagsClassic.MEDIA_RETAIN_RECOMMENDATIONS)
-
/** Check whether we allow remote media to generate resume controls */
fun isRemoteResumeAllowed() = featureFlags.isEnabled(FlagsClassic.MEDIA_REMOTE_RESUME)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImplTest.kt
index e2a2b7a91319..38dc03e9b5ea 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataFilterImplTest.kt
@@ -41,7 +41,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt
-import org.mockito.ArgumentMatchers.anyLong
import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.reset
@@ -90,7 +89,6 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
fun setup() {
MockitoAnnotations.initMocks(this)
MediaPlayerData.clear()
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(false)
mediaDataFilter =
LegacyMediaDataFilterImpl(
context,
@@ -100,7 +98,7 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
executor,
clock,
logger,
- mediaFlags
+ mediaFlags,
)
mediaDataFilter.mediaDataManager = mediaDataManager
mediaDataFilter.addListener(listener)
@@ -114,7 +112,7 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
userId = USER_MAIN,
packageName = PACKAGE,
instanceId = INSTANCE_ID,
- appUid = APP_UID
+ appUid = APP_UID,
)
dataGuest = dataMain.copy(userId = USER_GUEST)
dataPrivateProfile = dataMain.copy(userId = PRIVATE_PROFILE)
@@ -476,7 +474,7 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
assertThat(mediaDataFilter.hasActiveMediaOrRecommendation()).isTrue()
// Smartspace update shouldn't be propagated for the empty rec list.
@@ -505,7 +503,7 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
assertThat(mediaDataFilter.hasActiveMediaOrRecommendation()).isTrue()
// Smartspace update should also be propagated but not prioritized.
@@ -542,7 +540,7 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
mediaDataFilter.onSmartspaceMediaDataRemoved(SMARTSPACE_KEY)
@@ -553,61 +551,6 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
}
@Test
- fun testOnSmartspaceLoaded_persistentEnabled_isInactive_notifiesListeners() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- whenever(smartspaceData.isActive).thenReturn(false)
-
- mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
-
- verify(listener)
- .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), eq(false))
- assertThat(mediaDataFilter.hasActiveMediaOrRecommendation()).isFalse()
- assertThat(mediaDataFilter.hasAnyMediaOrRecommendation()).isTrue()
- }
-
- @Test
- fun testOnSmartspaceLoaded_persistentEnabled_inactive_hasRecentMedia_staysInactive() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- whenever(smartspaceData.isActive).thenReturn(false)
-
- // If there is media that was recently played but inactive
- val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime())
- mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent)
- verify(listener)
- .onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent), eq(true), eq(0), eq(false))
-
- // And an inactive recommendation is loaded
- mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
-
- // Smartspace is loaded but the media stays inactive
- verify(listener)
- .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), eq(false))
- verify(listener, never())
- .onMediaDataLoaded(any(), any(), any(), anyBoolean(), anyInt(), anyBoolean())
- assertThat(mediaDataFilter.hasActiveMediaOrRecommendation()).isFalse()
- assertThat(mediaDataFilter.hasAnyMediaOrRecommendation()).isTrue()
- }
-
- @Test
- fun testOnSwipeToDismiss_persistentEnabled_recommendationSetInactive() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
-
- val data =
- EMPTY_SMARTSPACE_MEDIA_DATA.copy(
- targetId = SMARTSPACE_KEY,
- isActive = true,
- packageName = SMARTSPACE_PACKAGE,
- recommendations = listOf(smartspaceMediaRecommendationItem),
- )
- mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, data)
- mediaDataFilter.onSwipeToDismiss()
-
- verify(mediaDataManager).setRecommendationInactive(eq(SMARTSPACE_KEY))
- verify(mediaDataManager, never())
- .dismissSmartspaceRecommendation(eq(SMARTSPACE_KEY), anyLong())
- }
-
- @Test
fun testSmartspaceLoaded_shouldTriggerResume_doesTrigger() {
// WHEN we have media that was recently played, but not currently active
val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime())
@@ -629,7 +572,7 @@ class LegacyMediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
assertThat(mediaDataFilter.hasActiveMediaOrRecommendation()).isTrue()
// And send the smartspace data, but not prioritized
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
index 2815b97691ad..b5eb90402f43 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/LegacyMediaDataManagerImplTest.kt
@@ -54,7 +54,6 @@ import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.Flags.MEDIA_REMOTE_RESUME
import com.android.systemui.flags.Flags.MEDIA_RESUME_PROGRESS
-import com.android.systemui.flags.Flags.MEDIA_RETAIN_RECOMMENDATIONS
import com.android.systemui.flags.Flags.MEDIA_RETAIN_SESSIONS
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.kosmos.testDispatcher
@@ -293,7 +292,6 @@ class LegacyMediaDataManagerImplTest(flags: FlagsParameterization) : SysuiTestCa
fakeFeatureFlags.set(MEDIA_RETAIN_SESSIONS, false)
fakeFeatureFlags.set(MEDIA_RESUME_PROGRESS, false)
fakeFeatureFlags.set(MEDIA_REMOTE_RESUME, false)
- fakeFeatureFlags.set(MEDIA_RETAIN_RECOMMENDATIONS, false)
whenever(logger.getNewInstanceId()).thenReturn(instanceIdSequence.newInstanceId())
whenever(keyguardUpdateMonitor.isUserInLockdown(any())).thenReturn(false)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt
index 3705909cbc2b..811d2e2b2b06 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataFilterImplTest.kt
@@ -20,7 +20,6 @@ import android.R
import android.app.smartspace.SmartspaceAction
import android.graphics.drawable.Icon
import android.os.Bundle
-import android.os.Process
import android.testing.TestableLooper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
@@ -42,7 +41,6 @@ import com.android.systemui.media.controls.ui.controller.MediaPlayerData
import com.android.systemui.media.controls.util.MediaFlags
import com.android.systemui.media.controls.util.MediaSmartspaceLogger
import com.android.systemui.media.controls.util.MediaUiEventLogger
-import com.android.systemui.media.controls.util.SmallHash
import com.android.systemui.media.controls.util.mediaSmartspaceLogger
import com.android.systemui.media.controls.util.mockMediaSmartspaceLogger
import com.android.systemui.settings.UserTracker
@@ -60,7 +58,6 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt
-import org.mockito.ArgumentMatchers.anyLong
import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
import org.mockito.Mockito.never
@@ -121,7 +118,6 @@ class MediaDataFilterImplTest : SysuiTestCase() {
fun setup() {
MockitoAnnotations.initMocks(this)
MediaPlayerData.clear()
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(false)
testScope = TestScope()
mediaDataFilter =
MediaDataFilterImpl(
@@ -148,7 +144,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
userId = USER_MAIN,
packageName = PACKAGE,
instanceId = INSTANCE_ID,
- appUid = APP_UID
+ appUid = APP_UID,
)
dataGuest = dataMain.copy(userId = USER_GUEST, instanceId = INSTANCE_ID_GUEST)
dataPrivateProfile = dataMain.copy(userId = PRIVATE_PROFILE, instanceId = INSTANCE_ID_GUEST)
@@ -302,7 +298,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
eq(dataMain),
anyBoolean(),
anyInt(),
- anyBoolean()
+ anyBoolean(),
)
verify(mediaLogger, never())
.logMediaLoaded(eq(dataMain.instanceId), anyBoolean(), anyString())
@@ -406,7 +402,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -425,7 +421,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -444,7 +440,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -463,7 +459,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -483,7 +479,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -513,7 +509,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -524,7 +520,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -561,7 +557,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
anyInt(),
anyInt(),
anyInt(),
- eq(true)
+ eq(true),
)
verify(mediaDataProcessor).setInactive(eq(KEY), eq(true), eq(true))
}
@@ -584,7 +580,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -613,7 +609,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -641,7 +637,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
val controlCommonModel =
MediaCommonModel.MediaControl(
MediaDataLoadingModel.Loaded(dataMain.instanceId),
- true
+ true,
)
val dataOld = dataMain.copy(active = false, lastActive = clock.elapsedRealtime())
mediaDataFilter.onMediaDataLoaded(KEY, null, dataOld)
@@ -653,7 +649,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -689,7 +685,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -715,7 +711,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
val controlCommonModel =
MediaCommonModel.MediaControl(
MediaDataLoadingModel.Loaded(dataMain.instanceId),
- true
+ true,
)
mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent)
repository.setOrderedMedia()
@@ -737,7 +733,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -784,7 +780,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
controlCommonModel.copy(
mediaLoadingModel.copy(
receivedSmartspaceCardLatency = 100,
- isSsReactivated = true
+ isSsReactivated = true,
)
)
assertThat(currentMedia).containsExactly(controlCommonModel)
@@ -792,7 +788,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -803,13 +799,13 @@ class MediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
verify(mediaLogger)
.logMediaLoaded(
eq(dataCurrentAndActive.instanceId),
eq(dataCurrentAndActive.active),
- anyString()
+ anyString(),
)
// Smartspace update shouldn't be propagated for the empty rec list.
verify(listener, never()).onSmartspaceMediaDataLoaded(any(), any(), anyBoolean())
@@ -857,19 +853,19 @@ class MediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
verify(mediaLogger)
.logMediaLoaded(
eq(dataCurrentAndActive.instanceId),
eq(dataCurrentAndActive.active),
- anyString()
+ anyString(),
)
assertThat(
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -878,7 +874,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
controlCommonModel.copy(
mediaLoadingModel.copy(
receivedSmartspaceCardLatency = 100,
- isSsReactivated = true
+ isSsReactivated = true,
)
)
assertThat(currentMedia).containsExactly(controlCommonModel, recsCommonModel)
@@ -907,7 +903,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -924,7 +920,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
val controlCommonModel =
MediaCommonModel.MediaControl(
MediaDataLoadingModel.Loaded(dataMain.instanceId),
- true
+ true,
)
val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime())
mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent)
@@ -948,13 +944,13 @@ class MediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
verify(mediaLogger)
.logMediaLoaded(
eq(dataCurrentAndActive.instanceId),
eq(dataCurrentAndActive.active),
- anyString()
+ anyString(),
)
mediaDataFilter.onSmartspaceMediaDataRemoved(SMARTSPACE_KEY)
@@ -966,7 +962,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isFalse()
@@ -974,129 +970,6 @@ class MediaDataFilterImplTest : SysuiTestCase() {
}
@Test
- fun onSmartspaceLoaded_persistentEnabled_isInactive() =
- testScope.runTest {
- val selectedUserEntries by collectLastValue(repository.selectedUserEntries)
- val smartspaceMediaData by collectLastValue(repository.smartspaceMediaData)
- val reactivatedKey by collectLastValue(repository.reactivatedId)
- val currentMedia by collectLastValue(repository.currentMedia)
- val recsCommonModel =
- MediaCommonModel.MediaRecommendations(
- SmartspaceMediaLoadingModel.Loaded(SMARTSPACE_KEY)
- )
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- whenever(smartspaceData.isActive).thenReturn(false)
-
- mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
-
- verify(listener)
- .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), eq(false))
- verify(mediaLogger).logRecommendationLoaded(eq(SMARTSPACE_KEY), eq(false), anyString())
- assertThat(currentMedia).containsExactly(recsCommonModel)
- assertThat(
- hasActiveMediaOrRecommendation(
- selectedUserEntries,
- smartspaceMediaData,
- reactivatedKey
- )
- )
- .isFalse()
- assertThat(hasAnyMediaOrRecommendation(selectedUserEntries, smartspaceMediaData))
- .isTrue()
- }
-
- @Test
- fun onSmartspaceLoaded_persistentEnabled_inactive_hasRecentMedia_staysInactive() =
- testScope.runTest {
- val selectedUserEntries by collectLastValue(repository.selectedUserEntries)
- val smartspaceMediaData by collectLastValue(repository.smartspaceMediaData)
- val reactivatedKey by collectLastValue(repository.reactivatedId)
- val currentMedia by collectLastValue(repository.currentMedia)
- val recsCommonModel =
- MediaCommonModel.MediaRecommendations(
- SmartspaceMediaLoadingModel.Loaded(SMARTSPACE_KEY)
- )
- val controlCommonModel =
- MediaCommonModel.MediaControl(
- MediaDataLoadingModel.Loaded(dataMain.instanceId),
- true
- )
-
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
- whenever(smartspaceData.isActive).thenReturn(false)
-
- // If there is media that was recently played but inactive
- val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime())
- mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent)
- repository.setOrderedMedia()
-
- verify(listener)
- .onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent), eq(true), eq(0), eq(false))
- verify(mediaLogger)
- .logMediaLoaded(eq(dataCurrent.instanceId), eq(dataCurrent.active), anyString())
- assertThat(currentMedia).containsExactly(controlCommonModel)
-
- reset(mediaLogger)
-
- // And an inactive recommendation is loaded
- mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData)
-
- // Smartspace is loaded but the media stays inactive
- verify(listener)
- .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), eq(false))
- verify(mediaLogger).logRecommendationLoaded(eq(SMARTSPACE_KEY), eq(false), anyString())
- verify(listener, never())
- .onMediaDataLoaded(any(), any(), any(), anyBoolean(), anyInt(), anyBoolean())
- verify(mediaLogger, never()).logMediaLoaded(any(), anyBoolean(), anyString())
- assertThat(currentMedia).containsExactly(controlCommonModel, recsCommonModel)
- assertThat(
- hasActiveMediaOrRecommendation(
- selectedUserEntries,
- smartspaceMediaData,
- reactivatedKey
- )
- )
- .isFalse()
- assertThat(hasAnyMediaOrRecommendation(selectedUserEntries, smartspaceMediaData))
- .isTrue()
- }
-
- @Test
- fun onSwipeToDismiss_persistentEnabled_recommendationSetInactive() {
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
-
- val data =
- EMPTY_SMARTSPACE_MEDIA_DATA.copy(
- targetId = SMARTSPACE_KEY,
- isActive = true,
- packageName = SMARTSPACE_PACKAGE,
- recommendations =
- listOf(
- smartspaceMediaRecommendationItem,
- smartspaceMediaRecommendationItem,
- smartspaceMediaRecommendationItem
- ),
- )
- mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, data)
-
- mediaDataFilter.onSwipeToDismiss(1)
-
- verify(smartspaceLogger)
- .logSmartspaceCardUIEvent(
- MediaSmartspaceLogger.SMARTSPACE_CARD_DISMISS_EVENT,
- SmallHash.hash(data.targetId),
- Process.INVALID_UID,
- surface = 1,
- cardinality = 1,
- isRecommendationCard = true,
- isSwipeToDismiss = true
- )
- verify(mediaDataProcessor).setRecommendationInactive(eq(SMARTSPACE_KEY))
- verify(mediaDataProcessor, never())
- .dismissSmartspaceRecommendation(eq(SMARTSPACE_KEY), anyLong())
- }
-
- @Test
fun smartspaceLoaded_shouldTriggerResume_doesTrigger() =
testScope.runTest {
val selectedUserEntries by collectLastValue(repository.selectedUserEntries)
@@ -1133,7 +1006,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
controlCommonModel.copy(
mediaLoadingModel.copy(
receivedSmartspaceCardLatency = 100,
- isSsReactivated = true
+ isSsReactivated = true,
)
)
verify(listener)
@@ -1143,20 +1016,20 @@ class MediaDataFilterImplTest : SysuiTestCase() {
eq(dataCurrentAndActive),
eq(true),
eq(100),
- eq(true)
+ eq(true),
)
verify(mediaLogger)
.logMediaLoaded(
eq(dataCurrentAndActive.instanceId),
eq(dataCurrentAndActive.active),
- anyString()
+ anyString(),
)
assertThat(currentMedia).containsExactly(controlCommonModel, recsCommonModel)
assertThat(
hasActiveMediaOrRecommendation(
selectedUserEntries,
smartspaceMediaData,
- reactivatedKey
+ reactivatedKey,
)
)
.isTrue()
@@ -1177,7 +1050,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
val controlCommonModel =
MediaCommonModel.MediaControl(
MediaDataLoadingModel.Loaded(dataMain.instanceId),
- true
+ true,
)
// WHEN we have media that was recently played, but not currently active
@@ -1213,7 +1086,7 @@ class MediaDataFilterImplTest : SysuiTestCase() {
private fun hasActiveMediaOrRecommendation(
entries: Map<InstanceId, MediaData>?,
smartspaceMediaData: SmartspaceMediaData?,
- reactivatedId: InstanceId?
+ reactivatedId: InstanceId?,
): Boolean {
if (entries == null || smartspaceMediaData == null) {
return false
@@ -1229,17 +1102,13 @@ class MediaDataFilterImplTest : SysuiTestCase() {
private fun hasAnyMediaOrRecommendation(
entries: Map<InstanceId, MediaData>?,
- smartspaceMediaData: SmartspaceMediaData?
+ smartspaceMediaData: SmartspaceMediaData?,
): Boolean {
if (entries == null || smartspaceMediaData == null) {
return false
}
return entries.isNotEmpty() ||
- (if (mediaFlags.isPersistentSsCardEnabled()) {
- smartspaceMediaData.isValid()
- } else {
- smartspaceMediaData.isActive && smartspaceMediaData.isValid()
- })
+ (smartspaceMediaData.isActive && smartspaceMediaData.isValid())
}
private fun hasAnyMedia(entries: Map<InstanceId, MediaData>?): Boolean {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
index b9ebce816c5c..92904962339c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/domain/pipeline/MediaDataProcessorTest.kt
@@ -57,7 +57,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.flags.Flags.MEDIA_REMOTE_RESUME
import com.android.systemui.flags.Flags.MEDIA_RESUME_PROGRESS
-import com.android.systemui.flags.Flags.MEDIA_RETAIN_RECOMMENDATIONS
import com.android.systemui.flags.Flags.MEDIA_RETAIN_SESSIONS
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.kosmos.testDispatcher
@@ -316,7 +315,6 @@ class MediaDataProcessorTest(flags: FlagsParameterization) : SysuiTestCase() {
fakeFeatureFlags.set(MEDIA_RETAIN_SESSIONS, false)
fakeFeatureFlags.set(MEDIA_RESUME_PROGRESS, false)
fakeFeatureFlags.set(MEDIA_REMOTE_RESUME, false)
- fakeFeatureFlags.set(MEDIA_RETAIN_RECOMMENDATIONS, false)
whenever(logger.getNewInstanceId()).thenReturn(instanceIdSequence.newInstanceId())
whenever(keyguardUpdateMonitor.isUserInLockdown(any())).thenReturn(false)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
index 33b61a098bc5..6c8a46f19f2b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerTest.kt
@@ -39,7 +39,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.flags.Flags
-import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
@@ -79,7 +78,6 @@ import com.google.common.truth.Truth.assertThat
import java.util.Locale
import javax.inject.Provider
import junit.framework.Assert.assertEquals
-import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertTrue
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
@@ -215,7 +213,6 @@ class MediaCarouselControllerTest(flags: FlagsParameterization) : SysuiTestCase(
verify(mediaHostStatesManager).addCallback(capture(hostStateCallback))
whenever(mediaControlPanelFactory.get()).thenReturn(panel)
whenever(panel.mediaViewController).thenReturn(mediaViewController)
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(false)
MediaPlayerData.clear()
FakeExecutor.exhaustExecutors(bgExecutor)
FakeExecutor.exhaustExecutors(uiExecutor)
@@ -834,47 +831,6 @@ class MediaCarouselControllerTest(flags: FlagsParameterization) : SysuiTestCase(
verify(pageIndicator, times(4)).setNumPages(any())
}
- @DisableSceneContainer
- @Test
- fun testRecommendation_persistentEnabled_newSmartspaceLoaded_updatesSort() {
- verify(mediaDataManager).addListener(capture(listener))
-
- testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded()
-
- // When an update to existing smartspace data is loaded
- listener.value.onSmartspaceMediaDataLoaded(
- SMARTSPACE_KEY,
- EMPTY_SMARTSPACE_MEDIA_DATA.copy(isActive = true),
- true,
- )
-
- // Then the carousel is updated
- assertTrue(MediaPlayerData.playerKeys().elementAt(0).data.active)
- assertTrue(MediaPlayerData.visiblePlayerKeys().elementAt(0).data.active)
- }
-
- @DisableSceneContainer
- @Test
- fun testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded() {
- verify(mediaDataManager).addListener(capture(listener))
-
- whenever(mediaFlags.isPersistentSsCardEnabled()).thenReturn(true)
-
- // When inactive smartspace data is loaded
- listener.value.onSmartspaceMediaDataLoaded(
- SMARTSPACE_KEY,
- EMPTY_SMARTSPACE_MEDIA_DATA,
- false,
- )
-
- // Then it is added to the carousel with correct state
- assertTrue(MediaPlayerData.playerKeys().elementAt(0).isSsMediaRec)
- assertFalse(MediaPlayerData.playerKeys().elementAt(0).data.active)
-
- assertTrue(MediaPlayerData.visiblePlayerKeys().elementAt(0).isSsMediaRec)
- assertFalse(MediaPlayerData.visiblePlayerKeys().elementAt(0).data.active)
- }
-
@Test
fun testOnLockDownMode_hideMediaCarousel() {
whenever(keyguardUpdateMonitor.isUserInLockdown(context.userId)).thenReturn(true)
@@ -900,7 +856,6 @@ class MediaCarouselControllerTest(flags: FlagsParameterization) : SysuiTestCase(
@Test
fun testKeyguardGone_showMediaCarousel() =
kosmos.testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
var updatedVisibility = false
mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
mediaCarouselController.mediaCarousel = mediaCarousel
@@ -923,7 +878,6 @@ class MediaCarouselControllerTest(flags: FlagsParameterization) : SysuiTestCase(
@Test
fun testKeyguardGone_showMediaCarousel_scene_container() =
kosmos.testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
var updatedVisibility = false
mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
mediaCarouselController.mediaCarousel = mediaCarousel
@@ -940,7 +894,6 @@ class MediaCarouselControllerTest(flags: FlagsParameterization) : SysuiTestCase(
@Test
fun keyguardShowing_notAllowedOnLockscreen_updateVisibility() {
kosmos.testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
var updatedVisibility = false
mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
mediaCarouselController.mediaCarousel = mediaCarousel
@@ -969,7 +922,6 @@ class MediaCarouselControllerTest(flags: FlagsParameterization) : SysuiTestCase(
@Test
fun keyguardShowing_allowedOnLockscreen_updateVisibility() {
kosmos.testScope.runTest {
- kosmos.fakeFeatureFlagsClassic.set(Flags.MEDIA_RETAIN_RECOMMENDATIONS, false)
var updatedVisibility = false
mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
mediaCarouselController.mediaCarousel = mediaCarousel