Merge "Introduce an API to cancel pending/running spell check tasks" into ics-mr1
This commit is contained in:
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user