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

Commit 7ae6da04 authored by Yiyi Shen's avatar Yiyi Shen Committed by Android (Google) Code Review
Browse files

Merge "[OutputSwitcher] Allow open output switcher in PAS with flag guarded" into main

parents d1804536 bed6f967
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.sound;

import static com.android.settingslib.media.flags.Flags.enableOutputSwitcherForSystemRouting;
import static com.android.media.flags.Flags.enableOutputSwitcherPersonalAudioSharing;

import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcast;
@@ -192,7 +193,9 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro
        }
        if (isDeviceBroadcasting()) {
            mPreference.setSummary(R.string.media_output_audio_sharing);
            if (!enableOutputSwitcherPersonalAudioSharing()) {
                mPreference.setEnabled(false);
            }
        } else {
            mPreference.setSummary(
                    (activeDevice == null)
+28 −5
Original line number Diff line number Diff line
@@ -22,8 +22,8 @@ import static android.media.AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;
import static android.media.AudioSystem.DEVICE_OUT_EARPIECE;
import static android.media.AudioSystem.DEVICE_OUT_HEARING_AID;

import static com.android.settingslib.media.flags.Flags.FLAG_ENABLE_OUTPUT_SWITCHER_FOR_SYSTEM_ROUTING;
import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static com.android.settingslib.media.flags.Flags.FLAG_ENABLE_OUTPUT_SWITCHER_FOR_SYSTEM_ROUTING;

import static com.google.common.truth.Truth.assertThat;

@@ -51,6 +51,7 @@ import android.media.VolumeProvider;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;

@@ -61,7 +62,6 @@ import androidx.preference.PreferenceScreen;
import com.android.media.flags.Flags;
import com.android.settings.R;
import com.android.settings.bluetooth.Utils;
import com.android.settings.media.MediaOutputUtils;
import com.android.settings.testutils.shadow.ShadowAudioManager;
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
import com.android.settingslib.bluetooth.A2dpProfile;
@@ -255,10 +255,32 @@ public class MediaOutputPreferenceControllerTest {
        ShadowBluetoothUtils.reset();
    }

    /** Device start broadcasting so Preference summary should become "Audio Sharing" */
    /** Start broadcasting so Preference summary should become "Audio Sharing" and disabled */
    @Test
    @EnableFlags(FLAG_ENABLE_LE_AUDIO_SHARING)
    @DisableFlags(Flags.FLAG_ENABLE_OUTPUT_SWITCHER_PERSONAL_AUDIO_SHARING)
    public void audioSharingStart_changeSummaryAndDisabled() {
        mController.onStart();
        ArgumentCaptor<BluetoothLeBroadcast.Callback> broadcastCallbackCaptor =
                ArgumentCaptor.forClass(BluetoothLeBroadcast.Callback.class);
        mShadowAudioManager.setOutputDevice(DEVICE_OUT_BLUETOOTH_A2DP);
        mAudioManager.setMode(AudioManager.MODE_NORMAL);
        when(mLocalBluetoothLeBroadcast.isEnabled(null)).thenReturn(true);
        verify(mLocalBluetoothLeBroadcast)
                .registerServiceCallBack(any(), broadcastCallbackCaptor.capture());
        BluetoothLeBroadcast.Callback callback = broadcastCallbackCaptor.getValue();

        callback.onBroadcastStarted(0, 0);
        assertThat(mPreference.getSummary().toString())
                .isEqualTo(mContext.getText(R.string.media_output_audio_sharing).toString());
        assertThat(mPreference.isEnabled()).isFalse();
    }

    /** Start broadcasting so Preference summary should become "Audio Sharing" and enabled */
    @Test
    public void audioSharingStart_changeSummary() {
        mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
    @EnableFlags({FLAG_ENABLE_LE_AUDIO_SHARING,
            Flags.FLAG_ENABLE_OUTPUT_SWITCHER_PERSONAL_AUDIO_SHARING})
    public void audioSharingStart_outputSwitcherIntegrated_changeSummaryAndEnabled() {
        mController.onStart();
        ArgumentCaptor<BluetoothLeBroadcast.Callback> broadcastCallbackCaptor =
                ArgumentCaptor.forClass(BluetoothLeBroadcast.Callback.class);
@@ -272,6 +294,7 @@ public class MediaOutputPreferenceControllerTest {
        callback.onBroadcastStarted(0, 0);
        assertThat(mPreference.getSummary().toString())
                .isEqualTo(mContext.getText(R.string.media_output_audio_sharing).toString());
        assertThat(mPreference.isEnabled()).isTrue();
    }

    /**