Include descriptor in Binder token for AppPredictor

Adding a descriptor in Binder token can help us identifying potential
binder proxy leaks in the future.

This CL also made the Binder token static. Binder token serves as an
indicator of the termination of a process, there's no reason in making
multiple Binder token since when the process dies, they all dies.

Bug: 240329370
Test: manual
Change-Id: I26969395d704aa6518ef9d834951f856d74924b7
This commit is contained in:
Pinyao Ting
2022-07-28 15:26:24 -07:00
parent 86b0c6ad0c
commit 8dc35ad2b1
2 changed files with 18 additions and 6 deletions

View File

@@ -74,7 +74,6 @@ public final class AppPredictor {
private static final String TAG = AppPredictor.class.getSimpleName();
private final IPredictionManager mPredictionManager;
private final CloseGuard mCloseGuard = CloseGuard.get();
private final AtomicBoolean mIsClosed = new AtomicBoolean(false);
@@ -82,8 +81,6 @@ public final class AppPredictor {
private final AppPredictionSessionId mSessionId;
private final ArrayMap<Callback, CallbackWrapper> mRegisteredCallbacks = new ArrayMap<>();
private final IBinder mToken = new Binder();
/**
* Creates a new Prediction client.
* <p>
@@ -99,7 +96,7 @@ public final class AppPredictor {
mSessionId = new AppPredictionSessionId(
context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId());
try {
mPredictionManager.createPredictionSession(predictionContext, mSessionId, mToken);
mPredictionManager.createPredictionSession(predictionContext, mSessionId, getToken());
} catch (RemoteException e) {
Log.e(TAG, "Failed to create predictor", e);
e.rethrowAsRuntimeException();
@@ -324,4 +321,12 @@ public final class AppPredictor {
}
}
}
private static class Token {
static final IBinder sBinder = new Binder(TAG);
}
private static IBinder getToken() {
return Token.sBinder;
}
}

View File

@@ -83,7 +83,6 @@ public final class SmartspaceSession implements AutoCloseable {
private final SmartspaceSessionId mSessionId;
private final ArrayMap<OnTargetsAvailableListener, CallbackWrapper> mRegisteredCallbacks =
new ArrayMap<>();
private final IBinder mToken = new Binder();
/**
* Creates a new Smartspace ui client.
@@ -101,7 +100,7 @@ public final class SmartspaceSession implements AutoCloseable {
mSessionId = new SmartspaceSessionId(
context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUser());
try {
mInterface.createSmartspaceSession(smartspaceConfig, mSessionId, mToken);
mInterface.createSmartspaceSession(smartspaceConfig, mSessionId, getToken());
} catch (RemoteException e) {
Log.e(TAG, "Failed to create Smartspace session", e);
e.rethrowFromSystemServer();
@@ -283,4 +282,12 @@ public final class SmartspaceSession implements AutoCloseable {
}
}
}
private static class Token {
static final IBinder sBinder = new Binder(TAG);
}
private static IBinder getToken() {
return Token.sBinder;
}
}