diff options
7 files changed, 27 insertions, 56 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt index 8ad6fdf829d7..d49fed5d6e10 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt @@ -167,6 +167,7 @@ constructor( ) { Icon( icon = it.icon, + tint = it.iconColor.toColor(), modifier = Modifier.padding(12.dp).fillMaxSize(), ) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt index ec37925af0f3..ec55c75d4ae5 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt @@ -17,8 +17,6 @@ package com.android.systemui.volume.panel.component.mediaoutput.domain import android.media.AudioManager -import android.media.session.MediaSession -import android.media.session.PlaybackState import android.testing.TestableLooper.RunWithLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -26,14 +24,8 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos -import com.android.systemui.util.mockito.mock -import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.audioModeInteractor import com.android.systemui.volume.audioRepository -import com.android.systemui.volume.localMediaRepository -import com.android.systemui.volume.mediaController -import com.android.systemui.volume.mediaControllerRepository -import com.android.systemui.volume.mediaOutputInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent @@ -54,23 +46,14 @@ class MediaOutputAvailabilityCriteriaTest : SysuiTestCase() { @Before fun setup() { - with(kosmos) { - whenever(mediaController.packageName).thenReturn("test.pkg") - whenever(mediaController.sessionToken).thenReturn(MediaSession.Token(0, mock {})) - whenever(mediaController.playbackState).thenReturn(PlaybackState.Builder().build()) - - mediaControllerRepository.setActiveLocalMediaController(mediaController) - - underTest = MediaOutputAvailabilityCriteria(mediaOutputInteractor, audioModeInteractor) - } + underTest = MediaOutputAvailabilityCriteria(kosmos.audioModeInteractor) } @Test - fun notInCallAndHasDevices_isAvailable_true() { + fun notInCall_isAvailable_true() { with(kosmos) { testScope.runTest { audioRepository.setMode(AudioManager.MODE_NORMAL) - localMediaRepository.updateMediaDevices(listOf(mock {})) val isAvailable by collectLastValue(underTest.isAvailable()) runCurrent() @@ -79,27 +62,12 @@ class MediaOutputAvailabilityCriteriaTest : SysuiTestCase() { } } } - @Test - fun inCallAndHasDevices_isAvailable_false() { - with(kosmos) { - testScope.runTest { - audioRepository.setMode(AudioManager.MODE_IN_CALL) - localMediaRepository.updateMediaDevices(listOf(mock {})) - - val isAvailable by collectLastValue(underTest.isAvailable()) - runCurrent() - - assertThat(isAvailable).isFalse() - } - } - } @Test - fun notInCallAndHasDevices_isAvailable_false() { + fun inCall_isAvailable_false() { with(kosmos) { testScope.runTest { - audioRepository.setMode(AudioManager.MODE_NORMAL) - localMediaRepository.updateMediaDevices(emptyList()) + audioRepository.setMode(AudioManager.MODE_IN_CALL) val isAvailable by collectLastValue(underTest.isAvailable()) runCurrent() diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index f1d4d71d1cc4..0054994d40f7 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -953,8 +953,11 @@ <item name="wallpaperTextColor">@*android:color/primary_text_material_dark</item> </style> - <style name="Theme.VolumePanelActivity" - parent="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen"> + <style name="Theme.VolumePanelActivity" parent="@android:style/Theme.DeviceDefault.DayNight"> + <item name="android:windowFullscreen">true</item> + <item name="android:windowContentOverlay">@null</item> + <item name="android:windowActionBar">false</item> + <item name="android:windowNoTitle">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt index 020ec64c0491..bac7d15235d0 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt @@ -17,27 +17,19 @@ package com.android.systemui.volume.panel.component.mediaoutput.domain import com.android.settingslib.volume.domain.interactor.AudioModeInteractor -import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria import javax.inject.Inject import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.map /** Determines if the Media Output Volume Panel component is available. */ @VolumePanelScope class MediaOutputAvailabilityCriteria @Inject constructor( - private val mediaOutputInteractor: MediaOutputInteractor, private val audioModeInteractor: AudioModeInteractor, ) : ComponentAvailabilityCriteria { - override fun isAvailable(): Flow<Boolean> { - return combine(mediaOutputInteractor.mediaDevices, audioModeInteractor.isOngoingCall) { - devices, - isOngoingCall -> - !isOngoingCall && devices.isNotEmpty() - } - } + override fun isAvailable(): Flow<Boolean> = audioModeInteractor.isOngoingCall.map { !it } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt index 24cc29d8e1f9..0f5343701ac6 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt @@ -95,10 +95,6 @@ constructor( val currentConnectedDevice: Flow<MediaDevice?> = localMediaRepository.flatMapLatest { it.currentConnectedDevice } - /** A list of available [MediaDevice]s. */ - val mediaDevices: Flow<Collection<MediaDevice>> = - localMediaRepository.flatMapLatest { it.mediaDevices } - private suspend fun getApplicationLabel(packageName: String): CharSequence? { return try { withContext(backgroundCoroutineContext) { diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt index e0718ace2c30..e518ed022792 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt @@ -23,15 +23,18 @@ import com.android.systemui.common.shared.model.Icon sealed interface DeviceIconViewModel { val icon: Icon + val iconColor: Color val backgroundColor: Color class IsPlaying( override val icon: Icon, + override val iconColor: Color, override val backgroundColor: Color, ) : DeviceIconViewModel class IsNotPlaying( override val icon: Icon, + override val iconColor: Color, override val backgroundColor: Color, ) : DeviceIconViewModel } diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt index d14899294526..85d6c9e341ac 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt @@ -86,13 +86,21 @@ constructor( null ) DeviceIconViewModel.IsPlaying( - icon, - Color.Attribute(com.android.internal.R.attr.materialColorSecondary), + icon = icon, + iconColor = + Color.Attribute(com.android.internal.R.attr.materialColorSurface), + backgroundColor = + Color.Attribute(com.android.internal.R.attr.materialColorSecondary), ) } else { DeviceIconViewModel.IsNotPlaying( - Icon.Resource(R.drawable.ic_media_home_devices, null), - Color.Attribute(com.android.internal.R.attr.materialColorSurface), + icon = Icon.Resource(R.drawable.ic_media_home_devices, null), + iconColor = + Color.Attribute( + com.android.internal.R.attr.materialColorOnSurfaceVariant + ), + backgroundColor = + Color.Attribute(com.android.internal.R.attr.materialColorSurface), ) } } |