Update BackupTransportClient#getAvailableRestoreSets() to return List instead of array
Test: ActiveRestoreSessionTest, RestoreSessionHostSideTest Bug: 210085179 Fix: 210085179 Change-Id: I889e5579e8ca37ce2de38e88a293ad477ae6e40f
This commit is contained in:
committed by
Beatrice Marchegiani
parent
383a053610
commit
0c1ef94877
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user