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

Commit 9ef17527 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: f4aa226b am: 85284c84

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



Change-Id: If2c9695af85701303605f0667f16fae3d9bde378
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 218a9a7a 85284c84
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);
            }
        }
    }
}