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
diff --git a/core/java/android/app/prediction/AppPredictor.java b/core/java/android/app/prediction/AppPredictor.java
index db3a192..2581daa 100644
--- a/core/java/android/app/prediction/AppPredictor.java
+++ b/core/java/android/app/prediction/AppPredictor.java
@@ -74,7 +74,6 @@
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 @@
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 @@
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 @@
}
}
}
+
+ private static class Token {
+ static final IBinder sBinder = new Binder(TAG);
+ }
+
+ private static IBinder getToken() {
+ return Token.sBinder;
+ }
}
diff --git a/core/java/android/app/smartspace/SmartspaceSession.java b/core/java/android/app/smartspace/SmartspaceSession.java
index b523be2..3658ffc 100644
--- a/core/java/android/app/smartspace/SmartspaceSession.java
+++ b/core/java/android/app/smartspace/SmartspaceSession.java
@@ -83,7 +83,6 @@
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 @@
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 @@
}
}
}
+
+ private static class Token {
+ static final IBinder sBinder = new Binder(TAG);
+ }
+
+ private static IBinder getToken() {
+ return Token.sBinder;
+ }
}