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

Commit bfa79c53 authored by Yiyi Shen's avatar Yiyi Shen
Browse files

[OutputSwitcher] Avoid collapsing the broadcast routes

Group volume control is not supported for broadcast routes in output
switcher.

Test: atest
Bug: 385672684
Flag: com.android.media.flags.enable_output_switcher_personal_audio_sharing
Change-Id: Ic63a40d0600592fbe4f154e903fb75ec83ff880f
parent 89d422f6
Loading
Loading
Loading
Loading
+36 −5
Original line number Diff line number Diff line
@@ -141,7 +141,10 @@ class MediaOutputAdapterTest : SysuiTestCase() {

    @Test
    fun getItemId_forDeviceGroup_returnsItemType() {
        mMediaSwitchingController.stub { on { isGroupListCollapsed } doReturn true }
        mMediaSwitchingController.stub {
            on { isGroupListCollapsed } doReturn true
            on { isVolumeControlEnabledForSession } doReturn true
        }
        initializeSession()

        assertThat(mMediaOutputAdapter.getItemId(1))
@@ -326,7 +329,10 @@ class MediaOutputAdapterTest : SysuiTestCase() {

    @Test
    fun onBindViewHolder_bindDeselectableDevice_verifyView() {
        mMediaSwitchingController.stub { on { isGroupListCollapsed } doReturn false }
        mMediaSwitchingController.stub {
            on { isGroupListCollapsed } doReturn false
            on { isVolumeControlEnabledForSession } doReturn true
        }
        mMediaSwitchingController.stub {
            on { selectedMediaDevice } doReturn listOf(mMediaDevice1, mMediaDevice2)
            on { deselectableMediaDevice } doReturn listOf(mMediaDevice1, mMediaDevice2)
@@ -655,7 +661,10 @@ class MediaOutputAdapterTest : SysuiTestCase() {

    @Test
    fun multipleSelectedDevices_listCollapsed_verifyItemTypes() {
        mMediaSwitchingController.stub { on { isGroupListCollapsed } doReturn true }
        mMediaSwitchingController.stub {
            on { isGroupListCollapsed } doReturn true
            on { isVolumeControlEnabledForSession } doReturn true
        }
        initializeSession()

        with(mMediaOutputAdapter) {
@@ -665,9 +674,28 @@ class MediaOutputAdapterTest : SysuiTestCase() {
        }
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_PERSONAL_AUDIO_SHARING)
    fun multipleSelectedDevices_volumeControlDisabled_notCollapseList() {
        mMediaSwitchingController.stub {
            on { isGroupListCollapsed } doReturn true
            on { isVolumeControlEnabledForSession } doReturn false
        }
        initializeSession()

        with(mMediaOutputAdapter) {
            assertThat(itemCount).isEqualTo(2)
            assertThat(getItemViewType(0)).isEqualTo(MediaItemType.TYPE_DEVICE)
            assertThat(getItemViewType(1)).isEqualTo(MediaItemType.TYPE_DEVICE)
        }
    }

    @Test
    fun multipleSelectedDevices_listCollapsed_verifySessionControl() {
        mMediaSwitchingController.stub { on { isGroupListCollapsed } doReturn true }
        mMediaSwitchingController.stub {
            on { isGroupListCollapsed } doReturn true
            on { isVolumeControlEnabledForSession } doReturn true
        }
        initializeSession()

        createAndBindDeviceViewHolder(position = 1).apply {
@@ -698,7 +726,10 @@ class MediaOutputAdapterTest : SysuiTestCase() {

    @Test
    fun multipleSelectedDevices_expandIconClicked_verifyIndividualDevices() {
        mMediaSwitchingController.stub { on { isGroupListCollapsed } doReturn true }
        mMediaSwitchingController.stub {
            on { isGroupListCollapsed } doReturn true
            on { isVolumeControlEnabledForSession } doReturn true
        }
        initializeSession()

        val groupDividerViewHolder =
+7 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.widget.TextView
import androidx.annotation.VisibleForTesting
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import com.android.media.flags.Flags
import com.android.settingslib.media.InputMediaDevice
import com.android.settingslib.media.MediaDevice
import com.android.systemui.FontStyles.GSF_TITLE_MEDIUM_EMPHASIZED
@@ -58,7 +59,12 @@ class MediaOutputAdapter(controller: MediaSwitchingController) :
    override fun updateItems() {
        if (mGroupSelectedItems == null) {
            // Decide whether to group devices only during the initial render.
            mGroupSelectedItems = mController.selectedMediaDevice.size > 1
            // Avoid grouping broadcast devices because grouped volume control is not available for
            // broadcast session.
            mGroupSelectedItems =
                mController.selectedMediaDevice.size > 1 &&
                    (!Flags.enableOutputSwitcherPersonalAudioSharing() ||
                        mController.isVolumeControlEnabledForSession)
        }

        val newList =