diff options
| author | 2025-01-17 12:52:19 -0600 | |
|---|---|---|
| committer | 2025-01-27 17:01:27 -0800 | |
| commit | 5b8c5b64226d63ca83ed1cd47eb381e621335af3 (patch) | |
| tree | f8cc2fec8bc0cf85b02336237880a343ae4ffcbc | |
| parent | 62d502b587f0789749bfec1d2b1de9357b205905 (diff) | |
Remove MEDIA_RETAIN_RECOMMENDATIONS flag
Fixes: 267166152
Bug: 382680767
Test: build, atest
Flag: EXEMPT removing unused flag code
Change-Id: I7cb8f9a663d50e90f5aa3372c0be28f0c397c833
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 |