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

Commit 8dc35ad2 authored by Pinyao Ting's avatar Pinyao Ting
Browse files

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
parent 86b0c6ad
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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;
    }
}
+9 −2
Original line number Diff line number Diff line
@@ -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;
    }
}