summaryrefslogtreecommitdiff
path: root/graphics/java/android
diff options
context:
space:
mode:
author Seigo Nonaka <nona@google.com> 2023-10-26 11:58:26 +0900
committer Seigo Nonaka <nona@google.com> 2023-10-31 08:55:11 +0900
commite84e04b4f696573aa09089c8bde692a623394fc9 (patch)
tree0699342734f14257abffdc4a06b90f05751b143c /graphics/java/android
parentb7a1e303b3af0f76b6981adb995deb7398faede8 (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.java42
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];
+ }
+ };
}