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

This commit is contained in:
satok
2011-11-09 21:26:46 -08:00
committed by Android (Google) Code Review
2 changed files with 29 additions and 0 deletions

View File

@ -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);

View File

@ -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);
}