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

Commit 70336f0a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix SearchUiService memory leak by removing DeathRecipient from...

Merge "Fix SearchUiService memory leak by removing DeathRecipient from CallbackWrapper" into tm-dev am: ea56fc68 am: ce977e08

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18453442



Change-Id: Ia6620f590679e94e1abd35786e71340025c874cc
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents cca6974e ce977e08
Loading
Loading
Loading
Loading
+3 −22
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static com.android.internal.util.function.pooled.PooledLambda.obtainMessa
import android.annotation.CallSuper;
import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.Service;
import android.app.search.ISearchCallback;
@@ -88,7 +87,7 @@ public abstract class SearchUiService extends Service {
            mHandler.sendMessage(
                    obtainMessage(SearchUiService::onQuery,
                            SearchUiService.this, sessionId, input,
                            new CallbackWrapper(callback, null)));
                            new CallbackWrapper(callback)));
        }

        @Override
@@ -173,21 +172,12 @@ public abstract class SearchUiService extends Service {
    @MainThread
    public abstract void onDestroy(@NonNull SearchSessionId sessionId);

    private static final class CallbackWrapper implements Consumer<List<SearchTarget>>,
            IBinder.DeathRecipient {
    private static final class CallbackWrapper implements Consumer<List<SearchTarget>> {

        private ISearchCallback mCallback;
        private final Consumer<CallbackWrapper> mOnBinderDied;

        CallbackWrapper(ISearchCallback callback,
                @Nullable Consumer<CallbackWrapper> onBinderDied) {
        CallbackWrapper(ISearchCallback callback) {
            mCallback = callback;
            mOnBinderDied = onBinderDied;
            try {
                mCallback.asBinder().linkToDeath(this, 0);
            } catch (RemoteException e) {
                Slog.e(TAG, "Failed to link to death: " + e);
            }
        }

        @Override
@@ -203,14 +193,5 @@ public abstract class SearchUiService extends Service {
                Slog.e(TAG, "Error sending result:" + e);
            }
        }

        @Override
        public void binderDied() {
            mCallback.asBinder().unlinkToDeath(this, 0);
            mCallback = null;
            if (mOnBinderDied != null) {
                mOnBinderDied.accept(this);
            }
        }
    }
}