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

Commit 9f70d4e2 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

AudioAttributes: fix regression with setLegacyStreamType in Builder

A regression was introduced by commit @6d69bde3 which caused a new
  Builder instance to be created when using setLegacyStreamType(),
  instead of returning the current one.

Bug: 130274354
Test: atest android.media.cts.AudioAttributesTest#testSetLegacyStreamOnBuilder
Change-Id: Ib66a0beb5f0f4489a6003cb9be6b8313b3318eac
parent 25b06f04
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -786,8 +786,13 @@ public final class AudioAttributes implements Parcelable {

        /**
         * Sets attributes as inferred from the legacy stream types.
         * Use this method when building an {@link AudioAttributes} instance to initialize some of
         * the attributes by information derived from a legacy stream type.
         * Warning: do not use this method in combination with setting any other attributes such as
         * usage, content type, flags or haptic control, as this method will overwrite (the more
         * accurate) information describing the use case previously set in the <code>Builder</code>.
         * In general, avoid using it and prefer setting usage and content type directly
         * with {@link #setUsage(int)} and {@link #setContentType(int)}.
         * <p>Use this method when building an {@link AudioAttributes} instance to initialize some
         * of the attributes by information derived from a legacy stream type.
         * @param streamType one of {@link AudioManager#STREAM_VOICE_CALL},
         *   {@link AudioManager#STREAM_SYSTEM}, {@link AudioManager#STREAM_RING},
         *   {@link AudioManager#STREAM_MUSIC}, {@link AudioManager#STREAM_ALARM},
@@ -799,7 +804,8 @@ public final class AudioAttributes implements Parcelable {
                throw new IllegalArgumentException("STREAM_ACCESSIBILITY is not a legacy stream "
                        + "type that was used for audio playback");
            }
            return setInternalLegacyStreamType(streamType);
            setInternalLegacyStreamType(streamType);
            return this;
        }

        /**
@@ -815,7 +821,14 @@ public final class AudioAttributes implements Parcelable {
                        AudioProductStrategy.getAudioAttributesForStrategyWithLegacyStreamType(
                                streamType);
                if (attributes != null) {
                    return new Builder(attributes).setHapticChannelsMuted(mMuteHapticChannels);
                    mUsage = attributes.mUsage;
                    mContentType = attributes.mContentType;
                    mFlags = attributes.mFlags;
                    mMuteHapticChannels = attributes.areHapticChannelsMuted();
                    mTags = attributes.mTags;
                    mBundle = attributes.mBundle;
                    mSource = attributes.mSource;
                    return this;
                }
            }
            switch(streamType) {