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

Commit de3ec7e3 authored by Chelsea Hao's avatar Chelsea Hao Committed by Android (Google) Code Review
Browse files

Merge "Skip starting audio stream service by UI events when flag is on." into main

parents 24b6ba59 9a4106f1
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.flags.Flags;
import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.LayoutPreference;

@@ -88,8 +89,10 @@ public class AudioStreamHeaderController extends BasePreferenceController
                    var localSourceState = getLocalSourceState(state);
                    if (localSourceState == STREAMING) {
                        updateSummary();
                        if (!Flags.audioStreamMediaServiceByReceiveState()) {
                            mAudioStreamsHelper.startMediaService(
                                    mContext, mBroadcastId, mBroadcastName);
                        }
                    } else if (mHysteresisModeFixAvailable && localSourceState == PAUSED) {
                        // if source paused, only update the summary
                        updateSummary();
+7 −4
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.flags.Flags;

class SourceAddedState extends AudioStreamStateHandler {
    @VisibleForTesting
@@ -55,10 +56,12 @@ class SourceAddedState extends AudioStreamStateHandler {
        if (cached != null) {
            mAudioStreamsRepository.saveMetadata(context, cached);
        }
        if (!Flags.audioStreamMediaServiceByReceiveState()) {
            helper.startMediaService(
                    context,
                    preference.getAudioStreamBroadcastId(),
                    String.valueOf(preference.getTitle()));
        }
        mMetricsFeatureProvider.action(
                preference.getContext(),
                SettingsEnums.ACTION_AUDIO_STREAM_JOIN_SUCCEED,
+7 −0
Original line number Diff line number Diff line
@@ -26,6 +26,9 @@ import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -39,6 +42,7 @@ import android.bluetooth.BluetoothLeBroadcastReceiveState;
import android.bluetooth.BluetoothStatusCodes;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;

import androidx.lifecycle.LifecycleOwner;
@@ -52,6 +56,7 @@ import com.android.settings.testutils.shadow.ShadowThreadUtils;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.flags.Flags;
import com.android.settingslib.widget.LayoutPreference;

import org.junit.After;
@@ -254,6 +259,7 @@ public class AudioStreamHeaderControllerTest {
    }

    @Test
    @EnableFlags(Flags.FLAG_AUDIO_STREAM_MEDIA_SERVICE_BY_RECEIVE_STATE)
    public void testCallback_onReceiveStateChanged_updateButton() {
        when(mAudioStreamsHelper.getConnectedBroadcastIdAndState(anyBoolean()))
                .thenReturn(Map.of(BROADCAST_ID, STREAMING));
@@ -271,6 +277,7 @@ public class AudioStreamHeaderControllerTest {
        verify(mHeaderController, times(2))
                .setSummary(mContext.getString(AUDIO_STREAM_HEADER_LISTENING_NOW_SUMMARY));
        verify(mHeaderController, times(2)).done(true);
        verify(mAudioStreamsHelper, never()).startMediaService(any(), anyInt(), anyString());
    }

    @Test
+31 −1
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import static com.android.settings.connecteddevice.audiosharing.audiostreams.Sou

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

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -33,6 +36,9 @@ import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;

import androidx.fragment.app.FragmentActivity;
import androidx.preference.Preference;
@@ -43,6 +49,7 @@ import com.android.settings.SettingsActivity;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowFragment;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.flags.Flags;

import org.junit.Before;
import org.junit.Rule;
@@ -62,6 +69,7 @@ import org.robolectric.annotation.Config;
        })
public class SourceAddedStateTest {
    @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
    private static final int BROADCAST_ID = 1;
    private static final String BROADCAST_TITLE = "title";
    private final Context mContext = ApplicationProvider.getApplicationContext();
@@ -105,7 +113,8 @@ public class SourceAddedStateTest {
    }

    @Test
    public void testPerformAction() {
    @DisableFlags(Flags.FLAG_AUDIO_STREAM_MEDIA_SERVICE_BY_RECEIVE_STATE)
    public void testPerformAction_startService() {
        mInstance.setAudioStreamsRepositoryForTesting(mRepository);
        BluetoothLeBroadcastMetadata mockMetadata = mock(BluetoothLeBroadcastMetadata.class);
        when(mRepository.getCachedMetadata(anyInt())).thenReturn(mockMetadata);
@@ -124,6 +133,27 @@ public class SourceAddedStateTest {
        verify(mHelper).startMediaService(eq(mContext), eq(BROADCAST_ID), eq(BROADCAST_TITLE));
    }

    @Test
    @EnableFlags(Flags.FLAG_AUDIO_STREAM_MEDIA_SERVICE_BY_RECEIVE_STATE)
    public void testPerformAction_skipStartService() {
        mInstance.setAudioStreamsRepositoryForTesting(mRepository);
        BluetoothLeBroadcastMetadata mockMetadata = mock(BluetoothLeBroadcastMetadata.class);
        when(mRepository.getCachedMetadata(anyInt())).thenReturn(mockMetadata);
        when(mPreference.getContext()).thenReturn(mContext);
        when(mPreference.getSourceOriginForLogging())
                .thenReturn(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS);

        mInstance.performAction(mPreference, mController, mHelper);

        verify(mRepository).saveMetadata(eq(mContext), eq(mockMetadata));
        verify(mFeatureFactory.metricsFeatureProvider)
                .action(
                        eq(mContext),
                        eq(SettingsEnums.ACTION_AUDIO_STREAM_JOIN_SUCCEED),
                        eq(SourceOriginForLogging.QR_CODE_SCAN_SETTINGS.ordinal()));
        verify(mHelper, never()).startMediaService(any(), anyInt(), anyString());
    }

    @Test
    public void testGetOnClickListener_startSubSettings() {
        when(mController.getFragment()).thenReturn(mFragment);