Merge "TestApi for easy HandwritingGesture serial/deserialization"

This commit is contained in:
Taran Singh
2023-01-13 18:34:22 +00:00
committed by Android (Google) Code Review
2 changed files with 57 additions and 0 deletions

View File

@@ -3326,7 +3326,9 @@ package android.view.displayhash {
package android.view.inputmethod {
public abstract class HandwritingGesture {
method @NonNull public static android.view.inputmethod.HandwritingGesture fromByteArray(@NonNull byte[]);
method public final int getGestureType();
method @NonNull public final byte[] toByteArray();
field public static final int GESTURE_TYPE_DELETE = 4; // 0x4
field public static final int GESTURE_TYPE_DELETE_RANGE = 64; // 0x40
field public static final int GESTURE_TYPE_INSERT = 2; // 0x2

View File

@@ -17,10 +17,13 @@
package android.view.inputmethod;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.graphics.RectF;
import android.inputmethodservice.InputMethodService;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.MotionEvent;
import java.lang.annotation.Retention;
@@ -198,4 +201,56 @@ public abstract class HandwritingGesture {
public final String getFallbackText() {
return mFallbackText;
}
/**
* Dump data into a byte array so that you can pass the data across process boundary.
*
* @return byte array data.
* @see #fromByteArray(byte[])
* @hide
*/
@TestApi
@NonNull
public final byte[] toByteArray() {
if (!(this instanceof Parcelable)) {
throw new UnsupportedOperationException(getClass() + " is not Parcelable");
}
final Parcelable self = (Parcelable) this;
if ((self.describeContents() & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) {
throw new UnsupportedOperationException("Gesture that contains FD is not supported");
}
Parcel parcel = null;
try {
parcel = Parcel.obtain();
ParcelableHandwritingGesture.of(this).writeToParcel(parcel, 0);
return parcel.marshall();
} finally {
if (parcel != null) {
parcel.recycle();
}
}
}
/**
* Create a new instance from byte array obtained from {@link #toByteArray()}.
*
* @param buffer byte array obtained from {@link #toByteArray()}
* @return A new instance of {@link HandwritingGesture} subclass.
* @hide
*/
@TestApi
@NonNull
public static HandwritingGesture fromByteArray(@NonNull byte[] buffer) {
Parcel parcel = null;
try {
parcel = Parcel.obtain();
parcel.unmarshall(buffer, 0, buffer.length);
parcel.setDataPosition(0);
return ParcelableHandwritingGesture.CREATOR.createFromParcel(parcel).get();
} finally {
if (parcel != null) {
parcel.recycle();
}
}
}
}