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

Commit 1876a22e authored by JW Wang's avatar JW Wang Committed by Android (Google) Code Review
Browse files

Merge "Replace IntArray with List<Integer> (3/n)"

parents 68da7a61 62704824
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -23,10 +23,10 @@ import android.content.pm.PackageManager;
import android.content.pm.VersionedPackage;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.IntArray;
import android.util.SparseLongArray;

import java.util.ArrayList;
import java.util.List;

/**
 * Information about a rollback available for a particular package.
@@ -62,7 +62,7 @@ public final class PackageRollbackInfo implements Parcelable {
     * with credentials yet.
     */
    // NOTE: Not a part of the Parcelable representation of this object.
    private final IntArray mPendingBackups;
    private final List<Integer> mPendingBackups;

    /**
     * The list of users for which we need to restore userdata for this package. This field is
@@ -85,7 +85,7 @@ public final class PackageRollbackInfo implements Parcelable {
     * The list of users for which snapshots have been saved.
     */
    // NOTE: Not a part of the Parcelable representation of this object.
    private final IntArray mSnapshottedUsers;
    private final List<Integer> mSnapshottedUsers;

    /**
     * A mapping between user and an inode of theirs CE data snapshot.
@@ -128,7 +128,7 @@ public final class PackageRollbackInfo implements Parcelable {
    }

    /** @hide */
    public IntArray getPendingBackups() {
    public List<Integer> getPendingBackups() {
        return mPendingBackups;
    }

@@ -168,7 +168,7 @@ public final class PackageRollbackInfo implements Parcelable {
    }

    /** @hide */
    public IntArray getSnapshottedUsers() {
    public List<Integer> getSnapshottedUsers() {
        return mSnapshottedUsers;
    }

@@ -184,10 +184,7 @@ public final class PackageRollbackInfo implements Parcelable {

    /** @hide */
    public void removePendingBackup(int userId) {
        int idx = mPendingBackups.indexOf(userId);
        if (idx != -1) {
            mPendingBackups.remove(idx);
        }
        mPendingBackups.remove((Integer) userId);
    }

    /** @hide */
@@ -198,8 +195,8 @@ public final class PackageRollbackInfo implements Parcelable {
    /** @hide */
    public PackageRollbackInfo(VersionedPackage packageRolledBackFrom,
            VersionedPackage packageRolledBackTo,
            @NonNull IntArray pendingBackups, @NonNull ArrayList<RestoreInfo> pendingRestores,
            boolean isApex, boolean isApkInApex, @NonNull IntArray snapshottedUsers,
            @NonNull List<Integer> pendingBackups, @NonNull ArrayList<RestoreInfo> pendingRestores,
            boolean isApex, boolean isApkInApex, @NonNull List<Integer> snapshottedUsers,
            @NonNull SparseLongArray ceSnapshotInodes) {
        this(packageRolledBackFrom, packageRolledBackTo, pendingBackups, pendingRestores, isApex,
                isApkInApex, snapshottedUsers, ceSnapshotInodes,
@@ -209,8 +206,8 @@ public final class PackageRollbackInfo implements Parcelable {
    /** @hide */
    public PackageRollbackInfo(VersionedPackage packageRolledBackFrom,
            VersionedPackage packageRolledBackTo,
            @NonNull IntArray pendingBackups, @NonNull ArrayList<RestoreInfo> pendingRestores,
            boolean isApex, boolean isApkInApex, @NonNull IntArray snapshottedUsers,
            @NonNull List<Integer> pendingBackups, @NonNull ArrayList<RestoreInfo> pendingRestores,
            boolean isApex, boolean isApkInApex, @NonNull List<Integer> snapshottedUsers,
            @NonNull SparseLongArray ceSnapshotInodes,
            @PackageManager.RollbackDataPolicy int rollbackDataPolicy) {
        this.mVersionRolledBackFrom = packageRolledBackFrom;
+2 −3
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.content.pm.PackageManager;
import android.content.rollback.PackageRollbackInfo;
import android.content.rollback.PackageRollbackInfo.RestoreInfo;
import android.os.storage.StorageManager;
import android.util.IntArray;
import android.util.Slog;
import android.util.SparseLongArray;

@@ -95,7 +94,7 @@ public class AppDataRollbackHelper {
            int userId, int appId, String seInfo) {
        int storageFlags = Installer.FLAG_STORAGE_DE;

        final IntArray pendingBackups = packageRollbackInfo.getPendingBackups();
        final List<Integer> pendingBackups = packageRollbackInfo.getPendingBackups();
        final List<RestoreInfo> pendingRestores = packageRollbackInfo.getPendingRestores();
        boolean changedRollback = false;

@@ -243,7 +242,7 @@ public class AppDataRollbackHelper {
        for (PackageRollbackInfo info : rollback.info.getPackages()) {
            boolean hasPendingBackup = false;
            boolean hasPendingRestore = false;
            final IntArray pendingBackupUsers = info.getPendingBackups();
            final List<Integer> pendingBackupUsers = info.getPendingBackups();
            if (pendingBackupUsers != null) {
                if (pendingBackupUsers.indexOf(userId) != -1) {
                    hasPendingBackup = true;
+12 −7
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import android.os.ParcelFileDescriptor;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.IntArray;
import android.util.Slog;
import android.util.SparseLongArray;

@@ -349,8 +348,8 @@ class Rollback {
        PackageRollbackInfo packageRollbackInfo = new PackageRollbackInfo(
                new VersionedPackage(packageName, newVersion),
                new VersionedPackage(packageName, installedVersion),
                new IntArray() /* pendingBackups */, new ArrayList<>() /* pendingRestores */,
                isApex, false /* isApkInApex */, new IntArray(),
                new ArrayList<>() /* pendingBackups */, new ArrayList<>() /* pendingRestores */,
                isApex, false /* isApkInApex */, new ArrayList<>(),
                new SparseLongArray() /* ceSnapshotInodes */, rollbackDataPolicy);

        synchronized (mLock) {
@@ -375,8 +374,8 @@ class Rollback {
        PackageRollbackInfo packageRollbackInfo = new PackageRollbackInfo(
                new VersionedPackage(packageName, 0 /* newVersion */),
                new VersionedPackage(packageName, installedVersion),
                new IntArray() /* pendingBackups */, new ArrayList<>() /* pendingRestores */,
                false /* isApex */, true /* isApkInApex */, new IntArray(),
                new ArrayList<>() /* pendingBackups */, new ArrayList<>() /* pendingRestores */,
                false /* isApex */, true /* isApkInApex */, new ArrayList<>(),
                new SparseLongArray() /* ceSnapshotInodes */, rollbackDataPolicy);
        synchronized (mLock) {
            info.getPackages().add(packageRollbackInfo);
@@ -384,6 +383,12 @@ class Rollback {
        return true;
    }

    private static void addAll(List<Integer> list, int[] arr) {
        for (int i = 0; i < arr.length; ++i) {
            list.add(arr[i]);
        }
    }

    /**
     * Snapshots user data for the provided package and user ids. Does nothing if this rollback is
     * not in the ENABLING state.
@@ -399,7 +404,7 @@ class Rollback {
                    if (pkgRollbackInfo.getRollbackDataPolicy()
                            == PackageManager.RollbackDataPolicy.RESTORE) {
                        dataHelper.snapshotAppData(info.getRollbackId(), pkgRollbackInfo, userIds);
                        pkgRollbackInfo.getSnapshottedUsers().addAll(IntArray.wrap(userIds));
                        addAll(pkgRollbackInfo.getSnapshottedUsers(), userIds);
                        RollbackStore.saveRollback(this);
                    }
                    break;
@@ -644,7 +649,7 @@ class Rollback {
                if (pkgInfo.isApex()) {
                    containsApex = true;
                } else {
                    IntArray snapshottedUsers = pkgInfo.getSnapshottedUsers();
                    List<Integer> snapshottedUsers = pkgInfo.getSnapshottedUsers();
                    for (int i = 0; i < snapshottedUsers.size(); i++) {
                        // Destroy app data snapshot.
                        int userId = snapshottedUsers.get(i);
+16 −21
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.content.pm.VersionedPackage;
import android.content.rollback.PackageRollbackInfo;
import android.content.rollback.PackageRollbackInfo.RestoreInfo;
import android.content.rollback.RollbackInfo;
import android.util.IntArray;
import android.util.Slog;
import android.util.SparseLongArray;

@@ -97,29 +96,25 @@ class RollbackStore {
    }

    /**
     * Converts an {@code JSONArray} of integers to an {@code IntArray}.
     * Converts a {@code JSONArray} of integers to a {@code List<Integer>}.
     */
    private static @NonNull IntArray convertToIntArray(@NonNull JSONArray jsonArray)
    private static @NonNull List<Integer> toIntList(@NonNull JSONArray jsonArray)
            throws JSONException {
        if (jsonArray.length() == 0) {
            return new IntArray();
        final List<Integer> ret = new ArrayList<>();
        for (int i = 0; i < jsonArray.length(); ++i) {
            ret.add(jsonArray.getInt(i));
        }

        final int[] ret = new int[jsonArray.length()];
        for (int i = 0; i < ret.length; ++i) {
            ret[i] = jsonArray.getInt(i);
        }

        return IntArray.wrap(ret);
        return ret;
    }

    /**
     * Converts an {@code IntArray} into an {@code JSONArray} of integers.
     * Converts a {@code List<Integer>} into a {@code JSONArray} of integers.
     */
    private static @NonNull JSONArray convertToJsonArray(@NonNull IntArray intArray) {
    private static @NonNull JSONArray fromIntList(@NonNull List<Integer> list) {
        JSONArray jsonArray = new JSONArray();
        for (int i = 0; i < intArray.size(); ++i) {
            jsonArray.put(intArray.get(i));
        for (int i = 0; i < list.size(); ++i) {
            jsonArray.put(list.get(i));
        }

        return jsonArray;
@@ -337,17 +332,17 @@ class RollbackStore {
        json.put("versionRolledBackFrom", toJson(info.getVersionRolledBackFrom()));
        json.put("versionRolledBackTo", toJson(info.getVersionRolledBackTo()));

        IntArray pendingBackups = info.getPendingBackups();
        List<Integer> pendingBackups = info.getPendingBackups();
        List<RestoreInfo> pendingRestores = info.getPendingRestores();
        IntArray snapshottedUsers = info.getSnapshottedUsers();
        json.put("pendingBackups", convertToJsonArray(pendingBackups));
        List<Integer> snapshottedUsers = info.getSnapshottedUsers();
        json.put("pendingBackups", fromIntList(pendingBackups));
        json.put("pendingRestores", convertToJsonArray(pendingRestores));

        json.put("isApex", info.isApex());
        json.put("isApkInApex", info.isApkInApex());

        // Field is named 'installedUsers' for legacy reasons.
        json.put("installedUsers", convertToJsonArray(snapshottedUsers));
        json.put("installedUsers", fromIntList(snapshottedUsers));
        json.put("ceSnapshotInodes", ceSnapshotInodesToJson(info.getCeSnapshotInodes()));

        json.put("rollbackDataPolicy", info.getRollbackDataPolicy());
@@ -362,7 +357,7 @@ class RollbackStore {
        VersionedPackage versionRolledBackTo = versionedPackageFromJson(
                json.getJSONObject("versionRolledBackTo"));

        final IntArray pendingBackups = convertToIntArray(
        final List<Integer> pendingBackups = toIntList(
                json.getJSONArray("pendingBackups"));
        final ArrayList<RestoreInfo> pendingRestores = convertToRestoreInfoArray(
                json.getJSONArray("pendingRestores"));
@@ -371,7 +366,7 @@ class RollbackStore {
        final boolean isApkInApex = json.getBoolean("isApkInApex");

        // Field is named 'installedUsers' for legacy reasons.
        final IntArray snapshottedUsers = convertToIntArray(json.getJSONArray("installedUsers"));
        final List<Integer> snapshottedUsers = toIntList(json.getJSONArray("installedUsers"));
        final SparseLongArray ceSnapshotInodes = ceSnapshotInodesFromJson(
                json.getJSONArray("ceSnapshotInodes"));

+15 −7
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import static org.mockito.MockitoAnnotations.initMocks;
import android.content.pm.VersionedPackage;
import android.content.rollback.PackageRollbackInfo;
import android.content.rollback.PackageRollbackInfo.RestoreInfo;
import android.util.IntArray;
import android.util.SparseLongArray;

import com.android.server.pm.ApexManager;
@@ -48,6 +47,7 @@ import org.mockito.Mockito;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

@RunWith(JUnit4.class)
public class AppDataRollbackHelperTest {
@@ -71,8 +71,8 @@ public class AppDataRollbackHelperTest {
        helper.snapshotAppData(5, info, new int[]{10, 11});

        assertEquals(2, info.getPendingBackups().size());
        assertEquals(10, info.getPendingBackups().get(0));
        assertEquals(11, info.getPendingBackups().get(1));
        assertEquals(10, (int) info.getPendingBackups().get(0));
        assertEquals(11, (int) info.getPendingBackups().get(1));

        assertEquals(0, info.getCeSnapshotInodes().size());

@@ -91,7 +91,7 @@ public class AppDataRollbackHelperTest {
        PackageRollbackInfo info2 = createPackageRollbackInfo("com.foo.bar");
        helper.snapshotAppData(7, info2, new int[]{10, 11});
        assertEquals(1, info2.getPendingBackups().size());
        assertEquals(11, info2.getPendingBackups().get(0));
        assertEquals(11, (int) info2.getPendingBackups().get(0));

        assertEquals(1, info2.getCeSnapshotInodes().size());
        assertEquals(239L, info2.getCeSnapshotInodes().get(10));
@@ -105,11 +105,19 @@ public class AppDataRollbackHelperTest {
        inOrder.verifyNoMoreInteractions();
    }

    private static List<Integer> toList(int[] arr) {
        List<Integer> ret = new ArrayList<>();
        for (int i = 0; i < arr.length; ++i) {
            ret.add(arr[i]);
        }
        return ret;
    }

    private static PackageRollbackInfo createPackageRollbackInfo(String packageName,
            final int[] installedUsers) {
        return new PackageRollbackInfo(
                new VersionedPackage(packageName, 2), new VersionedPackage(packageName, 1),
                new IntArray(), new ArrayList<>(), false, false, IntArray.wrap(installedUsers),
                new ArrayList<>(), new ArrayList<>(), false, false, toList(installedUsers),
                new SparseLongArray());
    }

@@ -128,7 +136,7 @@ public class AppDataRollbackHelperTest {
        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer, mApexManager));

        PackageRollbackInfo info = createPackageRollbackInfo("com.foo");
        IntArray pendingBackups = info.getPendingBackups();
        List<Integer> pendingBackups = info.getPendingBackups();
        pendingBackups.add(10);
        pendingBackups.add(11);

@@ -144,7 +152,7 @@ public class AppDataRollbackHelperTest {
        inOrder.verifyNoMoreInteractions();

        assertEquals(1, pendingBackups.size());
        assertEquals(11, pendingBackups.get(0));
        assertEquals(11, (int) pendingBackups.get(0));
    }

    @Test
Loading