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

Commit 890113a7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Listen for media lockscreen setting in background" into main

parents 1f8ddb15 ab993343
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
@@ -106,6 +107,7 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch
@@ -123,6 +125,7 @@ private val DEBUG = Log.isLoggable(TAG, Log.DEBUG)
class MediaCarouselController
@Inject
constructor(
    @Application applicationScope: CoroutineScope,
    private val context: Context,
    private val mediaControlPanelFactory: Provider<MediaControlPanel>,
    private val visualStabilityProvider: VisualStabilityProvider,
@@ -387,12 +390,12 @@ constructor(
            repeatOnLifecycle(Lifecycle.State.STARTED) {
                listenForAnyStateToGoneKeyguardTransition(this)
                listenForAnyStateToLockscreenTransition(this)
                listenForLockscreenSettingChanges(this)

                if (!mediaFlags.isSceneContainerEnabled()) return@repeatOnLifecycle
                listenForMediaItemsChanges(this)
            }
        }
        listenForLockscreenSettingChanges(applicationScope)

        // Notifies all active players about animation scale changes.
        bgExecutor.execute {
@@ -696,6 +699,7 @@ constructor(
                .onStart { emit(Unit) }
                .map { getMediaLockScreenSetting() }
                .distinctUntilChanged()
                .flowOn(backgroundDispatcher)
                .collectLatest {
                    allowMediaPlayerOnLockScreen = it
                    updateHostVisibility()
@@ -884,8 +888,7 @@ constructor(
                    val previousVisibleIndex =
                        MediaPlayerData.playerKeys().indexOfFirst { key -> it == key }
                    mediaCarouselScrollHandler.scrollToPlayer(previousVisibleIndex, mediaIndex)
                }
                    ?: mediaCarouselScrollHandler.scrollToPlayer(destIndex = mediaIndex)
                } ?: mediaCarouselScrollHandler.scrollToPlayer(destIndex = mediaIndex)
            }
        } else if (isRtl && mediaContent.childCount > 0) {
            // In RTL, Scroll to the first player as it is the rightmost player in media carousel.
+14 −6
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.kosmos.testScope
import com.android.systemui.media.controls.MediaTestUtils
@@ -158,6 +159,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
        testDispatcher = UnconfinedTestDispatcher()
        mediaCarouselController =
            MediaCarouselController(
                applicationScope = kosmos.applicationCoroutineScope,
                context = context,
                mediaControlPanelFactory = mediaControlPanelFactory,
                visualStabilityProvider = visualStabilityProvider,
@@ -894,7 +896,10 @@ class MediaCarouselControllerTest : SysuiTestCase() {
            mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
            mediaCarouselController.mediaCarousel = mediaCarousel

            val settingsJob = mediaCarouselController.listenForLockscreenSettingChanges(this)
            val settingsJob =
                mediaCarouselController.listenForLockscreenSettingChanges(
                    kosmos.applicationCoroutineScope
                )
            secureSettings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, false)

            val keyguardJob = mediaCarouselController.listenForAnyStateToLockscreenTransition(this)
@@ -921,7 +926,10 @@ class MediaCarouselControllerTest : SysuiTestCase() {
            mediaCarouselController.updateHostVisibility = { updatedVisibility = true }
            mediaCarouselController.mediaCarousel = mediaCarousel

            val settingsJob = mediaCarouselController.listenForLockscreenSettingChanges(this)
            val settingsJob =
                mediaCarouselController.listenForLockscreenSettingChanges(
                    kosmos.applicationCoroutineScope
                )
            secureSettings.putBool(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true)

            val keyguardJob = mediaCarouselController.listenForAnyStateToLockscreenTransition(this)