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

* commit '114c4d3843758a2a1ffb32eb2719d65cdee637f8':
  Introduce an API to cancel pending/running spell check tasks
This commit is contained in:
satok
2011-11-10 05:28:47 +00:00
committed by Android Git Automerger
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);
}