diff options
| author | 2023-10-26 11:58:26 +0900 | |
|---|---|---|
| committer | 2023-10-31 08:55:11 +0900 | |
| commit | e84e04b4f696573aa09089c8bde692a623394fc9 (patch) | |
| tree | 0699342734f14257abffdc4a06b90f05751b143c /graphics/java/android | |
| parent | b7a1e303b3af0f76b6981adb995deb7398faede8 (diff) | |
Make LineBreakConfig and its span parcelable
To be able to use it in remote views, make LineBreakConfigSpan
ParcelableSpan.
Also, to be able to LineBreakConfigSpan parcelable, it need to be
final class. Due to this change, NoBreakSpan and NoHyphantionSpan is
no longer possible. So, changed them to a create methods.
Bug: 307666854
Test: atest CtsTextTestCases
Change-Id: Ifbf5a264d61c47a79ccb48a673f853f355e17c61
Diffstat (limited to 'graphics/java/android')
| -rw-r--r-- | graphics/java/android/graphics/text/LineBreakConfig.java | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/graphics/java/android/graphics/text/LineBreakConfig.java b/graphics/java/android/graphics/text/LineBreakConfig.java index 621958562b94..c5e451a5ec3a 100644 --- a/graphics/java/android/graphics/text/LineBreakConfig.java +++ b/graphics/java/android/graphics/text/LineBreakConfig.java @@ -28,6 +28,8 @@ import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledSince; import android.os.Build; import android.os.LocaleList; +import android.os.Parcel; +import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -40,7 +42,7 @@ import java.util.Objects; * <a href="https://www.w3.org/TR/css-text-3/#line-break-property" class="external"> * line-break property</a> for more information. */ -public final class LineBreakConfig { +public final class LineBreakConfig implements Parcelable { /** * A feature ID for automatic line break word style. @@ -161,12 +163,12 @@ public final class LineBreakConfig { * * This is useful when you want to preserve some words in the same line by using * {@link android.text.style.LineBreakConfigSpan} or - * {@link android.text.style.LineBreakConfigSpan.NoBreakSpan} as a shorthand. + * {@link android.text.style.LineBreakConfigSpan#createNoBreakSpan()} as a shorthand. * Note that even if this style is specified, the grapheme based line break is still performed * for preventing clipping text. * * @see android.text.style.LineBreakConfigSpan - * @see android.text.style.LineBreakConfigSpan.NoBreakSpan + * @see android.text.style.LineBreakConfigSpan#createNoBreakSpan() */ @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) public static final int LINE_BREAK_STYLE_NO_BREAK = 4; @@ -457,8 +459,9 @@ public final class LineBreakConfig { * * <p>Use {@link LineBreakConfig.Builder} to create the * {@code LineBreakConfig} instance. + * @hide */ - private LineBreakConfig(@LineBreakStyle int lineBreakStyle, + public LineBreakConfig(@LineBreakStyle int lineBreakStyle, @LineBreakWordStyle int lineBreakWordStyle, @Hyphenation int hyphenation) { mLineBreakStyle = lineBreakStyle; @@ -606,4 +609,35 @@ public final class LineBreakConfig { + ", mHyphenation= " + mHyphenation + '}'; } + + @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) + @Override + public int describeContents() { + return 0; + } + + @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeInt(mLineBreakStyle); + dest.writeInt(mLineBreakWordStyle); + dest.writeInt(mHyphenation); + } + + @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) + public static final @NonNull Creator<LineBreakConfig> CREATOR = new Creator<>() { + + @Override + public LineBreakConfig createFromParcel(Parcel source) { + final int lineBreakStyle = source.readInt(); + final int lineBreakWordStyle = source.readInt(); + final int hyphenation = source.readInt(); + return new LineBreakConfig(lineBreakStyle, lineBreakWordStyle, hyphenation); + } + + @Override + public LineBreakConfig[] newArray(int size) { + return new LineBreakConfig[size]; + } + }; } |