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

Commit 8ea6b044 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix deep copy of fade manager config when using copy cosntructor" into main

parents f9f44be9 5ca82769
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -836,7 +836,7 @@ public final class FadeManagerConfiguration implements Parcelable {
         */
        public Builder(@NonNull FadeManagerConfiguration fmc) {
            mFadeState = fmc.mFadeState;
            mUsageToFadeWrapperMap = fmc.mUsageToFadeWrapperMap.clone();
            copyUsageToFadeWrapperMapInternal(fmc.mUsageToFadeWrapperMap);
            mAttrToFadeWrapperMap = new ArrayMap<AudioAttributes, FadeVolumeShaperConfigsWrapper>(
                    fmc.mAttrToFadeWrapperMap);
            mFadeableUsages = fmc.mFadeableUsages.clone();
@@ -1459,6 +1459,14 @@ public final class FadeManagerConfiguration implements Parcelable {
            }
        }

        private  void copyUsageToFadeWrapperMapInternal(
                SparseArray<FadeVolumeShaperConfigsWrapper> usageToFadeWrapperMap) {
            for (int index = 0; index < usageToFadeWrapperMap.size(); index++) {
                mUsageToFadeWrapperMap.put(usageToFadeWrapperMap.keyAt(index),
                        new FadeVolumeShaperConfigsWrapper(usageToFadeWrapperMap.valueAt(index)));
            }
        }

        private void validateFadeState(int state) {
            switch(state) {
                case FADE_STATE_DISABLED:
@@ -1551,6 +1559,12 @@ public final class FadeManagerConfiguration implements Parcelable {

        FadeVolumeShaperConfigsWrapper() {}

        FadeVolumeShaperConfigsWrapper(@NonNull FadeVolumeShaperConfigsWrapper wrapper) {
            Objects.requireNonNull(wrapper, "Fade volume shaper configs wrapper cannot be null");
            this.mFadeOutVolShaperConfig = wrapper.mFadeOutVolShaperConfig;
            this.mFadeInVolShaperConfig = wrapper.mFadeInVolShaperConfig;
        }

        public void setFadeOutVolShaperConfig(@Nullable VolumeShaper.Configuration fadeOutConfig) {
            mFadeOutVolShaperConfig = fadeOutConfig;
        }
+40 −2
Original line number Diff line number Diff line
@@ -196,8 +196,7 @@ public final class FadeManagerConfigurationUnitTest {
        FadeManagerConfiguration fmcObj = new FadeManagerConfiguration
                .Builder(TEST_FADE_OUT_DURATION_MS, TEST_FADE_IN_DURATION_MS).build();

        FadeManagerConfiguration fmc = new FadeManagerConfiguration
                .Builder(fmcObj).build();
        FadeManagerConfiguration fmc = new FadeManagerConfiguration.Builder(fmcObj).build();

        expect.withMessage("Fade state for copy builder").that(fmc.getFadeState())
                .isEqualTo(fmcObj.getFadeState());
@@ -248,6 +247,45 @@ public final class FadeManagerConfigurationUnitTest {
                .isEqualTo(fmcObj.getFadeInDurationForAudioAttributes(TEST_GAME_AUDIO_ATTRIBUTE));
    }

    @Test
    public void build_withCopyConstructor_doesnotChangeOriginal() {
        FadeManagerConfiguration copyConstructedFmc = new FadeManagerConfiguration.Builder(mFmc)
                .setFadeOutDurationForUsage(AudioAttributes.USAGE_MEDIA, TEST_FADE_OUT_DURATION_MS)
                .setFadeInDurationForUsage(AudioAttributes.USAGE_MEDIA, TEST_FADE_IN_DURATION_MS)
                .build();

        expect.withMessage("Fade out duration for media usage of default constructor")
                .that(mFmc.getFadeOutDurationForUsage(AudioAttributes.USAGE_MEDIA))
                .isEqualTo(DEFAULT_FADE_OUT_DURATION_MS);
        expect.withMessage("Fade out duration for media usage of default constructor")
                .that(mFmc.getFadeInDurationForUsage(AudioAttributes.USAGE_MEDIA))
                .isEqualTo(DEFAULT_FADE_IN_DURATION_MS);
        expect.withMessage("Fade out duration for media usage of copy constructor")
                .that(copyConstructedFmc.getFadeOutDurationForUsage(AudioAttributes.USAGE_MEDIA))
                .isEqualTo(TEST_FADE_OUT_DURATION_MS);
        expect.withMessage("Fade out duration for media usage of copy constructor")
                .that(copyConstructedFmc.getFadeInDurationForUsage(AudioAttributes.USAGE_MEDIA))
                .isEqualTo(TEST_FADE_IN_DURATION_MS);
    }

    @Test
    public void build_withCopyConstructor_equals() {
        FadeManagerConfiguration fmc = new FadeManagerConfiguration.Builder()
                .setFadeableUsages(List.of(AudioAttributes.USAGE_MEDIA,
                        AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
                        AudioAttributes.USAGE_ASSISTANT,
                        AudioAttributes.USAGE_EMERGENCY))
                .setFadeOutDurationForUsage(AudioAttributes.USAGE_MEDIA, TEST_FADE_OUT_DURATION_MS)
                .setFadeInDurationForUsage(AudioAttributes.USAGE_MEDIA, TEST_FADE_IN_DURATION_MS)
                .build();

        FadeManagerConfiguration copyConstructedFmc =
                new FadeManagerConfiguration.Builder(fmc).build();

        expect.withMessage("Fade manager config constructed using copy constructor").that(fmc)
                .isEqualTo(copyConstructedFmc);
    }

    @Test
    public void testGetDefaultFadeOutDuration() {
        expect.withMessage("Default fade out duration")