diff --git a/api/current.txt b/api/current.txt index 8b5ea4a4df11b..fac3b2b2cd2bc 100644 --- a/api/current.txt +++ b/api/current.txt @@ -42950,6 +42950,7 @@ package android.view.inputmethod { field public int initialSelStart; field public int inputType; field public java.lang.CharSequence label; + field public android.util.LocaleList locales; field public java.lang.String packageName; field public java.lang.String privateImeOptions; } diff --git a/api/system-current.txt b/api/system-current.txt index 5135916a4211c..6e15f93bc7ea8 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -45279,6 +45279,7 @@ package android.view.inputmethod { field public int initialSelStart; field public int inputType; field public java.lang.CharSequence label; + field public android.util.LocaleList locales; field public java.lang.String packageName; field public java.lang.String privateImeOptions; } diff --git a/api/test-current.txt b/api/test-current.txt index cab03f09e3d44..fba944c494c70 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -42952,6 +42952,7 @@ package android.view.inputmethod { field public int initialSelStart; field public int inputType; field public java.lang.CharSequence label; + field public android.util.LocaleList locales; field public java.lang.String packageName; field public java.lang.String privateImeOptions; } diff --git a/core/java/android/view/inputmethod/EditorInfo.java b/core/java/android/view/inputmethod/EditorInfo.java index 6130fd58ac9ad..3ff95228f15e9 100644 --- a/core/java/android/view/inputmethod/EditorInfo.java +++ b/core/java/android/view/inputmethod/EditorInfo.java @@ -21,6 +21,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.InputType; import android.text.TextUtils; +import android.util.LocaleList; import android.util.Printer; /** @@ -339,6 +340,22 @@ public class EditorInfo implements InputType, Parcelable { */ public Bundle extras; + /** + * Additional context information that tells what languages are expected by the user. + * + *

IME authors: Possible use cases for IME developers would be:

+ * + * + *

Editor authors: Providing this context information can help IMEs to + * improve text input experience. For example, chat applications can remember what language is + * used in the last conversation for each chat session, and put the last used language at the + * top of {@link #locales}.

+ */ + public LocaleList locales = LocaleList.getEmptyLocaleList(); + /** * Ensure that the data in this EditorInfo is compatible with an application * that was developed against the given target API version. This can @@ -393,6 +410,7 @@ public class EditorInfo implements InputType, Parcelable { + " fieldId=" + fieldId + " fieldName=" + fieldName); pw.println(prefix + "extras=" + extras); + pw.println(prefix + "locales=" + locales); } /** @@ -416,6 +434,7 @@ public class EditorInfo implements InputType, Parcelable { dest.writeInt(fieldId); dest.writeString(fieldName); dest.writeBundle(extras); + locales.writeToParcel(dest, flags); } /** @@ -439,6 +458,7 @@ public class EditorInfo implements InputType, Parcelable { res.fieldId = source.readInt(); res.fieldName = source.readString(); res.extras = source.readBundle(); + res.locales = LocaleList.CREATOR.createFromParcel(source); return res; } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index d666939ba5a04..cca84ee707d55 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -6439,6 +6439,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener outAttrs.initialCapsMode = ic.getCursorCapsMode(getInputType()); return ic; } + // LocaleList is designed to be immutable. This is theoretically equivalent to copy + // the snapshot of the current text locales. + outAttrs.locales = getTextLocales(); } return null; }