diff options
author | satok <satok@google.com> | 2011-11-09 21:26:46 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-09 21:26:46 -0800 |
commit | 114c4d3843758a2a1ffb32eb2719d65cdee637f8 (patch) | |
tree | c3ff7f7838686a857149334e67a4b3d20e339c14 | |
parent | bca520a170f84c8be840e629841d0dc7d7cb273b (diff) | |
parent | b4aff97c85e730857893742f73a082f6b8d139ca (diff) | |
download | frameworks_base-114c4d3843758a2a1ffb32eb2719d65cdee637f8.zip frameworks_base-114c4d3843758a2a1ffb32eb2719d65cdee637f8.tar.gz frameworks_base-114c4d3843758a2a1ffb32eb2719d65cdee637f8.tar.bz2 |
Merge "Introduce an API to cancel pending/running spell check tasks" into ics-mr1
-rw-r--r-- | api/current.txt | 1 | ||||
-rw-r--r-- | core/java/android/view/textservice/SpellCheckerSession.java | 28 |
2 files changed, 29 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt index daf1036..f07e66b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -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); diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java index 01b114c..0eb6e27 100644 --- a/core/java/android/view/textservice/SpellCheckerSession.java +++ b/core/java/android/view/textservice/SpellCheckerSession.java @@ -146,6 +146,13 @@ public class SpellCheckerSession { } /** + * 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); } |