diff options
| -rw-r--r-- | core/api/current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 1 | ||||
| -rw-r--r-- | core/java/android/view/inputmethod/EditorInfo.java | 37 | ||||
| -rw-r--r-- | core/java/android/view/inputmethod/flags.aconfig | 8 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java | 7 |
5 files changed, 55 insertions, 0 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index d8e3abfcc33d..46be07f5f5b1 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -55022,10 +55022,12 @@ package android.view.inputmethod { method public int getInitialToolType(); method @NonNull public java.util.Set<java.lang.Class<? extends android.view.inputmethod.PreviewableHandwritingGesture>> getSupportedHandwritingGesturePreviews(); method @NonNull public java.util.List<java.lang.Class<? extends android.view.inputmethod.HandwritingGesture>> getSupportedHandwritingGestures(); + method @FlaggedApi("android.view.inputmethod.editorinfo_handwriting_enabled") public boolean isStylusHandwritingEnabled(); method public final void makeCompatible(int); method public void setInitialSurroundingSubText(@NonNull CharSequence, int); method public void setInitialSurroundingText(@NonNull CharSequence); method public void setInitialToolType(int); + method @FlaggedApi("android.view.inputmethod.editorinfo_handwriting_enabled") public void setStylusHandwritingEnabled(boolean); method public void setSupportedHandwritingGesturePreviews(@NonNull java.util.Set<java.lang.Class<? extends android.view.inputmethod.PreviewableHandwritingGesture>>); method public void setSupportedHandwritingGestures(@NonNull java.util.List<java.lang.Class<? extends android.view.inputmethod.HandwritingGesture>>); method public void writeToParcel(android.os.Parcel, int); diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 55374b994cd4..04421f517912 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -32618,6 +32618,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @see android.view.inputmethod.InputMethodManager#startStylusHandwriting(View) * @param enabled whether auto handwriting initiation is enabled for this view. * @attr ref android.R.styleable#View_autoHandwritingEnabled + * @see EditorInfo#setStylusHandwritingEnabled(boolean) */ public void setAutoHandwritingEnabled(boolean enabled) { if (enabled) { diff --git a/core/java/android/view/inputmethod/EditorInfo.java b/core/java/android/view/inputmethod/EditorInfo.java index 4e5cec7b777d..a92420a2f373 100644 --- a/core/java/android/view/inputmethod/EditorInfo.java +++ b/core/java/android/view/inputmethod/EditorInfo.java @@ -23,7 +23,9 @@ import static android.view.inputmethod.EditorInfoProto.INPUT_TYPE; import static android.view.inputmethod.EditorInfoProto.PACKAGE_NAME; import static android.view.inputmethod.EditorInfoProto.PRIVATE_IME_OPTIONS; import static android.view.inputmethod.EditorInfoProto.TARGET_INPUT_METHOD_USER_ID; +import static android.view.inputmethod.Flags.FLAG_EDITORINFO_HANDWRITING_ENABLED; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; @@ -45,6 +47,7 @@ import android.view.MotionEvent; import android.view.MotionEvent.ToolType; import android.view.View; import android.view.autofill.AutofillId; +import android.widget.Editor; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.inputmethod.InputMethodDebug; @@ -716,6 +719,33 @@ public class EditorInfo implements InputType, Parcelable { return set; } + private boolean mIsStylusHandwritingEnabled; + + /** + * Set {@code true} if the {@link Editor} has + * {@link InputMethodManager#startStylusHandwriting stylus handwriting} enabled. + * {@code false} by default, {@link Editor} must set it {@code true} to indicate that + * it supports stylus handwriting. + * + * @param enabled {@code true} if stylus handwriting is enabled. + * @see View#setAutoHandwritingEnabled(boolean) + */ + @FlaggedApi(FLAG_EDITORINFO_HANDWRITING_ENABLED) + public void setStylusHandwritingEnabled(boolean enabled) { + mIsStylusHandwritingEnabled = enabled; + } + + /** + * Returns {@code true} when an {@link Editor} has stylus handwriting enabled. + * {@code false} by default. + * @see #setStylusHandwritingEnabled(boolean) + * @see InputMethodManager#isStylusHandwritingAvailable() + */ + @FlaggedApi(FLAG_EDITORINFO_HANDWRITING_ENABLED) + public boolean isStylusHandwritingEnabled() { + return mIsStylusHandwritingEnabled; + } + /** * If not {@code null}, this editor needs to talk to IMEs that run for the specified user, no * matter what user ID the calling process has. @@ -1211,6 +1241,7 @@ public class EditorInfo implements InputType, Parcelable { pw.println(prefix + "supportedHandwritingGesturePreviewTypes=" + InputMethodDebug.handwritingGestureTypeFlagsToString( mSupportedHandwritingGesturePreviewTypes)); + pw.println(prefix + "isStylusHandwritingEnabled=" + mIsStylusHandwritingEnabled); pw.println(prefix + "contentMimeTypes=" + Arrays.toString(contentMimeTypes)); if (targetInputMethodUser != null) { pw.println(prefix + "targetInputMethodUserId=" + targetInputMethodUser.getIdentifier()); @@ -1277,6 +1308,9 @@ public class EditorInfo implements InputType, Parcelable { dest.writeBundle(extras); dest.writeInt(mSupportedHandwritingGestureTypes); dest.writeInt(mSupportedHandwritingGesturePreviewTypes); + if (Flags.editorinfoHandwritingEnabled()) { + dest.writeBoolean(mIsStylusHandwritingEnabled); + } dest.writeBoolean(mInitialSurroundingText != null); if (mInitialSurroundingText != null) { mInitialSurroundingText.writeToParcel(dest, flags); @@ -1316,6 +1350,9 @@ public class EditorInfo implements InputType, Parcelable { res.extras = source.readBundle(); res.mSupportedHandwritingGestureTypes = source.readInt(); res.mSupportedHandwritingGesturePreviewTypes = source.readInt(); + if (Flags.editorinfoHandwritingEnabled()) { + res.mIsStylusHandwritingEnabled = source.readBoolean(); + } boolean hasInitialSurroundingText = source.readBoolean(); if (hasInitialSurroundingText) { res.mInitialSurroundingText = diff --git a/core/java/android/view/inputmethod/flags.aconfig b/core/java/android/view/inputmethod/flags.aconfig index c144289f1a29..c14b5104242a 100644 --- a/core/java/android/view/inputmethod/flags.aconfig +++ b/core/java/android/view/inputmethod/flags.aconfig @@ -6,4 +6,12 @@ flag { description: "Feature flag for refactoring InsetsController and removing ImeInsetsSourceConsumer" bug: "298172246" is_fixed_read_only: true +} + +flag { + name: "editorinfo_handwriting_enabled" + namespace: "input_method" + description: "Feature flag for adding EditorInfo#mStylusHandwritingEnabled" + bug: "293898187" + is_fixed_read_only: true }
\ No newline at end of file diff --git a/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java b/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java index 6e73b9fa35d5..4839dd27b283 100644 --- a/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java +++ b/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java @@ -503,6 +503,7 @@ public class EditorInfoTest { + "prefix: hintLocales=null\n" + "prefix: supportedHandwritingGestureTypes=(none)\n" + "prefix: supportedHandwritingGesturePreviewTypes=(none)\n" + + "prefix: isStylusHandwritingEnabled=false\n" + "prefix: contentMimeTypes=null\n"); } @@ -521,6 +522,9 @@ public class EditorInfoTest { info.setSupportedHandwritingGestures(Arrays.asList(SelectGesture.class)); info.setSupportedHandwritingGesturePreviews( Stream.of(SelectGesture.class).collect(Collectors.toSet())); + if (Flags.editorinfoHandwritingEnabled()) { + info.setStylusHandwritingEnabled(true); + } info.packageName = "android.view.inputmethod"; info.autofillId = new AutofillId(123); info.fieldId = 456; @@ -544,6 +548,8 @@ public class EditorInfoTest { + "prefix2: hintLocales=[en,es,zh]\n" + "prefix2: supportedHandwritingGestureTypes=SELECT\n" + "prefix2: supportedHandwritingGesturePreviewTypes=SELECT\n" + + "prefix2: isStylusHandwritingEnabled=" + + Flags.editorinfoHandwritingEnabled() + "\n" + "prefix2: contentMimeTypes=[image/png]\n" + "prefix2: targetInputMethodUserId=10\n"); } @@ -565,6 +571,7 @@ public class EditorInfoTest { + "prefix: hintLocales=null\n" + "prefix: supportedHandwritingGestureTypes=(none)\n" + "prefix: supportedHandwritingGesturePreviewTypes=(none)\n" + + "prefix: isStylusHandwritingEnabled=false\n" + "prefix: contentMimeTypes=null\n"); } |