diff --git a/core/java/android/inputmethodservice/AbstractInputMethodService.java b/core/java/android/inputmethodservice/AbstractInputMethodService.java index 17d4ae6205caa..b359465c4738d 100644 --- a/core/java/android/inputmethodservice/AbstractInputMethodService.java +++ b/core/java/android/inputmethodservice/AbstractInputMethodService.java @@ -223,7 +223,7 @@ public abstract class AbstractInputMethodService extends WindowProviderService * @hide */ @SuppressWarnings("HiddenAbstractMethod") - public abstract void dumpProtoInternal(ProtoOutputStream proto, ProtoOutputStream icProto); + public abstract void dumpProtoInternal(ProtoOutputStream proto, @Nullable byte[] icProto); /** * Implement this to handle {@link android.os.Binder#dump Binder.dump()} diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 6e4491eb01887..e0b001f5ed192 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -3415,7 +3415,7 @@ public class InputMethodService extends AbstractInputMethodService { * @hide */ @Override - public final void dumpProtoInternal(ProtoOutputStream proto, ProtoOutputStream icProto) { + public final void dumpProtoInternal(ProtoOutputStream proto, byte[] icProto) { final long token = proto.start(InputMethodServiceTraceProto.INPUT_METHOD_SERVICE); mWindow.dumpDebug(proto, SOFT_INPUT_WINDOW); proto.write(VIEWS_CREATED, mViewsCreated); @@ -3445,7 +3445,7 @@ public class InputMethodService extends AbstractInputMethodService { mTmpInsets.dumpDebug(proto, LAST_COMPUTED_INSETS); proto.write(SETTINGS_OBSERVER, Objects.toString(mSettingsObserver)); if (icProto != null) { - proto.write(INPUT_CONNECTION_CALL, icProto.getBytes()); + proto.write(INPUT_CONNECTION_CALL, icProto); } proto.end(token); } diff --git a/core/java/android/inputmethodservice/RemoteInputConnection.java b/core/java/android/inputmethodservice/RemoteInputConnection.java index 752b780b220b1..98a49ccb27d80 100644 --- a/core/java/android/inputmethodservice/RemoteInputConnection.java +++ b/core/java/android/inputmethodservice/RemoteInputConnection.java @@ -22,7 +22,6 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Bundle; import android.os.Handler; -import android.util.proto.ProtoOutputStream; import android.view.KeyEvent; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CorrectionInfo; @@ -93,8 +92,8 @@ final class RemoteInputConnection implements InputConnection { final AbstractInputMethodService inputMethodService = mInputMethodService.get(); if (inputMethodService != null && ImeTracing.getInstance().isEnabled()) { - ProtoOutputStream icProto = InputConnectionProtoDumper.buildGetTextAfterCursorProto( - length, flags, result); + final byte[] icProto = InputConnectionProtoDumper.buildGetTextAfterCursorProto(length, + flags, result); ImeTracing.getInstance().triggerServiceDump(TAG + "#getTextAfterCursor", inputMethodService, icProto); } @@ -118,8 +117,8 @@ final class RemoteInputConnection implements InputConnection { final AbstractInputMethodService inputMethodService = mInputMethodService.get(); if (inputMethodService != null && ImeTracing.getInstance().isEnabled()) { - ProtoOutputStream icProto = InputConnectionProtoDumper.buildGetTextBeforeCursorProto( - length, flags, result); + final byte[] icProto = InputConnectionProtoDumper.buildGetTextBeforeCursorProto(length, + flags, result); ImeTracing.getInstance().triggerServiceDump(TAG + "#getTextBeforeCursor", inputMethodService, icProto); } @@ -143,7 +142,7 @@ final class RemoteInputConnection implements InputConnection { final AbstractInputMethodService inputMethodService = mInputMethodService.get(); if (inputMethodService != null && ImeTracing.getInstance().isEnabled()) { - ProtoOutputStream icProto = InputConnectionProtoDumper.buildGetSelectedTextProto(flags, + final byte[] icProto = InputConnectionProtoDumper.buildGetSelectedTextProto(flags, result); ImeTracing.getInstance().triggerServiceDump(TAG + "#getSelectedText", inputMethodService, icProto); @@ -182,7 +181,7 @@ final class RemoteInputConnection implements InputConnection { final AbstractInputMethodService inputMethodService = mInputMethodService.get(); if (inputMethodService != null && ImeTracing.getInstance().isEnabled()) { - ProtoOutputStream icProto = InputConnectionProtoDumper.buildGetSurroundingTextProto( + final byte[] icProto = InputConnectionProtoDumper.buildGetSurroundingTextProto( beforeLength, afterLength, flags, result); ImeTracing.getInstance().triggerServiceDump(TAG + "#getSurroundingText", inputMethodService, icProto); @@ -203,7 +202,7 @@ final class RemoteInputConnection implements InputConnection { final AbstractInputMethodService inputMethodService = mInputMethodService.get(); if (inputMethodService != null && ImeTracing.getInstance().isEnabled()) { - ProtoOutputStream icProto = InputConnectionProtoDumper.buildGetCursorCapsModeProto( + final byte[] icProto = InputConnectionProtoDumper.buildGetCursorCapsModeProto( reqModes, result); ImeTracing.getInstance().triggerServiceDump(TAG + "#getCursorCapsMode", inputMethodService, icProto); @@ -224,7 +223,7 @@ final class RemoteInputConnection implements InputConnection { final AbstractInputMethodService inputMethodService = mInputMethodService.get(); if (inputMethodService != null && ImeTracing.getInstance().isEnabled()) { - ProtoOutputStream icProto = InputConnectionProtoDumper.buildGetExtractedTextProto( + final byte[] icProto = InputConnectionProtoDumper.buildGetExtractedTextProto( request, flags, result); ImeTracing.getInstance().triggerServiceDump(TAG + "#getExtractedText", inputMethodService, icProto); diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 625ede2f98d88..110bd33ffeef3 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -3210,7 +3210,7 @@ public final class InputMethodManager { * @hide */ @GuardedBy("mH") - public void dumpDebug(ProtoOutputStream proto, ProtoOutputStream icProto) { + public void dumpDebug(ProtoOutputStream proto, @Nullable byte[] icProto) { if (mCurrentInputMethodSession == null) { return; } @@ -3236,7 +3236,7 @@ public final class InputMethodManager { mServedInputConnectionWrapper.dumpDebug(proto, INPUT_CONNECTION); } if (icProto != null) { - proto.write(INPUT_CONNECTION_CALL, icProto.getBytes()); + proto.write(INPUT_CONNECTION_CALL, icProto); } } } diff --git a/core/java/com/android/internal/inputmethod/ImeTracing.java b/core/java/com/android/internal/inputmethod/ImeTracing.java index 840e270baabae..a95f7560c7c87 100644 --- a/core/java/com/android/internal/inputmethod/ImeTracing.java +++ b/core/java/com/android/internal/inputmethod/ImeTracing.java @@ -104,7 +104,7 @@ public abstract class ImeTracing { * @param icProto {@link android.view.inputmethod.InputConnection} call data in proto format. */ public abstract void triggerClientDump(String where, InputMethodManager immInstance, - ProtoOutputStream icProto); + @Nullable byte[] icProto); /** * Starts a proto dump of the currently connected InputMethodService information. @@ -114,7 +114,7 @@ public abstract class ImeTracing { * @param icProto {@link android.view.inputmethod.InputConnection} call data in proto format. */ public abstract void triggerServiceDump(String where, AbstractInputMethodService service, - ProtoOutputStream icProto); + @Nullable byte[] icProto); /** * Starts a proto dump of the InputMethodManagerService information. diff --git a/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java b/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java index 632e1d3b900a8..91ce5e762ec1a 100644 --- a/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java +++ b/core/java/com/android/internal/inputmethod/ImeTracingClientImpl.java @@ -17,6 +17,7 @@ package com.android.internal.inputmethod; import android.annotation.NonNull; +import android.annotation.Nullable; import android.inputmethodservice.AbstractInputMethodService; import android.os.RemoteException; import android.os.ServiceManager.ServiceNotFoundException; @@ -40,7 +41,7 @@ class ImeTracingClientImpl extends ImeTracing { @Override public void triggerClientDump(String where, @NonNull InputMethodManager immInstance, - ProtoOutputStream icProto) { + @Nullable byte[] icProto) { if (!isEnabled() || !isAvailable()) { return; } @@ -65,7 +66,7 @@ class ImeTracingClientImpl extends ImeTracing { @Override public void triggerServiceDump(String where, @NonNull AbstractInputMethodService service, - ProtoOutputStream icProto) { + @Nullable byte[] icProto) { if (!isEnabled() || !isAvailable()) { return; } diff --git a/core/java/com/android/internal/inputmethod/ImeTracingServerImpl.java b/core/java/com/android/internal/inputmethod/ImeTracingServerImpl.java index 57d03f07e1ab2..b5aa91adaea94 100644 --- a/core/java/com/android/internal/inputmethod/ImeTracingServerImpl.java +++ b/core/java/com/android/internal/inputmethod/ImeTracingServerImpl.java @@ -107,13 +107,13 @@ class ImeTracingServerImpl extends ImeTracing { @Override public void triggerClientDump(String where, InputMethodManager immInstance, - ProtoOutputStream icProto) { + @Nullable byte[] icProto) { // Intentionally left empty, this is implemented in ImeTracingClientImpl } @Override public void triggerServiceDump(String where, AbstractInputMethodService service, - ProtoOutputStream icProto) { + @Nullable byte[] icProto) { // Intentionally left empty, this is implemented in ImeTracingClientImpl } diff --git a/core/java/com/android/internal/inputmethod/InputConnectionProtoDumper.java b/core/java/com/android/internal/inputmethod/InputConnectionProtoDumper.java index 213337a81933a..7172d0a419095 100644 --- a/core/java/com/android/internal/inputmethod/InputConnectionProtoDumper.java +++ b/core/java/com/android/internal/inputmethod/InputConnectionProtoDumper.java @@ -58,10 +58,11 @@ public final class InputConnectionProtoDumper { * {@link android.view.inputmethod.InputConnection#GET_TEXT_WITH_STYLES}. * @param result The text after the cursor position; the length of the * returned text might be less than length. - * @return ProtoOutputStream holding the InputConnectionCallProto data. + * @return Byte-array holding the InputConnectionCallProto data. */ - public static ProtoOutputStream buildGetTextAfterCursorProto(@IntRange(from = 0) int length, - int flags, @Nullable CharSequence result) { + @NonNull + public static byte[] buildGetTextAfterCursorProto(@IntRange(from = 0) int length, int flags, + @Nullable CharSequence result) { ProtoOutputStream proto = new ProtoOutputStream(); final long token = proto.start(GET_TEXT_AFTER_CURSOR); proto.write(GetTextAfterCursor.LENGTH, length); @@ -72,7 +73,7 @@ public final class InputConnectionProtoDumper { proto.write(GetTextAfterCursor.RESULT, result.toString()); } proto.end(token); - return proto; + return proto.getBytes(); } /** @@ -85,9 +86,10 @@ public final class InputConnectionProtoDumper { * {@link android.view.inputmethod.InputConnection#GET_TEXT_WITH_STYLES}. * @param result The text before the cursor position; the length of the * returned text might be less than length. - * @return ProtoOutputStream holding the InputConnectionCallProto data. + * @return Byte-array holding the InputConnectionCallProto data. */ - public static ProtoOutputStream buildGetTextBeforeCursorProto(@IntRange(from = 0) int length, + @NonNull + public static byte[] buildGetTextBeforeCursorProto(@IntRange(from = 0) int length, int flags, @Nullable CharSequence result) { ProtoOutputStream proto = new ProtoOutputStream(); final long token = proto.start(GET_TEXT_BEFORE_CURSOR); @@ -99,7 +101,7 @@ public final class InputConnectionProtoDumper { proto.write(GetTextBeforeCursor.RESULT, result.toString()); } proto.end(token); - return proto; + return proto.getBytes(); } /** @@ -113,10 +115,10 @@ public final class InputConnectionProtoDumper { * no text is selected. In {@link android.os.Build.VERSION_CODES#N} and * later, returns false when the target application does not implement * this method. - * @return ProtoOutputStream holding the InputConnectionCallProto data. + * @return Byte-array holding the InputConnectionCallProto data. */ - public static ProtoOutputStream buildGetSelectedTextProto(int flags, - @Nullable CharSequence result) { + @NonNull + public static byte[] buildGetSelectedTextProto(int flags, @Nullable CharSequence result) { ProtoOutputStream proto = new ProtoOutputStream(); final long token = proto.start(GET_SELECTED_TEXT); proto.write(GetSelectedText.FLAGS, flags); @@ -126,7 +128,7 @@ public final class InputConnectionProtoDumper { proto.write(GetSelectedText.RESULT, result.toString()); } proto.end(token); - return proto; + return proto.getBytes(); } /** @@ -143,11 +145,11 @@ public final class InputConnectionProtoDumper { * or the editor can't comply with the request for some reason, or the application does not * implement this method. The length of the returned text might be less than the sum of * beforeLength and afterLength . - * @return ProtoOutputStream holding the InputConnectionCallProto data. + * @return Byte-array holding the InputConnectionCallProto data. */ - public static ProtoOutputStream buildGetSurroundingTextProto(@IntRange(from = 0) - int beforeLength, @IntRange(from = 0) int afterLength, int flags, - @Nullable SurroundingText result) { + @NonNull + public static byte[] buildGetSurroundingTextProto(@IntRange(from = 0) int beforeLength, + @IntRange(from = 0) int afterLength, int flags, @Nullable SurroundingText result) { ProtoOutputStream proto = new ProtoOutputStream(); final long token = proto.start(GET_SURROUNDING_TEXT); proto.write(GetSurroundingText.BEFORE_LENGTH, beforeLength); @@ -168,7 +170,7 @@ public final class InputConnectionProtoDumper { proto.end(token_result); } proto.end(token); - return proto; + return proto.getBytes(); } /** @@ -179,9 +181,10 @@ public final class InputConnectionProtoDumper { * {@link android.text.TextUtils#getCapsMode TextUtils.getCapsMode}. * @param result the caps mode flags that are in effect at the current * cursor position. See TYPE_TEXT_FLAG_CAPS_* in {@link android.text.InputType}. - * @return ProtoOutputStream holding the InputConnectionCallProto data. + * @return Byte-array holding the InputConnectionCallProto data. */ - public static ProtoOutputStream buildGetCursorCapsModeProto(int reqModes, int result) { + @NonNull + public static byte[] buildGetCursorCapsModeProto(int reqModes, int result) { ProtoOutputStream proto = new ProtoOutputStream(); final long token = proto.start(GET_CURSOR_CAPS_MODE); proto.write(GetCursorCapsMode.REQ_MODES, reqModes); @@ -189,7 +192,7 @@ public final class InputConnectionProtoDumper { proto.write(GetCursorCapsMode.RESULT, result); } proto.end(token); - return proto; + return proto.getBytes(); } /** @@ -206,9 +209,10 @@ public final class InputConnectionProtoDumper { * extracted text itself, or null if the input connection is no * longer valid of the editor can't comply with the request for * some reason. - * @return ProtoOutputStream holding the InputConnectionCallProto data. + * @return Byte-array holding the InputConnectionCallProto data. */ - public static ProtoOutputStream buildGetExtractedTextProto(@NonNull ExtractedTextRequest + @NonNull + public static byte[] buildGetExtractedTextProto(@NonNull ExtractedTextRequest request, int flags, @Nullable ExtractedText result) { ProtoOutputStream proto = new ProtoOutputStream(); final long token = proto.start(GET_EXTRACTED_TEXT); @@ -225,6 +229,6 @@ public final class InputConnectionProtoDumper { proto.write(GetExtractedText.RESULT, result.text.toString()); } proto.end(token); - return proto; + return proto.getBytes(); } } diff --git a/core/java/com/android/internal/view/IInputConnectionWrapper.java b/core/java/com/android/internal/view/IInputConnectionWrapper.java index 1f18bb2b06a27..6d1b4cb2d49f9 100644 --- a/core/java/com/android/internal/view/IInputConnectionWrapper.java +++ b/core/java/com/android/internal/view/IInputConnectionWrapper.java @@ -350,7 +350,7 @@ public final class IInputConnectionWrapper extends IInputContext.Stub { } void executeMessage(Message msg) { - ProtoOutputStream icProto; + byte[] icProto; switch (msg.what) { case DO_GET_TEXT_AFTER_CURSOR: { Trace.traceBegin(Trace.TRACE_TAG_INPUT, "InputConnection#getTextAfterCursor");