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

Commit d1f646f5 authored by Ale Nijamkin's avatar Ale Nijamkin
Browse files

[flexiglass] "Inverts" dependency on media-in-compose

In ag/34856376, we added a dependency from Flexiglass on media-in-compose.
Aside from breaking a lot of end-to-end tests, it also disabled Flexiglass on AL devices unexpectedly.

Instead of having SceneContainerFlag.isEnabled require mediaControlsInCompose() to return true, this CL creates a
new MediaControlsInComposeFlag flag wrapper object with an isEnabled that would evaluate to true if either
media_controls_in_compose is true and/or if SceneContainerFlag.isEnabled evaluates to true (same thing as what we did for KeyguardWmStateRefactor).

This CL also replaces all current usages of mediaControlsInCompose() with MediaControlsInComposeFlag.isEnabled.

Fix: 436333780
Test: ran sysui, played media, and saw the media UI on all surfaces:
lock screen, shade, QS, and dual shade overlays
Flag: com.android.systemui.scene_container

Change-Id: I93b9e17a69f1b4a6ea4c902e499c3e5815e57e5d
parent 8efdf61a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -207,6 +207,7 @@ import com.android.systemui.communal.util.WindowSizeUtils
import com.android.systemui.communal.widgets.SmartspaceAppWidgetHostView
import com.android.systemui.communal.widgets.WidgetConfigurator
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.media.remedia.shared.flag.MediaControlsInComposeFlag
import com.android.systemui.media.remedia.ui.compose.Media
import com.android.systemui.media.remedia.ui.compose.MediaPresentationStyle
import com.android.systemui.res.R
@@ -1839,7 +1840,7 @@ private fun Umo(
                }
            }
    ) {
        if (SceneContainerFlag.isEnabled || Flags.mediaControlsInCompose()) {
        if (SceneContainerFlag.isEnabled || MediaControlsInComposeFlag.isEnabled) {
            Media(
                viewModelFactory = viewModel.mediaViewModelFactory,
                presentationStyle = MediaPresentationStyle.Large,
+2 −2
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.platform.test.flag.junit.FlagsParameterization
import android.platform.test.flag.junit.FlagsParameterization.progressionOf
import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.Flags.mediaControlsInCompose
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.ui.data.repository.fakeConfigurationRepository
import com.android.systemui.kosmos.Kosmos
@@ -34,6 +33,7 @@ import com.android.systemui.media.controls.ui.controller.MediaLocation
import com.android.systemui.media.controls.ui.controller.mediaHostStatesManager
import com.android.systemui.media.controls.ui.view.MediaHost
import com.android.systemui.media.remedia.data.repository.setHasActiveMedia
import com.android.systemui.media.remedia.shared.flag.MediaControlsInComposeFlag
import com.android.systemui.media.remedia.ui.compose.MediaUiBehavior
import com.android.systemui.qs.composefragment.dagger.usingMediaInComposeFragment
import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel
@@ -104,7 +104,7 @@ class MediaInRowInLandscapeViewModelTest(
                    }
                fakeConfigurationRepository.onConfigurationChange(config)
                mainResources.configuration.updateFrom(config)
                if (mediaControlsInCompose()) {
                if (MediaControlsInComposeFlag.isEnabled) {
                    setHasActiveMedia(testData.mediaVisible)
                } else {
                    mediaHostStatesManager.updateHostState(
+0 −14
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.platform.test.flag.junit.FlagsParameterization
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags.FLAG_EXAMPLE_FLAG
import com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_IN_COMPOSE
import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.andSceneContainer
@@ -63,17 +62,4 @@ internal class SceneContainerFlagParameterizationTest : SysuiTestCase() {
        Truth.assertThat(result[3].mOverrides[unrelatedFlag]).isTrue()
        Truth.assertThat(result[3].mOverrides[FLAG_SCENE_CONTAINER]).isTrue()
    }

    @Test
    fun oneDependencyAndSceneContainer() {
        val dependentFlag = FLAG_MEDIA_CONTROLS_IN_COMPOSE
        val result = FlagsParameterization.allCombinationsOf(dependentFlag).andSceneContainer()
        Truth.assertThat(result).hasSize(3)
        Truth.assertThat(result[0].mOverrides[dependentFlag]).isFalse()
        Truth.assertThat(result[0].mOverrides[FLAG_SCENE_CONTAINER]).isFalse()
        Truth.assertThat(result[1].mOverrides[dependentFlag]).isTrue()
        Truth.assertThat(result[1].mOverrides[FLAG_SCENE_CONTAINER]).isFalse()
        Truth.assertThat(result[2].mOverrides[dependentFlag]).isTrue()
        Truth.assertThat(result[2].mOverrides[FLAG_SCENE_CONTAINER]).isTrue()
    }
}
+0 −14
Original line number Diff line number Diff line
@@ -22,12 +22,7 @@ import com.android.server.notification.Flags.FLAG_VIBRATE_WHILE_UNLOCKED
import com.android.server.notification.Flags.crossAppPoliteNotifications
import com.android.server.notification.Flags.politeNotifications
import com.android.server.notification.Flags.vibrateWhileUnlocked
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_IN_COMPOSE
import com.android.systemui.Flags.communalHub
import com.android.systemui.Flags.mediaControlsInCompose
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.statusbar.notification.shared.NotificationMinimalism
import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun
import javax.inject.Inject
@@ -43,9 +38,6 @@ class FlagDependencies @Inject constructor(featureFlags: FeatureFlagsClassic, ha

        // Internal notification frontend dependencies
        NotificationMinimalism.token dependsOn NotificationThrottleHun.token

        // Scene container dependencies.
        SceneContainerFlag.token dependsOn mediaInCompose
    }

    private inline val politeNotifications
@@ -56,10 +48,4 @@ class FlagDependencies @Inject constructor(featureFlags: FeatureFlagsClassic, ha

    private inline val vibrateWhileUnlockedToken: FlagToken
        get() = FlagToken(FLAG_VIBRATE_WHILE_UNLOCKED, vibrateWhileUnlocked())

    private inline val communalHub
        get() = FlagToken(FLAG_COMMUNAL_HUB, communalHub())

    private inline val mediaInCompose
        get() = FlagToken(FLAG_MEDIA_CONTROLS_IN_COMPOSE, mediaControlsInCompose())
}
+2 −2
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui.media.controls.domain

import com.android.systemui.CoreStartable
import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.media.controls.domain.pipeline.LegacyMediaDataManagerImpl
import com.android.systemui.media.controls.domain.pipeline.MediaDataManager
@@ -25,6 +24,7 @@ import com.android.systemui.media.controls.domain.pipeline.MediaDataProcessor
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
import com.android.systemui.media.remedia.domain.interactor.MediaInteractor
import com.android.systemui.media.remedia.domain.interactor.MediaInteractorImpl
import com.android.systemui.media.remedia.shared.flag.MediaControlsInComposeFlag
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import dagger.Binds
import dagger.Module
@@ -55,7 +55,7 @@ interface MediaDomainModule {
            legacyProvider: Provider<LegacyMediaDataManagerImpl>,
            newProvider: Provider<MediaCarouselInteractor>,
        ): MediaDataManager {
            return if (SceneContainerFlag.isEnabled || Flags.mediaControlsInCompose()) {
            return if (SceneContainerFlag.isEnabled || MediaControlsInComposeFlag.isEnabled) {
                newProvider.get()
            } else {
                legacyProvider.get()
Loading