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

Commit 0c1ef948 authored by beatricemarch's avatar beatricemarch Committed by Beatrice Marchegiani
Browse files

Update BackupTransportClient#getAvailableRestoreSets() to return List instead of array

Test: ActiveRestoreSessionTest, RestoreSessionHostSideTest
Bug: 210085179
Fix: 210085179
Change-Id: I889e5579e8ca37ce2de38e88a293ad477ae6e40f
parent 383a0536
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -375,7 +375,7 @@ public class BackupHandler extends Handler {

            case MSG_RUN_GET_RESTORE_SETS: {
                // Like other async operations, this is entered with the wakelock held
                RestoreSet[] sets = null;
                List<RestoreSet> sets = null;
                RestoreGetSetsParams params = (RestoreGetSetsParams) msg.obj;
                String callerLogString = "BH/MSG_RUN_GET_RESTORE_SETS";
                try {
@@ -394,7 +394,12 @@ public class BackupHandler extends Handler {
                } finally {
                    if (params.observer != null) {
                        try {
                            params.observer.restoreSetsAvailable(sets);
                            if (sets == null) {
                                params.observer.restoreSetsAvailable(null);
                            } else {
                                params.observer.restoreSetsAvailable(
                                        sets.toArray(new RestoreSet[0]));
                            }
                        } catch (RemoteException re) {
                            Slog.e(TAG, "Unable to report listing to observer");
                        } catch (Exception e) {
+9 −8
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.server.backup.params.RestoreParams;
import com.android.server.backup.transport.TransportConnection;
import com.android.server.backup.utils.BackupEligibilityRules;

import java.util.List;
import java.util.function.BiFunction;

/**
@@ -60,7 +61,7 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
    private final int mUserId;
    private final BackupEligibilityRules mBackupEligibilityRules;
    @Nullable private final String mPackageName;
    public RestoreSet[] mRestoreSets = null;
    public List<RestoreSet> mRestoreSets = null;
    boolean mEnded = false;
    boolean mTimedOut = false;

@@ -174,10 +175,10 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
        }

        synchronized (mBackupManagerService.getQueueLock()) {
            for (int i = 0; i < mRestoreSets.length; i++) {
                if (token == mRestoreSets[i].token) {
            for (int i = 0; i < mRestoreSets.size(); i++) {
                if (token == mRestoreSets.get(i).token) {
                    final long oldId = Binder.clearCallingIdentity();
                    RestoreSet restoreSet = mRestoreSets[i];
                    RestoreSet restoreSet = mRestoreSets.get(i);
                    try {
                        return sendRestoreToHandlerLocked(
                                (transportClient, listener) ->
@@ -267,10 +268,10 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
        }

        synchronized (mBackupManagerService.getQueueLock()) {
            for (int i = 0; i < mRestoreSets.length; i++) {
                if (token == mRestoreSets[i].token) {
            for (int i = 0; i < mRestoreSets.size(); i++) {
                if (token == mRestoreSets.get(i).token) {
                    final long oldId = Binder.clearCallingIdentity();
                    RestoreSet restoreSet = mRestoreSets[i];
                    RestoreSet restoreSet = mRestoreSets.get(i);
                    try {
                        return sendRestoreToHandlerLocked(
                                (transportClient, listener) ->
@@ -390,7 +391,7 @@ public class ActiveRestoreSession extends IRestoreSession.Stub {
        }
    }

    public void setRestoreSets(RestoreSet[] restoreSets) {
    public void setRestoreSets(List<RestoreSet> restoreSets) {
        mRestoreSets = restoreSets;
    }

+2 −2
Original line number Diff line number Diff line
@@ -180,11 +180,11 @@ public class BackupTransportClient {
    /**
     * See {@link IBackupTransport#getAvailableRestoreSets()}
     */
    public RestoreSet[] getAvailableRestoreSets() throws RemoteException {
    public List<RestoreSet> getAvailableRestoreSets() throws RemoteException {
        AndroidFuture<List<RestoreSet>> resultFuture = mTransportFutures.newFuture();
        mTransportBinder.getAvailableRestoreSets(resultFuture);
        List<RestoreSet> result = getFutureResult(resultFuture);
        return result == null ? null : result.toArray(new RestoreSet[] {});
        return result;
    }

    /**
+5 −3
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPackageManager;

import java.util.ArrayDeque;
import java.util.Arrays;

@RunWith(RobolectricTestRunner.class)
@Config(
@@ -196,7 +197,7 @@ public class ActiveRestoreSessionTest {
        mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
        TransportMock transportMock = setUpTransport(mTransport);
        when(transportMock.transport.getAvailableRestoreSets())
                .thenReturn(new RestoreSet[] {mRestoreSet1, mRestoreSet2});
                .thenReturn(Arrays.asList(mRestoreSet1, mRestoreSet2));
        IRestoreSession restoreSession = createActiveRestoreSession(PACKAGE_1, mTransport);

        int result = restoreSession.getAvailableRestoreSets(mObserver, mMonitor);
@@ -214,7 +215,8 @@ public class ActiveRestoreSessionTest {
    public void testGetAvailableRestoreSets_forEmptyRestoreSets() throws Exception {
        mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
        TransportMock transportMock = setUpTransport(mTransport);
        when(transportMock.transport.getAvailableRestoreSets()).thenReturn(new RestoreSet[0]);
        when(transportMock.transport.getAvailableRestoreSets()).thenReturn(
                Arrays.asList(new RestoreSet[0]));
        IRestoreSession restoreSession = createActiveRestoreSession(PACKAGE_1, mTransport);

        int result = restoreSession.getAvailableRestoreSets(mObserver, mMonitor);
@@ -593,7 +595,7 @@ public class ActiveRestoreSessionTest {
                new ActiveRestoreSession(
                        mBackupManagerService, packageName, transport.transportName,
                        mBackupEligibilityRules);
        restoreSession.setRestoreSets(restoreSets);
        restoreSession.setRestoreSets(Arrays.asList(restoreSets));
        return restoreSession;
    }