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

Commit 114c4d38 authored by satok's avatar satok Committed by Android (Google) Code Review
Browse files

Merge "Introduce an API to cancel pending/running spell check tasks" into ics-mr1

parents bca520a1 b4aff97c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -24830,6 +24830,7 @@ package android.view.textservice {
  }
  public class SpellCheckerSession {
    method public void cancel();
    method public void close();
    method public android.view.textservice.SpellCheckerInfo getSpellChecker();
    method public void getSuggestions(android.view.textservice.TextInfo, int);
+28 −0
Original line number Diff line number Diff line
@@ -145,6 +145,13 @@ public class SpellCheckerSession {
        return mSpellCheckerInfo;
    }

    /**
     * Cancel pending and running spell check tasks
     */
    public void cancel() {
        mSpellCheckerSessionListenerImpl.cancel();
    }

    /**
     * Finish this session and allow TextServicesManagerService to disconnect the bound spell
     * checker.
@@ -242,6 +249,13 @@ public class SpellCheckerSession {
            }
        }

        public void cancel() {
            if (DBG) {
                Log.w(TAG, "cancel");
            }
            processOrEnqueueTask(new SpellCheckerParams(TASK_CANCEL, null, 0, false));
        }

        public void getSuggestionsMultiple(
                TextInfo[] textInfos, int suggestionsLimit, boolean sequentialWords) {
            if (DBG) {
@@ -275,8 +289,22 @@ public class SpellCheckerSession {
            if (DBG) {
                Log.d(TAG, "process or enqueue task: " + mISpellCheckerSession);
            }
            SpellCheckerParams closeTask = null;
            if (mISpellCheckerSession == null) {
                if (scp.mWhat == TASK_CANCEL) {
                    while (!mPendingTasks.isEmpty()) {
                        final SpellCheckerParams tmp = mPendingTasks.poll();
                        if (tmp.mWhat == TASK_CLOSE) {
                            // Only one close task should be processed, while we need to remove all
                            // close tasks from the queue
                            closeTask = tmp;
                        }
                    }
                }
                mPendingTasks.offer(scp);
                if (closeTask != null) {
                    mPendingTasks.offer(closeTask);
                }
            } else {
                processTask(scp);
            }