Some code called {@link #unbind(String)} before you got a callback.
@@ -193,7 +195,7 @@ public class TransportConnection {
* For unusable transport binders check {@link DeadObjectException}.
*
* @param listener The listener that will be called with the (possibly null or unusable) {@link
- * IBackupTransport} instance and this {@link TransportConnection} object.
+ * BackupTransportClient} instance and this {@link TransportConnection} object.
* @param caller A {@link String} identifying the caller for logging/debugging purposes. This
* should be a human-readable short string that is easily identifiable in the logs. Ideally
* TAG.methodName(), where TAG is the one used in logcat. In cases where this is is not very
@@ -293,8 +295,8 @@ public class TransportConnection {
*
* Synchronous version of {@link #connectAsync(TransportConnectionListener, String)}. The
* same observations about state are valid here. Also, what was said about the {@link
- * IBackupTransport} parameter of {@link TransportConnectionListener} now apply to the return
- * value of this method.
+ * BackupTransportClient} parameter of {@link TransportConnectionListener} now apply to the
+ * return value of this method.
*
*
This is a potentially blocking operation, so be sure to call this carefully on the correct
* threads. You can't call this from the process main-thread (it throws an exception if you do
@@ -305,18 +307,18 @@ public class TransportConnection {
*
* @param caller A {@link String} identifying the caller for logging/debugging purposes. Check
* {@link #connectAsync(TransportConnectionListener, String)} for more details.
- * @return A {@link IBackupTransport} transport binder instance or null. If it's non-null it can
- * still be unusable - throws {@link DeadObjectException} on method calls
+ * @return A {@link BackupTransportClient} transport client instance or null. If it's non-null
+ * it can still be unusable - throws {@link DeadObjectException} on method calls
*/
@WorkerThread
@Nullable
- public IBackupTransport connect(String caller) {
+ public BackupTransportClient connect(String caller) {
// If called on the main-thread this could deadlock waiting because calls to
// ServiceConnection are on the main-thread as well
Preconditions.checkState(
!Looper.getMainLooper().isCurrentThread(), "Can't call connect() on main thread");
- IBackupTransport transport = mTransport;
+ BackupTransportClient transport = mTransport;
if (transport != null) {
log(Priority.DEBUG, caller, "Sync connect: reusing transport");
return transport;
@@ -330,7 +332,7 @@ public class TransportConnection {
}
}
- CompletableFuture transportFuture = new CompletableFuture<>();
+ CompletableFuture transportFuture = new CompletableFuture<>();
TransportConnectionListener requestListener =
(requestedTransport, transportClient) ->
transportFuture.complete(requestedTransport);
@@ -359,13 +361,14 @@ public class TransportConnection {
*
* @param caller A {@link String} identifying the caller for logging/debugging purposes. Check
* {@link #connectAsync(TransportConnectionListener, String)} for more details.
- * @return A {@link IBackupTransport} transport binder instance.
+ * @return A {@link BackupTransportClient} transport binder instance.
* @see #connect(String)
* @throws TransportNotAvailableException if connection attempt fails.
*/
@WorkerThread
- public IBackupTransport connectOrThrow(String caller) throws TransportNotAvailableException {
- IBackupTransport transport = connect(caller);
+ public BackupTransportClient connectOrThrow(String caller)
+ throws TransportNotAvailableException {
+ BackupTransportClient transport = connect(caller);
if (transport == null) {
log(Priority.ERROR, caller, "Transport connection failed");
throw new TransportNotAvailableException();
@@ -379,12 +382,12 @@ public class TransportConnection {
*
* @param caller A {@link String} identifying the caller for logging/debugging purposes. Check
* {@link #connectAsync(TransportConnectionListener, String)} for more details.
- * @return A {@link IBackupTransport} transport binder instance.
+ * @return A {@link BackupTransportClient} transport client instance.
* @throws TransportNotAvailableException if not connected.
*/
- public IBackupTransport getConnectedTransport(String caller)
+ public BackupTransportClient getConnectedTransport(String caller)
throws TransportNotAvailableException {
- IBackupTransport transport = mTransport;
+ BackupTransportClient transport = mTransport;
if (transport == null) {
log(Priority.ERROR, caller, "Transport not connected");
throw new TransportNotAvailableException();
@@ -425,7 +428,8 @@ public class TransportConnection {
}
private void onServiceConnected(IBinder binder) {
- IBackupTransport transport = IBackupTransport.Stub.asInterface(binder);
+ IBackupTransport transportBinder = IBackupTransport.Stub.asInterface(binder);
+ BackupTransportClient transport = new BackupTransportClient(transportBinder);
synchronized (mStateLock) {
checkStateIntegrityLocked();
@@ -492,15 +496,15 @@ public class TransportConnection {
private void notifyListener(
TransportConnectionListener listener,
- @Nullable IBackupTransport transport,
+ @Nullable BackupTransportClient transport,
String caller) {
- String transportString = (transport != null) ? "IBackupTransport" : "null";
+ String transportString = (transport != null) ? "BackupTransportClient" : "null";
log(Priority.INFO, "Notifying [" + caller + "] transport = " + transportString);
mListenerHandler.post(() -> listener.onTransportConnectionResult(transport, this));
}
@GuardedBy("mStateLock")
- private void notifyListenersAndClearLocked(@Nullable IBackupTransport transport) {
+ private void notifyListenersAndClearLocked(@Nullable BackupTransportClient transport) {
for (Map.Entry entry : mListeners.entrySet()) {
TransportConnectionListener listener = entry.getKey();
String caller = entry.getValue();
@@ -510,7 +514,7 @@ public class TransportConnection {
}
@GuardedBy("mStateLock")
- private void setStateLocked(@State int state, @Nullable IBackupTransport transport) {
+ private void setStateLocked(@State int state, @Nullable BackupTransportClient transport) {
log(Priority.VERBOSE, "State: " + stateToString(mState) + " => " + stateToString(state));
onStateTransition(mState, state);
mState = state;
diff --git a/services/backup/backuplib/java/com/android/server/backup/transport/TransportConnectionListener.java b/services/backup/backuplib/java/com/android/server/backup/transport/TransportConnectionListener.java
index 03d35e46952c4..1776c4104e26c 100644
--- a/services/backup/backuplib/java/com/android/server/backup/transport/TransportConnectionListener.java
+++ b/services/backup/backuplib/java/com/android/server/backup/transport/TransportConnectionListener.java
@@ -18,7 +18,7 @@ package com.android.server.backup.transport;
import android.annotation.Nullable;
-import com.android.internal.backup.IBackupTransport;
+import com.android.server.backup.transport.BackupTransportClient;
/**
* Listener to be called by {@link TransportConnection#connectAsync(TransportConnectionListener,
@@ -26,13 +26,14 @@ import com.android.internal.backup.IBackupTransport;
*/
public interface TransportConnectionListener {
/**
- * Called when {@link TransportConnection} has a transport binder available or that it decided
+ * Called when {@link TransportConnection} has a transport client available or that it decided
* it couldn't obtain one, in which case {@param transport} is null.
*
- * @param transport A {@link IBackupTransport} transport binder or null.
+ * @param transportClient A {@link BackupTransportClient} transport or null.
* @param transportConnection The {@link TransportConnection} used to retrieve this transport
- * binder.
+ * client.
*/
void onTransportConnectionResult(
- @Nullable IBackupTransport transport, TransportConnection transportConnection);
+ @Nullable BackupTransportClient transportClient,
+ TransportConnection transportConnection);
}
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index 452adb2945404..98ea03e352965 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -103,7 +103,6 @@ import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.backup.IBackupTransport;
import com.android.internal.util.Preconditions;
import com.android.server.AppWidgetBackupBridge;
import com.android.server.EventLogTags;
@@ -127,6 +126,7 @@ import com.android.server.backup.params.ClearRetryParams;
import com.android.server.backup.params.RestoreParams;
import com.android.server.backup.restore.ActiveRestoreSession;
import com.android.server.backup.restore.PerformUnifiedRestoreTask;
+import com.android.server.backup.transport.BackupTransportClient;
import com.android.server.backup.transport.TransportConnection;
import com.android.server.backup.transport.TransportNotAvailableException;
import com.android.server.backup.transport.TransportNotRegisteredException;
@@ -3719,7 +3719,8 @@ public class UserBackupManagerService {
mTransportManager.getTransportClient(newTransportName, callerLogString);
if (transportConnection != null) {
try {
- IBackupTransport transport = transportConnection.connectOrThrow(callerLogString);
+ BackupTransportClient transport = transportConnection.connectOrThrow(
+ callerLogString);
mCurrentToken = transport.getCurrentRestoreSet();
} catch (Exception e) {
// Oops. We can't know the current dataset token, so reset and figure it out
@@ -4371,7 +4372,7 @@ public class UserBackupManagerService {
final long oldCallingId = Binder.clearCallingIdentity();
try {
- IBackupTransport transport = transportConnection.connectOrThrow(
+ BackupTransportClient transport = transportConnection.connectOrThrow(
/* caller */ "BMS.getOperationTypeFromTransport");
if ((transport.getTransportFlags() & BackupAgent.FLAG_DEVICE_TO_DEVICE_TRANSFER) != 0) {
return OperationType.MIGRATION;
diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
index 1c860917c4ef7..9ce4eabb0fa1a 100644
--- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
+++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
@@ -41,7 +41,6 @@ import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
-import com.android.internal.backup.IBackupTransport;
import com.android.server.EventLogTags;
import com.android.server.backup.BackupAgentTimeoutParameters;
import com.android.server.backup.BackupRestoreTask;
@@ -51,6 +50,7 @@ import com.android.server.backup.UserBackupManagerService;
import com.android.server.backup.internal.OnTaskFinishedListener;
import com.android.server.backup.internal.Operation;
import com.android.server.backup.remote.RemoteCall;
+import com.android.server.backup.transport.BackupTransportClient;
import com.android.server.backup.transport.TransportConnection;
import com.android.server.backup.transport.TransportNotAvailableException;
import com.android.server.backup.utils.BackupEligibilityRules;
@@ -300,7 +300,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
mUserBackupManagerService.handleCancel(mBackupRunnerOpToken, cancelAll);
try {
// If we're running a backup we should be connected to a transport
- IBackupTransport transport =
+ BackupTransportClient transport =
mTransportConnection.getConnectedTransport("PFTBT.handleCancel()");
transport.cancelFullBackup();
} catch (RemoteException | TransportNotAvailableException e) {
@@ -353,7 +353,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
return;
}
- IBackupTransport transport = mTransportConnection.connect("PFTBT.run()");
+ BackupTransportClient transport = mTransportConnection.connect("PFTBT.run()");
if (transport == null) {
Slog.w(TAG, "Transport not present; full data backup not performed");
backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED;
@@ -745,7 +745,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
Slog.v(TAG, "Got preflight response; size=" + totalSize);
}
- IBackupTransport transport =
+ BackupTransportClient transport =
mTransportConnection.connectOrThrow("PFTBT$SPBP.preflightFullBackup()");
result = transport.checkFullBackupSize(totalSize);
if (result == BackupTransport.TRANSPORT_QUOTA_EXCEEDED) {
diff --git a/services/backup/java/com/android/server/backup/internal/BackupHandler.java b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
index 3b3bf8c694afd..5c24859058149 100644
--- a/services/backup/java/com/android/server/backup/internal/BackupHandler.java
+++ b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
@@ -31,7 +31,6 @@ import android.util.Pair;
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.backup.IBackupTransport;
import com.android.server.EventLogTags;
import com.android.server.backup.BackupAgentTimeoutParameters;
import com.android.server.backup.BackupRestoreTask;
@@ -51,6 +50,7 @@ import com.android.server.backup.params.RestoreGetSetsParams;
import com.android.server.backup.params.RestoreParams;
import com.android.server.backup.restore.PerformAdbRestoreTask;
import com.android.server.backup.restore.PerformUnifiedRestoreTask;
+import com.android.server.backup.transport.BackupTransportClient;
import com.android.server.backup.transport.TransportConnection;
import java.util.ArrayList;
@@ -149,7 +149,7 @@ public class BackupHandler extends Handler {
String callerLogString = "BH/MSG_RUN_BACKUP";
TransportConnection transportConnection =
transportManager.getCurrentTransportClient(callerLogString);
- IBackupTransport transport =
+ BackupTransportClient transport =
transportConnection != null
? transportConnection.connect(callerLogString)
: null;
@@ -364,7 +364,7 @@ public class BackupHandler extends Handler {
RestoreGetSetsParams params = (RestoreGetSetsParams) msg.obj;
String callerLogString = "BH/MSG_RUN_GET_RESTORE_SETS";
try {
- IBackupTransport transport =
+ BackupTransportClient transport =
params.mTransportConnection.connectOrThrow(callerLogString);
sets = transport.getAvailableRestoreSets();
// cache the result in the active session
diff --git a/services/backup/java/com/android/server/backup/internal/PerformClearTask.java b/services/backup/java/com/android/server/backup/internal/PerformClearTask.java
index 80bd60451dfd0..de0177c1b62c4 100644
--- a/services/backup/java/com/android/server/backup/internal/PerformClearTask.java
+++ b/services/backup/java/com/android/server/backup/internal/PerformClearTask.java
@@ -21,9 +21,9 @@ import static com.android.server.backup.BackupManagerService.TAG;
import android.content.pm.PackageInfo;
import android.util.Slog;
-import com.android.internal.backup.IBackupTransport;
import com.android.server.backup.TransportManager;
import com.android.server.backup.UserBackupManagerService;
+import com.android.server.backup.transport.BackupTransportClient;
import com.android.server.backup.transport.TransportConnection;
import java.io.File;
@@ -47,7 +47,7 @@ public class PerformClearTask implements Runnable {
public void run() {
String callerLogString = "PerformClearTask.run()";
- IBackupTransport transport = null;
+ BackupTransportClient transport = null;
try {
// Clear the on-device backup state to ensure a full backup next time
String transportDirName =
diff --git a/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java b/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java
index 7636ef65211f8..888f49d44654e 100644
--- a/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java
+++ b/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java
@@ -28,10 +28,10 @@ import android.util.EventLog;
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.backup.IBackupTransport;
import com.android.server.EventLogTags;
import com.android.server.backup.TransportManager;
import com.android.server.backup.UserBackupManagerService;
+import com.android.server.backup.transport.BackupTransportClient;
import com.android.server.backup.transport.TransportConnection;
import java.io.File;
@@ -128,7 +128,8 @@ public class PerformInitializeTask implements Runnable {
EventLog.writeEvent(EventLogTags.BACKUP_START, transportDirName);
long startRealtime = SystemClock.elapsedRealtime();
- IBackupTransport transport = transportConnection.connectOrThrow(callerLogString);
+ BackupTransportClient transport = transportConnection.connectOrThrow(
+ callerLogString);
int status = transport.initializeDevice();
if (status != BackupTransport.TRANSPORT_OK) {
Slog.e(TAG, "Transport error in initializeDevice()");
diff --git a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
index bdb2e6fc127f7..30da8c1d5e763 100644
--- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
+++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java
@@ -51,7 +51,6 @@ import android.util.Log;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.backup.IBackupTransport;
import com.android.internal.util.Preconditions;
import com.android.server.AppWidgetBackupBridge;
import com.android.server.backup.BackupAgentTimeoutParameters;
@@ -65,6 +64,7 @@ import com.android.server.backup.internal.Operation;
import com.android.server.backup.remote.RemoteCall;
import com.android.server.backup.remote.RemoteCallable;
import com.android.server.backup.remote.RemoteResult;
+import com.android.server.backup.transport.BackupTransportClient;
import com.android.server.backup.transport.TransportConnection;
import com.android.server.backup.transport.TransportNotAvailableException;
import com.android.server.backup.utils.BackupEligibilityRules;
@@ -111,7 +111,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*