diff options
Diffstat (limited to 'core')
9 files changed, 24 insertions, 121 deletions
diff --git a/core/java/android/text/style/CorrectionSpan.java b/core/java/android/text/style/CorrectionSpan.java index 6142e6f..43fb85d 100644 --- a/core/java/android/text/style/CorrectionSpan.java +++ b/core/java/android/text/style/CorrectionSpan.java @@ -22,23 +22,21 @@ import android.os.Parcelable; import android.text.ParcelableSpan; import android.text.TextUtils; -import java.util.ArrayList; -import java.util.List; +import java.util.Arrays; import java.util.Locale; +/** + * Sets correction candidates of words under this span. + */ public class CorrectionSpan implements ParcelableSpan { /** - * Flag for the default value. - */ - public static final int FLAG_DEFAULT = 0x0000; - /** * Flag for indicating that the input is verbatim. TextView refers to this flag to determine * how it displays a word with CorrectionSpan. */ public static final int FLAG_VERBATIM = 0x0001; - private static final int SUGGESTS_MAX_SIZE = 5; + private static final int SUGGESTIONS_MAX_SIZE = 5; /* * TODO: Needs to check the validity and add a feature that TextView will change @@ -48,7 +46,7 @@ public class CorrectionSpan implements ParcelableSpan { */ private final int mFlags; - private final List<CharSequence> mSuggests = new ArrayList<CharSequence>(); + private final String[] mSuggestions; private final String mLocaleString; private final String mOriginalString; /* @@ -58,35 +56,33 @@ public class CorrectionSpan implements ParcelableSpan { /** * @param context Context for the application - * @param suggests Suggests for the string under the span + * @param suggestions Suggestions for the string under the span * @param flags Additional flags indicating how this span is handled in TextView */ - public CorrectionSpan(Context context, List<CharSequence> suggests, int flags) { - this(context, null, suggests, flags, null); + public CorrectionSpan(Context context, String[] suggestions, int flags) { + this(context, null, suggestions, flags, null); } /** * @param locale Locale of the suggestions - * @param suggests Suggests for the string under the span + * @param suggestions Suggestions for the string under the span * @param flags Additional flags indicating how this span is handled in TextView */ - public CorrectionSpan(Locale locale, List<CharSequence> suggests, int flags) { - this(null, locale, suggests, flags, null); + public CorrectionSpan(Locale locale, String[] suggestions, int flags) { + this(null, locale, suggestions, flags, null); } /** * @param context Context for the application * @param locale locale Locale of the suggestions - * @param suggests suggests Suggests for the string under the span + * @param suggestions Suggestions for the string under the span * @param flags Additional flags indicating how this span is handled in TextView - * @param originalString originalString for suggests + * @param originalString originalString for suggestions */ - public CorrectionSpan(Context context, Locale locale, List<CharSequence> suggests, int flags, + public CorrectionSpan(Context context, Locale locale, String[] suggestions, int flags, String originalString) { - final int N = Math.min(SUGGESTS_MAX_SIZE, suggests.size()); - for (int i = 0; i < N; ++i) { - mSuggests.add(suggests.get(i)); - } + final int N = Math.min(SUGGESTIONS_MAX_SIZE, suggestions.length); + mSuggestions = Arrays.copyOf(suggestions, N); mFlags = flags; if (context != null && locale == null) { mLocaleString = context.getResources().getConfiguration().locale.toString(); @@ -97,7 +93,7 @@ public class CorrectionSpan implements ParcelableSpan { } public CorrectionSpan(Parcel src) { - src.readList(mSuggests, null); + mSuggestions = src.readStringArray(); mFlags = src.readInt(); mLocaleString = src.readString(); mOriginalString = src.readString(); @@ -106,8 +102,8 @@ public class CorrectionSpan implements ParcelableSpan { /** * @return suggestions */ - public List<CharSequence> getSuggests() { - return new ArrayList<CharSequence>(mSuggests); + public String[] getSuggestions() { + return Arrays.copyOf(mSuggestions, mSuggestions.length); } /** @@ -135,7 +131,7 @@ public class CorrectionSpan implements ParcelableSpan { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeList(mSuggests); + dest.writeStringArray(mSuggestions); dest.writeInt(mFlags); dest.writeString(mLocaleString); dest.writeString(mOriginalString); diff --git a/core/java/android/view/inputmethod/BaseInputConnection.java b/core/java/android/view/inputmethod/BaseInputConnection.java index b95e7c9..dd2d00d 100644 --- a/core/java/android/view/inputmethod/BaseInputConnection.java +++ b/core/java/android/view/inputmethod/BaseInputConnection.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.res.TypedArray; import android.os.Bundle; import android.os.Handler; -import android.os.IBinder; import android.os.SystemClock; import android.text.Editable; import android.text.NoCopySpan; @@ -30,7 +29,6 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.method.MetaKeyKeyListener; -import android.text.style.CorrectionSpan; import android.util.Log; import android.util.LogPrinter; import android.view.KeyCharacterMap; @@ -192,15 +190,6 @@ public class BaseInputConnection implements InputConnection { } /** - * Default implementation does nothing and returns false. - */ - @Override - public boolean setCorrectionSpan(IBinder token, CorrectionSpan correctionSpan, int start, - int end, int flags) { - return false; - } - - /** * The default implementation performs the deletion around the current * selection position of the editable text. */ @@ -655,7 +644,7 @@ public class BaseInputConnection implements InputConnection { lp.println("Composing text:"); TextUtils.dumpSpans(text, lp, " "); } - + // Position the cursor appropriately, so that after replacing the // desired range of text it will be located in the correct spot. // This allows us to deal with filters performing edits on the text diff --git a/core/java/android/view/inputmethod/InputConnection.java b/core/java/android/view/inputmethod/InputConnection.java index a8a5346..ea9e402 100644 --- a/core/java/android/view/inputmethod/InputConnection.java +++ b/core/java/android/view/inputmethod/InputConnection.java @@ -17,8 +17,6 @@ package android.view.inputmethod; import android.os.Bundle; -import android.os.IBinder; -import android.text.style.CorrectionSpan; import android.view.KeyCharacterMap; import android.view.KeyEvent; @@ -355,10 +353,4 @@ public interface InputConnection { * valid. */ public boolean performPrivateCommand(String action, Bundle data); - - /** - * Add a correction span. - */ - public boolean setCorrectionSpan(IBinder token, CorrectionSpan correctionSpan, int start, - int end, int flags); } diff --git a/core/java/android/view/inputmethod/InputConnectionWrapper.java b/core/java/android/view/inputmethod/InputConnectionWrapper.java index fee88d9..690ea85 100644 --- a/core/java/android/view/inputmethod/InputConnectionWrapper.java +++ b/core/java/android/view/inputmethod/InputConnectionWrapper.java @@ -17,8 +17,6 @@ package android.view.inputmethod; import android.os.Bundle; -import android.os.IBinder; -import android.text.style.CorrectionSpan; import android.view.KeyEvent; /** @@ -60,8 +58,7 @@ public class InputConnectionWrapper implements InputConnection { return mTarget.getCursorCapsMode(reqModes); } - public ExtractedText getExtractedText(ExtractedTextRequest request, - int flags) { + public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) { return mTarget.getExtractedText(request, flags); } @@ -128,9 +125,4 @@ public class InputConnectionWrapper implements InputConnection { public boolean performPrivateCommand(String action, Bundle data) { return mTarget.performPrivateCommand(action, data); } - - public boolean setCorrectionSpan(IBinder token, CorrectionSpan correctionSpan, int start, - int end, int flags) { - return mTarget.setCorrectionSpan(token, correctionSpan, start, end, flags); - } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index ed9dce9..baf20a1 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -8331,19 +8331,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener sLastCutOrCopyTime = SystemClock.uptimeMillis(); } - public boolean setCorrectionSpan(IBinder token, CorrectionSpan span, int start, int end, - int flags) { - if (getWindowToken() != token || !(mText instanceof Spannable)) return false; - Spannable spannable = (Spannable)mText; - CorrectionSpan[] spans = spannable.getSpans(start, end, CorrectionSpan.class); - final int N = spans.length; - for (int i = 0; i < N; ++i) { - spannable.removeSpan(spans[i]); - } - spannable.setSpan(span, start, end, flags); - return true; - } - /** * An ActionMode Callback class that is used to provide actions while in text selection mode. * diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java index 8719fde..c792d78 100644 --- a/core/java/com/android/internal/view/IInputConnectionWrapper.java +++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java @@ -18,11 +18,9 @@ package com.android.internal.view; import android.os.Bundle; import android.os.Handler; -import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.RemoteException; -import android.text.style.CorrectionSpan; import android.util.Log; import android.view.KeyEvent; import android.view.inputmethod.CompletionInfo; @@ -47,7 +45,6 @@ public class IInputConnectionWrapper extends IInputContext.Stub { private static final int DO_PERFORM_EDITOR_ACTION = 58; private static final int DO_PERFORM_CONTEXT_MENU_ACTION = 59; private static final int DO_SET_COMPOSING_TEXT = 60; - private static final int DO_SET_SECURE_CORRECTION_SPAN = 61; private static final int DO_SET_COMPOSING_REGION = 63; private static final int DO_FINISH_COMPOSING_TEXT = 65; private static final int DO_SEND_KEY_EVENT = 70; @@ -178,13 +175,6 @@ public class IInputConnectionWrapper extends IInputContext.Stub { dispatchMessage(obtainMessageOO(DO_PERFORM_PRIVATE_COMMAND, action, data)); } - @Override - public void setCorrectionSpan(IBinder token, CorrectionSpan correctionSpan, int start, - int end, int flags) { - dispatchMessage(obtainMessageOOIII(DO_SET_SECURE_CORRECTION_SPAN, token, correctionSpan, - start, end, flags)); - } - void dispatchMessage(Message msg) { // If we are calling this from the main thread, then we can call // right through. Otherwise, we need to send the message to the @@ -430,17 +420,6 @@ public class IInputConnectionWrapper extends IInputContext.Stub { (Bundle)args.arg2); return; } - case DO_SET_SECURE_CORRECTION_SPAN: { - InputConnection ic = mInputConnection.get(); - if (ic == null || !isActive()) { - Log.w(TAG, "setCorrectionSpan on inactive InputConnection"); - return; - } - SomeArgs args = (SomeArgs)msg.obj; - ic.setCorrectionSpan((IBinder)args.arg1, (CorrectionSpan)args.arg2, msg.arg1, - msg.arg2, args.seq); - return; - } } Log.w(TAG, "Unhandled message code: " + msg.what); } @@ -490,12 +469,4 @@ public class IInputConnectionWrapper extends IInputContext.Stub { args.arg2 = arg2; return mH.obtainMessage(what, 0, 0, args); } - - Message obtainMessageOOIII(int what, Object arg1, Object arg2, int arg3, int arg4, int arg5) { - SomeArgs args = new SomeArgs(); - args.arg1 = arg1; - args.arg2 = arg2; - args.seq = arg5; - return mH.obtainMessage(what, arg3, arg4, args); - } } diff --git a/core/java/com/android/internal/view/IInputContext.aidl b/core/java/com/android/internal/view/IInputContext.aidl index eb20d61..719a24f 100644 --- a/core/java/com/android/internal/view/IInputContext.aidl +++ b/core/java/com/android/internal/view/IInputContext.aidl @@ -17,7 +17,6 @@ package com.android.internal.view; import android.os.Bundle; -import android.text.style.CorrectionSpan; import android.view.KeyEvent; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CorrectionInfo; @@ -74,6 +73,4 @@ import com.android.internal.view.IInputContextCallback; void getSelectedText(int flags, int seq, IInputContextCallback callback); - void setCorrectionSpan(in IBinder token, in CorrectionSpan correctionSpan, int start, - int end, int flags); } diff --git a/core/java/com/android/internal/view/InputConnectionWrapper.java b/core/java/com/android/internal/view/InputConnectionWrapper.java index efe315f..a235d9a 100644 --- a/core/java/com/android/internal/view/InputConnectionWrapper.java +++ b/core/java/com/android/internal/view/InputConnectionWrapper.java @@ -17,10 +17,8 @@ package com.android.internal.view; import android.os.Bundle; -import android.os.IBinder; import android.os.RemoteException; import android.os.SystemClock; -import android.text.style.CorrectionSpan; import android.util.Log; import android.view.KeyEvent; import android.view.inputmethod.CompletionInfo; @@ -253,7 +251,7 @@ public class InputConnectionWrapper implements InputConnection { } return value; } - + public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) { ExtractedText value = null; try { @@ -415,14 +413,4 @@ public class InputConnectionWrapper implements InputConnection { return false; } } - @Override - public boolean setCorrectionSpan(IBinder token, CorrectionSpan correctionSpan, int start, - int end, int flags) { - try { - mIInputContext.setCorrectionSpan(token, correctionSpan, start, end, flags); - return true; - } catch (RemoteException e) { - return false; - } - } } diff --git a/core/java/com/android/internal/widget/EditableInputConnection.java b/core/java/com/android/internal/widget/EditableInputConnection.java index ea82bc7..5bf6026 100644 --- a/core/java/com/android/internal/widget/EditableInputConnection.java +++ b/core/java/com/android/internal/widget/EditableInputConnection.java @@ -146,13 +146,4 @@ public class EditableInputConnection extends BaseInputConnection { return success; } - - @Override - public boolean setCorrectionSpan(IBinder token, CorrectionSpan correctionSpan, int start, - int end, int flags) { - mTextView.beginBatchEdit(); - boolean retval = mTextView.setCorrectionSpan(token, correctionSpan, start, end, flags); - mTextView.endBatchEdit(); - return retval; - } } |