Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -57000,6 +57000,7 @@ package android.view.inputmethod { 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 @FlaggedApi("android.view.inputmethod.writing_tools") public boolean isWritingToolsEnabled(); method public final void makeCompatible(int); method @FlaggedApi("android.view.inputmethod.public_autofill_id_in_editorinfo") public void setAutofillId(@Nullable android.view.autofill.AutofillId); method public void setInitialSurroundingSubText(@NonNull CharSequence, int); Loading @@ -57008,6 +57009,7 @@ package android.view.inputmethod { 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 @FlaggedApi("android.view.inputmethod.writing_tools") public void setWritingToolsEnabled(boolean); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.EditorInfo> CREATOR; field public static final int IME_ACTION_DONE = 6; // 0x6 core/java/android/view/inputmethod/EditorInfo.java +27 −1 Original line number Diff line number Diff line Loading @@ -523,7 +523,6 @@ public class EditorInfo implements InputType, Parcelable { @Nullable public LocaleList hintLocales = null; /** * List of acceptable MIME types for * {@link InputConnection#commitContent(InputContentInfo, int, Bundle)}. Loading Loading @@ -758,6 +757,30 @@ public class EditorInfo implements InputType, Parcelable { return mIsStylusHandwritingEnabled; } private boolean mWritingToolsEnabled = true; /** * Returns {@code true} when an {@code Editor} has writing tools enabled. * {@code true} by default for all editors. Toolkits can optionally disable them where not * relevant e.g. passwords, number input, etc. * @see #setWritingToolsEnabled(boolean) */ @FlaggedApi(Flags.FLAG_WRITING_TOOLS) public boolean isWritingToolsEnabled() { return mWritingToolsEnabled; } /** * Set {@code false} if {@code Editor} opts-out of writing tools, that enable IMEs to replace * text with generative AI text. * @param enabled set {@code true} to enabled or {@code false to disable} support. * @see #isWritingToolsEnabled() */ @FlaggedApi(Flags.FLAG_WRITING_TOOLS) public void setWritingToolsEnabled(boolean enabled) { mWritingToolsEnabled = enabled; } /** * 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. Loading Loading @@ -1276,6 +1299,7 @@ public class EditorInfo implements InputType, Parcelable { + InputMethodDebug.handwritingGestureTypeFlagsToString( mSupportedHandwritingGesturePreviewTypes)); pw.println(prefix + "isStylusHandwritingEnabled=" + mIsStylusHandwritingEnabled); pw.println(prefix + "writingToolsEnabled=" + mWritingToolsEnabled); pw.println(prefix + "contentMimeTypes=" + Arrays.toString(contentMimeTypes)); if (targetInputMethodUser != null) { pw.println(prefix + "targetInputMethodUserId=" + targetInputMethodUser.getIdentifier()); Loading Loading @@ -1356,6 +1380,7 @@ public class EditorInfo implements InputType, Parcelable { } dest.writeStringArray(contentMimeTypes); UserHandle.writeToParcel(targetInputMethodUser, dest); dest.writeBoolean(mWritingToolsEnabled); } /** Loading Loading @@ -1396,6 +1421,7 @@ public class EditorInfo implements InputType, Parcelable { res.hintLocales = hintLocales.isEmpty() ? null : hintLocales; res.contentMimeTypes = source.readStringArray(); res.targetInputMethodUser = UserHandle.readFromParcel(source); res.mWritingToolsEnabled = source.readBoolean(); return res; } Loading core/tests/InputMethodCoreTests/src/android/view/inputmethod/EditorInfoTest.java +12 −3 Original line number Diff line number Diff line Loading @@ -507,7 +507,8 @@ public class EditorInfoTest { + "prefix: supportedHandwritingGestureTypes=(none)\n" + "prefix: supportedHandwritingGesturePreviewTypes=(none)\n" + "prefix: isStylusHandwritingEnabled=false\n" + "prefix: contentMimeTypes=null\n"); + "prefix: contentMimeTypes=null\n" + "prefix: writingToolsEnabled=true\n"); } @Test Loading Loading @@ -539,6 +540,7 @@ public class EditorInfoTest { info.hintLocales = LocaleList.forLanguageTags("en,es,zh"); info.contentMimeTypes = new String[] {"image/png"}; info.targetInputMethodUser = UserHandle.of(10); info.setWritingToolsEnabled(false); final StringBuilder sb = new StringBuilder(); info.dump(new StringBuilderPrinter(sb), "prefix2: "); assertThat(sb.toString()).isEqualTo( Loading @@ -555,7 +557,8 @@ public class EditorInfoTest { + "prefix2: supportedHandwritingGesturePreviewTypes=SELECT\n" + "prefix2: isStylusHandwritingEnabled=" + isStylusHandwritingEnabled + "\n" + "prefix2: contentMimeTypes=[image/png]\n" + "prefix2: targetInputMethodUserId=10\n"); + "prefix2: targetInputMethodUserId=10\n" + "prefix2: writingToolsEnabled=false\n"); } @Test Loading @@ -576,7 +579,8 @@ public class EditorInfoTest { + "prefix: supportedHandwritingGestureTypes=(none)\n" + "prefix: supportedHandwritingGesturePreviewTypes=(none)\n" + "prefix: isStylusHandwritingEnabled=false\n" + "prefix: contentMimeTypes=null\n"); + "prefix: contentMimeTypes=null\n" + "prefix: writingToolsEnabled=true\n"); } @Test Loading Loading @@ -621,4 +625,9 @@ public class EditorInfoTest { infoCopy.extras.putString("testKey2", "testValue"); assertFalse(TEST_EDITOR_INFO.kindofEquals(infoCopy)); } @Test public void testWritingToolsEnabledbyDefault() { assertTrue(TEST_EDITOR_INFO.isWritingToolsEnabled()); } } Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -57000,6 +57000,7 @@ package android.view.inputmethod { 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 @FlaggedApi("android.view.inputmethod.writing_tools") public boolean isWritingToolsEnabled(); method public final void makeCompatible(int); method @FlaggedApi("android.view.inputmethod.public_autofill_id_in_editorinfo") public void setAutofillId(@Nullable android.view.autofill.AutofillId); method public void setInitialSurroundingSubText(@NonNull CharSequence, int); Loading @@ -57008,6 +57009,7 @@ package android.view.inputmethod { 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 @FlaggedApi("android.view.inputmethod.writing_tools") public void setWritingToolsEnabled(boolean); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.EditorInfo> CREATOR; field public static final int IME_ACTION_DONE = 6; // 0x6
core/java/android/view/inputmethod/EditorInfo.java +27 −1 Original line number Diff line number Diff line Loading @@ -523,7 +523,6 @@ public class EditorInfo implements InputType, Parcelable { @Nullable public LocaleList hintLocales = null; /** * List of acceptable MIME types for * {@link InputConnection#commitContent(InputContentInfo, int, Bundle)}. Loading Loading @@ -758,6 +757,30 @@ public class EditorInfo implements InputType, Parcelable { return mIsStylusHandwritingEnabled; } private boolean mWritingToolsEnabled = true; /** * Returns {@code true} when an {@code Editor} has writing tools enabled. * {@code true} by default for all editors. Toolkits can optionally disable them where not * relevant e.g. passwords, number input, etc. * @see #setWritingToolsEnabled(boolean) */ @FlaggedApi(Flags.FLAG_WRITING_TOOLS) public boolean isWritingToolsEnabled() { return mWritingToolsEnabled; } /** * Set {@code false} if {@code Editor} opts-out of writing tools, that enable IMEs to replace * text with generative AI text. * @param enabled set {@code true} to enabled or {@code false to disable} support. * @see #isWritingToolsEnabled() */ @FlaggedApi(Flags.FLAG_WRITING_TOOLS) public void setWritingToolsEnabled(boolean enabled) { mWritingToolsEnabled = enabled; } /** * 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. Loading Loading @@ -1276,6 +1299,7 @@ public class EditorInfo implements InputType, Parcelable { + InputMethodDebug.handwritingGestureTypeFlagsToString( mSupportedHandwritingGesturePreviewTypes)); pw.println(prefix + "isStylusHandwritingEnabled=" + mIsStylusHandwritingEnabled); pw.println(prefix + "writingToolsEnabled=" + mWritingToolsEnabled); pw.println(prefix + "contentMimeTypes=" + Arrays.toString(contentMimeTypes)); if (targetInputMethodUser != null) { pw.println(prefix + "targetInputMethodUserId=" + targetInputMethodUser.getIdentifier()); Loading Loading @@ -1356,6 +1380,7 @@ public class EditorInfo implements InputType, Parcelable { } dest.writeStringArray(contentMimeTypes); UserHandle.writeToParcel(targetInputMethodUser, dest); dest.writeBoolean(mWritingToolsEnabled); } /** Loading Loading @@ -1396,6 +1421,7 @@ public class EditorInfo implements InputType, Parcelable { res.hintLocales = hintLocales.isEmpty() ? null : hintLocales; res.contentMimeTypes = source.readStringArray(); res.targetInputMethodUser = UserHandle.readFromParcel(source); res.mWritingToolsEnabled = source.readBoolean(); return res; } Loading
core/tests/InputMethodCoreTests/src/android/view/inputmethod/EditorInfoTest.java +12 −3 Original line number Diff line number Diff line Loading @@ -507,7 +507,8 @@ public class EditorInfoTest { + "prefix: supportedHandwritingGestureTypes=(none)\n" + "prefix: supportedHandwritingGesturePreviewTypes=(none)\n" + "prefix: isStylusHandwritingEnabled=false\n" + "prefix: contentMimeTypes=null\n"); + "prefix: contentMimeTypes=null\n" + "prefix: writingToolsEnabled=true\n"); } @Test Loading Loading @@ -539,6 +540,7 @@ public class EditorInfoTest { info.hintLocales = LocaleList.forLanguageTags("en,es,zh"); info.contentMimeTypes = new String[] {"image/png"}; info.targetInputMethodUser = UserHandle.of(10); info.setWritingToolsEnabled(false); final StringBuilder sb = new StringBuilder(); info.dump(new StringBuilderPrinter(sb), "prefix2: "); assertThat(sb.toString()).isEqualTo( Loading @@ -555,7 +557,8 @@ public class EditorInfoTest { + "prefix2: supportedHandwritingGesturePreviewTypes=SELECT\n" + "prefix2: isStylusHandwritingEnabled=" + isStylusHandwritingEnabled + "\n" + "prefix2: contentMimeTypes=[image/png]\n" + "prefix2: targetInputMethodUserId=10\n"); + "prefix2: targetInputMethodUserId=10\n" + "prefix2: writingToolsEnabled=false\n"); } @Test Loading @@ -576,7 +579,8 @@ public class EditorInfoTest { + "prefix: supportedHandwritingGestureTypes=(none)\n" + "prefix: supportedHandwritingGesturePreviewTypes=(none)\n" + "prefix: isStylusHandwritingEnabled=false\n" + "prefix: contentMimeTypes=null\n"); + "prefix: contentMimeTypes=null\n" + "prefix: writingToolsEnabled=true\n"); } @Test Loading Loading @@ -621,4 +625,9 @@ public class EditorInfoTest { infoCopy.extras.putString("testKey2", "testValue"); assertFalse(TEST_EDITOR_INFO.kindofEquals(infoCopy)); } @Test public void testWritingToolsEnabledbyDefault() { assertTrue(TEST_EDITOR_INFO.isWritingToolsEnabled()); } }