Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e19faa3d authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Automerger Merge Worker
Browse files

Merge "Update media hosts after recommendations expire" into tm-qpr-dev am:...

Merge "Update media hosts after recommendations expire" into tm-qpr-dev am: 03248115 am: 3c9c0a97

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19997111



Change-Id: I9664ebde90f76841c2a95920c9a89c0b115dcbfc
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 7841e589 3c9c0a97
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -202,6 +202,7 @@ class MediaCarouselController @Inject constructor(
     * It will be called when the container is out of view.
     */
    lateinit var updateUserVisibility: () -> Unit
    lateinit var updateHostVisibility: () -> Unit

    private val isReorderingAllowed: Boolean
        get() = visualStabilityProvider.isReorderingAllowed
@@ -225,7 +226,13 @@ class MediaCarouselController @Inject constructor(
                reorderAllPlayers(previousVisiblePlayerKey = null)
            }

            keysNeedRemoval.forEach { removePlayer(it) }
            keysNeedRemoval.forEach {
                removePlayer(it)
            }
            if (keysNeedRemoval.size > 0) {
                // Carousel visibility may need to be updated after late removals
                updateHostVisibility()
            }
            keysNeedRemoval.clear()

            // Update user visibility so that no extra impression will be logged when
@@ -247,6 +254,7 @@ class MediaCarouselController @Inject constructor(
                receivedSmartspaceCardLatency: Int,
                isSsReactivated: Boolean
            ) {
                debugLogger.logMediaLoaded(key)
                if (addOrUpdatePlayer(key, oldKey, data, isSsReactivated)) {
                    // Log card received if a new resumable media card is added
                    MediaPlayerData.getMediaPlayer(key)?.let {
@@ -315,7 +323,7 @@ class MediaCarouselController @Inject constructor(
                data: SmartspaceMediaData,
                shouldPrioritize: Boolean
            ) {
                if (DEBUG) Log.d(TAG, "Loading Smartspace media update")
                debugLogger.logRecommendationLoaded(key)
                // Log the case where the hidden media carousel with the existed inactive resume
                // media is shown by the Smartspace signal.
                if (data.isActive) {
@@ -370,13 +378,21 @@ class MediaCarouselController @Inject constructor(
            }

            override fun onMediaDataRemoved(key: String) {
                debugLogger.logMediaRemoved(key)
                removePlayer(key)
            }

            override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) {
                if (DEBUG) Log.d(TAG, "My Smartspace media removal request is received")
                debugLogger.logRecommendationRemoved(key, immediately)
                if (immediately || isReorderingAllowed) {
                    onMediaDataRemoved(key)
                    removePlayer(key)
                    if (!immediately) {
                        // Although it wasn't requested, we were able to process the removal
                        // immediately since reordering is allowed. So, notify hosts to update
                        if (this@MediaCarouselController::updateHostVisibility.isInitialized) {
                            updateHostVisibility()
                        }
                    }
                } else {
                    keysNeedRemoval.add(key)
                }
+31 −0
Original line number Diff line number Diff line
@@ -40,6 +40,37 @@ class MediaCarouselControllerLogger @Inject constructor(
                    "Removing control panel for $str1 from map without calling #onDestroy"
        }
    )

    fun logMediaLoaded(key: String) = buffer.log(
        TAG,
        LogLevel.DEBUG,
        { str1 = key },
        { "add player $str1" }
    )

    fun logMediaRemoved(key: String) = buffer.log(
        TAG,
        LogLevel.DEBUG,
        { str1 = key },
        { "removing player $str1" }
    )

    fun logRecommendationLoaded(key: String) = buffer.log(
        TAG,
        LogLevel.DEBUG,
        { str1 = key },
        { "add recommendation $str1" }
    )

    fun logRecommendationRemoved(key: String, immediately: Boolean) = buffer.log(
        TAG,
        LogLevel.DEBUG,
        {
            str1 = key
            bool1 = immediately
        },
        { "removing recommendation $str1, immediate=$bool1" }
    )
}

private const val TAG = "MediaCarouselCtlrLog"
+1 −0
Original line number Diff line number Diff line
@@ -1322,6 +1322,7 @@ class MediaDataManager(
            println("externalListeners: ${mediaDataFilter.listeners}")
            println("mediaEntries: $mediaEntries")
            println("useMediaResumption: $useMediaResumption")
            println("allowMediaRecommendations: $allowMediaRecommendations")
        }
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -546,6 +546,11 @@ class MediaHierarchyManager @Inject constructor(
        mediaCarouselController.updateUserVisibility = {
            mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = isVisibleToUser()
        }
        mediaCarouselController.updateHostVisibility = {
            mediaHosts.forEach {
                it?.updateViewVisibility()
            }
        }

        panelEventsEvents.registerListener(object : NotifPanelEvents.Listener {
            override fun onExpandImmediateChanged(isExpandImmediateEnabled: Boolean) {
+5 −1
Original line number Diff line number Diff line
@@ -167,7 +167,11 @@ class MediaHost constructor(
        }
    }

    private fun updateViewVisibility() {
    /**
     * Updates this host's state based on the current media data's status, and invokes listeners if
     * the visibility has changed
     */
    fun updateViewVisibility() {
        state.visible = if (showsOnlyActiveMedia) {
            mediaDataManager.hasActiveMediaOrRecommendation()
        } else {
Loading