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

Commit c026d1b3 authored by Santiago Seifert's avatar Santiago Seifert
Browse files

Clean up group volume adjustment disablement flag

Test: m && presubmit
Flag: EXEMPT Dead code removal
Bug: 334877803
Change-Id: Ica5c0e8f9b5efa2c11216c0582a0c8145f7b5f1a
parent 08946f9d
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -2309,10 +2309,6 @@
         spatial audio is enabled for a newly connected audio device -->
    <bool name="config_spatial_audio_head_tracking_enabled_default">false</bool>

    <!-- Flag indicating whether platform level volume adjustments are enabled for remote sessions
         on grouped devices. -->
    <bool name="config_volumeAdjustmentForRemoteGroupSessions">true</bool>

    <!-- Flag indicating current media Output Switcher version. -->
    <integer name="config_mediaOutputSwitchDialogVersion">1</integer>

+0 −2
Original line number Diff line number Diff line
@@ -5102,8 +5102,6 @@

  <java-symbol type="dimen" name="config_wallpaperDimAmount" />

  <java-symbol type="bool" name="config_volumeAdjustmentForRemoteGroupSessions" />

  <java-symbol type="integer" name="config_mediaOutputSwitchDialogVersion" />

  <!-- List of shared library packages that should be loaded by the classloader after the
+1 −26
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -57,8 +56,6 @@ public final class RoutingSessionInfo implements Parcelable {
                }
            };

    private static final String TAG = "RoutingSessionInfo";

    private static final String KEY_GROUP_ROUTE = "androidx.mediarouter.media.KEY_GROUP_ROUTE";
    private static final String KEY_VOLUME_HANDLING = "volumeHandling";

@@ -142,15 +139,7 @@ public final class RoutingSessionInfo implements Parcelable {
        mVolume = builder.mVolume;

        mIsSystemSession = builder.mIsSystemSession;

        boolean volumeAdjustmentForRemoteGroupSessions = Resources.getSystem().getBoolean(
                com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions);
        mVolumeHandling =
                defineVolumeHandling(
                        mIsSystemSession,
                        builder.mVolumeHandling,
                        mSelectedRoutes,
                        volumeAdjustmentForRemoteGroupSessions);
        mVolumeHandling = builder.mVolumeHandling;

        mControlHints = updateVolumeHandlingInHints(builder.mControlHints, mVolumeHandling);
        mTransferReason = builder.mTransferReason;
@@ -207,20 +196,6 @@ public final class RoutingSessionInfo implements Parcelable {
        return controlHints;
    }

    @MediaRoute2Info.PlaybackVolume
    private static int defineVolumeHandling(
            boolean isSystemSession,
            @MediaRoute2Info.PlaybackVolume int volumeHandling,
            List<String> selectedRoutes,
            boolean volumeAdjustmentForRemoteGroupSessions) {
        if (!isSystemSession
                && !volumeAdjustmentForRemoteGroupSessions
                && selectedRoutes.size() > 1) {
            return MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
        }
        return volumeHandling;
    }

    @NonNull
    private static String ensureString(@Nullable String str) {
        return str != null ? str : "";
+0 −22
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@ package com.android.mediaroutertest;

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

import android.content.res.Resources;
import android.media.MediaRoute2Info;
import android.media.RoutingSessionInfo;

import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -95,24 +93,4 @@ public class RoutingSessionInfoTest {
        assertThat(sessionInfoWithProviderId2.getTransferableRoutes())
                .isEqualTo(sessionInfoWithProviderId.getTransferableRoutes());
    }

    @Test
    public void testGetVolumeHandlingGroupSession() {
        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
                .setName(TEST_NAME)
                .addSelectedRoute(TEST_ROUTE_ID_0)
                .addSelectedRoute(TEST_ROUTE_ID_2)
                .setVolumeHandling(MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE)
                .build();

        boolean volumeAdjustmentForRemoteGroupSessions = Resources.getSystem().getBoolean(
                com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions);

        int expectedResult = volumeAdjustmentForRemoteGroupSessions
                ? MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE :
                MediaRoute2Info.PLAYBACK_VOLUME_FIXED;

        assertThat(sessionInfo.getVolumeHandling()).isEqualTo(expectedResult);
    }
}
+17 −62
Original line number Diff line number Diff line
@@ -37,11 +37,8 @@ import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.IAudioService;
import android.media.IVolumeController;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RoutingSessionInfo;
import android.media.VolumePolicy;
import android.media.session.MediaController;
import android.media.session.MediaController.PlaybackInfo;
import android.media.session.MediaSession.Token;
import android.net.Uri;
@@ -88,7 +85,6 @@ import dalvik.annotation.optimization.NeverCompile;

import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
@@ -217,7 +213,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
                VolumeDialogControllerImpl.class.getSimpleName());
        mWorker = new W(mWorkerLooper);
        mRouter2Manager = MediaRouter2Manager.getInstance(mContext);
        mMediaSessionsCallbacksW = new MediaSessionsCallbacks(mContext);
        mMediaSessionsCallbacksW = new MediaSessionsCallbacks();
        mMediaSessions = createMediaSessions(mContext, mWorkerLooper, mMediaSessionsCallbacksW);
        mAudioSharingInteractor = audioSharingInteractor;
        mJavaAdapter = javaAdapter;
@@ -1360,16 +1356,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
        private final HashMap<Token, Integer> mRemoteStreams = new HashMap<>();

        private int mNextStream = DYNAMIC_STREAM_REMOTE_START_INDEX;
        private final boolean mVolumeAdjustmentForRemoteGroupSessions;

        public MediaSessionsCallbacks(Context context) {
            mVolumeAdjustmentForRemoteGroupSessions = context.getResources().getBoolean(
                    com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions);
        }

        @Override
        public void onRemoteUpdate(Token token, String name, PlaybackInfo pi) {
            if (showForSession(token)) {
                addStream(token, "onRemoteUpdate");

                int stream = 0;
@@ -1397,11 +1386,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
                    mCallbacks.onStateChanged(mState);
                }
        }
        }

        @Override
        public void onRemoteVolumeChanged(Token token, int flags) {
            if (showForSession(token)) {
                addStream(token, "onRemoteVolumeChanged");
                int stream = 0;
                synchronized (mRemoteStreams) {
@@ -1421,16 +1408,17 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
                    onShowRequestedW(Events.SHOW_REASON_REMOTE_VOLUME_CHANGED);
                }
        }
        }

        @Override
        public void onRemoteRemoved(Token token) {
            if (showForSession(token)) {
                int stream = 0;
            int stream;
            synchronized (mRemoteStreams) {
                if (!mRemoteStreams.containsKey(token)) {
                        Log.d(TAG, "onRemoteRemoved: stream doesn't exist, "
                                + "aborting remote removed for token:" + token.toString());
                    Log.d(
                            TAG,
                            "onRemoteRemoved: stream doesn't exist, "
                                    + "aborting remote removed for token:"
                                    + token.toString());
                    return;
                }
                stream = mRemoteStreams.get(token);
@@ -1441,7 +1429,6 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
            }
            mCallbacks.onStateChanged(mState);
        }
        }

        public void setStreamVolume(int stream, int level) {
            final Token token = findToken(stream);
@@ -1449,40 +1436,8 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
                Log.w(TAG, "setStreamVolume: No token found for stream: " + stream);
                return;
            }
            if (showForSession(token)) {
            mMediaSessions.setVolume(token, level);
        }
        }

        private boolean showForSession(Token token) {
            if (mVolumeAdjustmentForRemoteGroupSessions) {
                if (DEBUG) {
                    Log.d(TAG, "Volume adjustment for remote group sessions allowed,"
                            + " showForSession: true");
                }
                return true;
            }
            MediaController ctr = new MediaController(mContext, token);
            String packageName = ctr.getPackageName();
            List<RoutingSessionInfo> sessions =
                    mRouter2Manager.getRoutingSessions(packageName);
            if (DEBUG) {
                Log.d(TAG, "Found " + sessions.size() + " routing sessions for package name "
                        + packageName);
            }
            for (RoutingSessionInfo session : sessions) {
                if (DEBUG) {
                    Log.d(TAG, "Found routingSessionInfo: " + session);
                }
                if (!session.isSystemSession()
                        && session.getVolumeHandling() != MediaRoute2Info.PLAYBACK_VOLUME_FIXED) {
                    return true;
                }
            }

            Log.d(TAG, "No routing session for " + packageName);
            return false;
        }

        private Token findToken(int stream) {
            synchronized (mRemoteStreams) {
Loading