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

Commit bca85a0d authored by android-build-team Robot's avatar android-build-team Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix a race in spell checker session handling" into pi-dev

parents e09cde0c 73ac947f
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.function.Predicate;

public class TextServicesManagerService extends ITextServicesManager.Stub {
    private static final String TAG = TextServicesManagerService.class.getSimpleName();
@@ -885,6 +886,11 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
            }
            synchronized (mLock) {
                mListeners.unregister(listener);
                final IBinder scListenerBinder = listener.asBinder();
                final Predicate<SessionRequest> removeCondition =
                        request -> request.mScListener.asBinder() == scListenerBinder;
                mPendingSessionRequests.removeIf(removeCondition);
                mOnGoingSessionRequests.removeIf(removeCondition);
                cleanLocked();
            }
        }
@@ -934,6 +940,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
            if (mUnbindCalled) {
                return;
            }
            mListeners.register(request.mScListener);
            if (!mConnected) {
                mPendingSessionRequests.add(request);
                return;
@@ -959,7 +966,6 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
                if (mOnGoingSessionRequests.remove(request)) {
                    try {
                        request.mTsListener.onServiceConnected(newSession);
                        mListeners.register(request.mScListener);
                    } catch (RemoteException e) {
                        // Technically this can happen if the spell checker client app is already
                        // dead.  We can just forget about this request; the request is already