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

Commit 6234b285 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

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



Change-Id: I588d66242446b249ab24df79e075a9caf056932a
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 91d08498 ea56fc68
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);
            }
        }
    }
}