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

Commit af0cb76b authored by James O'Leary's avatar James O'Leary Committed by Automerger Merge Worker
Browse files

Merge "Update serialization of WallpaperColors" into sc-dev am: 6aad992e am: 629e7f41

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15031797

Change-Id: I933c7179e5efe5da7d94323ed33b8716b79db840
parents 9fbf7205 629e7f41
Loading
Loading
Loading
Loading
+17 −6
Original line number Original line Diff line number Diff line
@@ -111,12 +111,15 @@ public final class WallpaperColors implements Parcelable {
    public WallpaperColors(Parcel parcel) {
    public WallpaperColors(Parcel parcel) {
        mMainColors = new ArrayList<>();
        mMainColors = new ArrayList<>();
        mAllColors = new HashMap<>();
        mAllColors = new HashMap<>();
        final int count = parcel.readInt();
        int count = parcel.readInt();
        for (int i = 0; i < count; i++) {
        for (int i = 0; i < count; i++) {
            final int colorInt = parcel.readInt();
            final int colorInt = parcel.readInt();
            Color color = Color.valueOf(colorInt);
            Color color = Color.valueOf(colorInt);
            mMainColors.add(color);
            mMainColors.add(color);

        }
        count = parcel.readInt();
        for (int i = 0; i < count; i++) {
            final int colorInt = parcel.readInt();
            final int population = parcel.readInt();
            final int population = parcel.readInt();
            mAllColors.put(colorInt, population);
            mAllColors.put(colorInt, population);
        }
        }
@@ -411,10 +414,17 @@ public final class WallpaperColors implements Parcelable {
        for (int i = 0; i < count; i++) {
        for (int i = 0; i < count; i++) {
            Color color = mainColors.get(i);
            Color color = mainColors.get(i);
            dest.writeInt(color.toArgb());
            dest.writeInt(color.toArgb());
            Integer population = mAllColors.get(color.toArgb());
        }
        count = mAllColors.size();
        dest.writeInt(count);
        for (Map.Entry<Integer, Integer> colorEntry : mAllColors.entrySet()) {
            if (colorEntry.getKey() != null) {
                dest.writeInt(colorEntry.getKey());
                Integer population = mAllColors.get(colorEntry.getValue());
                int populationInt = (population != null) ? population : 0;
                int populationInt = (population != null) ? population : 0;
                dest.writeInt(populationInt);
                dest.writeInt(populationInt);
            }
            }
        }
        dest.writeInt(mColorHints);
        dest.writeInt(mColorHints);
    }
    }


@@ -476,12 +486,13 @@ public final class WallpaperColors implements Parcelable {


        WallpaperColors other = (WallpaperColors) o;
        WallpaperColors other = (WallpaperColors) o;
        return mMainColors.equals(other.mMainColors)
        return mMainColors.equals(other.mMainColors)
                && mAllColors.equals(other.mAllColors)
                && mColorHints == other.mColorHints;
                && mColorHints == other.mColorHints;
    }
    }


    @Override
    @Override
    public int hashCode() {
    public int hashCode() {
        return 31 * mMainColors.hashCode() + mColorHints;
        return (31 * mMainColors.hashCode() * mAllColors.hashCode()) + mColorHints;
    }
    }


    /**
    /**
+23 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint;
import android.os.Parcel;


import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import androidx.test.runner.AndroidJUnit4;
@@ -106,4 +107,26 @@ public class WallpaperColorsTest {
        // This would crash:
        // This would crash:
        canvas.drawBitmap(image, 0, 0, new Paint());
        canvas.drawBitmap(image, 0, 0, new Paint());
    }
    }

    /**
     * Parcelled WallpaperColors object should equal the original.
     */
    @Test
    public void testParcelUnparcel() {
        Bitmap image = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888);
        WallpaperColors colors = WallpaperColors.fromBitmap(image);
        Parcel parcel = Parcel.obtain();
        colors.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        WallpaperColors reconstructed = new WallpaperColors(parcel);
        parcel.recycle();
        Assert.assertEquals("WallpaperColors recreated from Parcel should equal original",
                colors, reconstructed);
        Assert.assertEquals("getAllColors() on WallpaperColors recreated from Parcel should"
                        + "return the same as the original",
                colors.getAllColors(), reconstructed.getAllColors());
        Assert.assertEquals("getMainColors() on WallpaperColors recreated from Parcel should"
                        + "return the same as the original",
                colors.getMainColors(), reconstructed.getMainColors());
    }
}
}