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

Commit 39d41c88 authored by ESWAR MAGATAPALLI (xWF)'s avatar ESWAR MAGATAPALLI (xWF)
Browse files

Revert "AudioProductStrategy / AudioVolumeGroups: filters internals"

Revert submission 33102662-STEP3_VOL_GROUP_IMPR

Reason for revert: Droidmonitor created revert due to b/414697491. Will be verifying through ABTD before submission.


Reverted changes: /q/submissionid:33102662-STEP3_VOL_GROUP_IMPR

Change-Id: I22d564cbfb3916d191f2b3030d775c22d909dd1d
parent 1d3e1c9b
Loading
Loading
Loading
Loading
+5 −42
Original line number Diff line number Diff line
@@ -116,15 +116,11 @@ public final class AudioProductStrategy implements Parcelable {
     * @hide
     * Create an invalid AudioProductStrategy instance for testing
     * @param id the ID for the invalid strategy, always use a different one than in use
     *        Unused: do not let caller to set it as some ids are allocated to internal strategies.
     * @return an invalid instance that cannot successfully be used for volume groups or routing
     */
    @SystemApi
    public static @NonNull AudioProductStrategy createInvalidAudioProductStrategy(int id) {
        ArrayList<AudioProductStrategy> apsList = new ArrayList<>();
        native_list_audio_product_strategies(apsList);
        return new AudioProductStrategy("invalid strategy", apsList.size() + 1,
                new AudioAttributesGroup[0]);
        return new AudioProductStrategy("dummy strategy", id, new AudioAttributesGroup[0]);
    }

    /**
@@ -201,14 +197,14 @@ public final class AudioProductStrategy implements Parcelable {
    }

    private static List<AudioProductStrategy> initializeAudioProductStrategies() {
        ArrayList<AudioProductStrategy> apsList = new ArrayList<>();
        ArrayList<AudioProductStrategy> apsList = new ArrayList<AudioProductStrategy>();
        int status = native_list_audio_product_strategies(apsList);
        if (status != AudioSystem.SUCCESS) {
        if (status == AudioSystem.SUCCESS) {
            return Collections.unmodifiableList(apsList);
        } else {
            Log.e(TAG, ": initializeAudioProductStrategies failed: " + status);
            return null;
        }
        apsList.removeIf(AudioProductStrategy::isInternalStrategy);
        return Collections.unmodifiableList(apsList);
    }

    private static native int native_list_audio_product_strategies(
@@ -434,9 +430,6 @@ public final class AudioProductStrategy implements Parcelable {
        return DEFAULT_ATTRIBUTES;
    }

    /** Internal strategies to AudioPolicy, no external volume control allowed */
    private static final String INTERNAL_TAG = "reserved_internal_strategy";

    /**
     * To avoid duplicating the logic in java and native, we shall make use of
     * native API native_get_product_strategies_from_audio_attributes
@@ -463,27 +456,6 @@ public final class AudioProductStrategy implements Parcelable {
            && ((refFormattedTags.length() == 0) || refFormattedTags.equals(cliFormattedTags));
    }

    private boolean isInternalStrategy() {
        for (AudioAttributesGroup aag : mAudioAttributesGroups) {
            if (aag.isInternalStrategy()) {
                return true;
            }
        }
        return false;
    }

    /**
     * Checks if the strategy is an internal strategy, for exclusive use of the frameworks.
     * Internal strategies are the strategy for reserved use by native audio service (e.g.
     * patch and rerouting strategies).
     * It is idendified by specific {@code #INTERNAL_TAG} tag.
     */
    /** private package */ static boolean isInternalAttributesForStrategy(
            @NonNull AudioAttributes aa) {
        final String formattedTags = TextUtils.join(";", aa.getTags());
        return formattedTags.equals(INTERNAL_TAG);
    }

    private static final class AudioAttributesGroup implements Parcelable {
        private int mVolumeGroupId;
        private int mLegacyStreamType;
@@ -496,15 +468,6 @@ public final class AudioProductStrategy implements Parcelable {
            mAudioAttributes = audioAttributes;
        }

        private boolean isInternalStrategy() {
            for (AudioAttributes aa : mAudioAttributes) {
                if (isInternalAttributesForStrategy(aa)) {
                    return true;
                }
            }
            return false;
        }

        @Override
        public boolean equals(@Nullable Object o) {
            if (this == o) return true;
+0 −7
Original line number Diff line number Diff line
@@ -85,19 +85,12 @@ public final class AudioVolumeGroup implements Parcelable {
        if (status != AudioSystem.SUCCESS) {
            Log.w(TAG, ": listAudioVolumeGroups failed");
        }
        avgList.removeIf(avg -> avg.isInternalGroup());
        return avgList;
    }

    private static native int native_list_audio_volume_groups(
            ArrayList<AudioVolumeGroup> groups);

    private boolean isInternalGroup() {
        return Arrays.stream(mAudioAttributes)
                .filter(aa -> AudioProductStrategy.isInternalAttributesForStrategy(aa))
                .findFirst().isPresent();
    }

    /**
     * @param name of the volume group
     * @param id of the volume group