Remove TextWrapping automation

Revert ag/17152649
Enabling text wrapping by default will be done in material theme.
The automation here is created for experiment and can be removed.

Bug: 286957995
Test: atest StaticLayoutTest
Change-Id: I35bdfee6cf69b1b519b5f3d06d3cd6d41c324684
This commit is contained in:
Allen Su
2023-06-29 03:59:04 +00:00
parent 2f9fbcfbc5
commit b6be458e96
5 changed files with 10 additions and 169 deletions

View File

@@ -25,7 +25,6 @@ import android.graphics.Paint;
import android.graphics.text.LineBreakConfig; import android.graphics.text.LineBreakConfig;
import android.graphics.text.LineBreaker; import android.graphics.text.LineBreaker;
import android.os.Build; import android.os.Build;
import android.os.SystemProperties;
import android.text.style.LeadingMarginSpan; import android.text.style.LeadingMarginSpan;
import android.text.style.LeadingMarginSpan.LeadingMarginSpan2; import android.text.style.LeadingMarginSpan.LeadingMarginSpan2;
import android.text.style.LineHeightSpan; import android.text.style.LineHeightSpan;
@@ -33,7 +32,6 @@ import android.text.style.TabStopSpan;
import android.util.Log; import android.util.Log;
import android.util.Pools.SynchronizedPool; import android.util.Pools.SynchronizedPool;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils; import com.android.internal.util.GrowingArrayUtils;
@@ -75,13 +73,6 @@ public class StaticLayout extends Layout {
* default values. * default values.
*/ */
public final static class Builder { public final static class Builder {
// The content length threshold to enable LINE_BREAK_WORD_STYLE_PHRASE.
private static final int DEFAULT_LINECOUNT_THRESHOLD_FOR_PHRASE = 3;
// The property of content length threshold to enable LINE_BREAK_WORD_STYLE_PHRASE.
private static final String PROPERTY_LINECOUNT_THRESHOLD_FOR_PHRASE =
"android.phrase.linecount.threshold";
private Builder() {} private Builder() {}
/** /**
@@ -440,55 +431,11 @@ public class StaticLayout extends Layout {
*/ */
@NonNull @NonNull
public StaticLayout build() { public StaticLayout build() {
reviseLineBreakConfig();
StaticLayout result = new StaticLayout(this); StaticLayout result = new StaticLayout(this);
Builder.recycle(this); Builder.recycle(this);
return result; return result;
} }
private void reviseLineBreakConfig() {
boolean autoPhraseBreaking = mLineBreakConfig.getAutoPhraseBreaking();
int wordStyle = LineBreakConfig.getResolvedLineBreakWordStyle(mLineBreakConfig);
if (autoPhraseBreaking) {
if (wordStyle != LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE) {
if (shouldEnablePhraseBreaking()) {
mLineBreakConfig = LineBreakConfig.getLineBreakConfig(
mLineBreakConfig.getLineBreakStyle(),
LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE,
mLineBreakConfig.getAutoPhraseBreaking());
}
}
}
}
private boolean shouldEnablePhraseBreaking() {
if (TextUtils.isEmpty(mText) || mWidth <= 0) {
return false;
}
int lineLimit = SystemProperties.getInt(
PROPERTY_LINECOUNT_THRESHOLD_FOR_PHRASE,
DEFAULT_LINECOUNT_THRESHOLD_FOR_PHRASE);
double desiredWidth = (double) Layout.getDesiredWidth(mText, mStart,
mEnd, mPaint, mTextDir);
int lineCount = (int) Math.ceil(desiredWidth / mWidth);
if (lineCount > 0 && lineCount <= lineLimit) {
return true;
}
return false;
}
/**
* Get the line break word style.
*
* @return The current line break word style.
*
* @hide
*/
@VisibleForTesting
public int getLineBreakWordStyle() {
return mLineBreakConfig.getLineBreakWordStyle();
}
private CharSequence mText; private CharSequence mText;
private int mStart; private int mStart;
private int mEnd; private int mEnd;

View File

@@ -86,9 +86,6 @@ public class FeatureFlagUtils {
public static final String SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST = public static final String SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST =
"settings_need_connected_ble_device_for_broadcast"; "settings_need_connected_ble_device_for_broadcast";
/** @hide */
public static final String SETTINGS_AUTO_TEXT_WRAPPING = "settings_auto_text_wrapping";
/** /**
* Enable new language and keyboard settings UI * Enable new language and keyboard settings UI
* @hide * @hide
@@ -225,7 +222,6 @@ public class FeatureFlagUtils {
DEFAULT_FLAGS.put(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS, "true"); DEFAULT_FLAGS.put(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS, "true");
DEFAULT_FLAGS.put(SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME, "true"); DEFAULT_FLAGS.put(SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME, "true");
DEFAULT_FLAGS.put(SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, "true"); DEFAULT_FLAGS.put(SETTINGS_NEED_CONNECTED_BLE_DEVICE_FOR_BROADCAST, "true");
DEFAULT_FLAGS.put(SETTINGS_AUTO_TEXT_WRAPPING, "false");
DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_UI, "true"); DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_UI, "true");
DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_MODIFIER_KEY, "true"); DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_MODIFIER_KEY, "true");
DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_TRACKPAD, "true"); DEFAULT_FLAGS.put(SETTINGS_NEW_KEYBOARD_TRACKPAD, "true");
@@ -253,7 +249,6 @@ public class FeatureFlagUtils {
PERSISTENT_FLAGS.add(SETTINGS_SUPPORT_LARGE_SCREEN); PERSISTENT_FLAGS.add(SETTINGS_SUPPORT_LARGE_SCREEN);
PERSISTENT_FLAGS.add(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS); PERSISTENT_FLAGS.add(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS);
PERSISTENT_FLAGS.add(SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME); PERSISTENT_FLAGS.add(SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME);
PERSISTENT_FLAGS.add(SETTINGS_AUTO_TEXT_WRAPPING);
PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_UI); PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_UI);
PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_MODIFIER_KEY); PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_MODIFIER_KEY);
PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_TRACKPAD); PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_TRACKPAD);

View File

@@ -156,7 +156,6 @@ import android.text.util.Linkify;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.FeatureFlagUtils;
import android.util.IntArray; import android.util.IntArray;
import android.util.Log; import android.util.Log;
import android.util.SparseIntArray; import android.util.SparseIntArray;
@@ -831,11 +830,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
private int mLineBreakStyle = DEFAULT_LINE_BREAK_STYLE; private int mLineBreakStyle = DEFAULT_LINE_BREAK_STYLE;
private int mLineBreakWordStyle = DEFAULT_LINE_BREAK_WORD_STYLE; private int mLineBreakWordStyle = DEFAULT_LINE_BREAK_WORD_STYLE;
// The auto option for LINE_BREAK_WORD_STYLE_PHRASE may not be applied in recycled view due to
// one-way flag flipping. This is a tentative limitation during experiment and will not have the
// issue once this is finalized to LINE_BREAK_WORD_STYLE_PHRASE_AUTO option.
private boolean mUserSpeficiedLineBreakwordStyle = false;
// This is used to reflect the current user preference for changing font weight and making text // This is used to reflect the current user preference for changing font weight and making text
// more bold. // more bold.
private int mFontWeightAdjustment; private int mFontWeightAdjustment;
@@ -1546,9 +1540,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
break; break;
case com.android.internal.R.styleable.TextView_lineBreakWordStyle: case com.android.internal.R.styleable.TextView_lineBreakWordStyle:
if (a.hasValue(attr)) {
mUserSpeficiedLineBreakwordStyle = true;
}
mLineBreakWordStyle = a.getInt(attr, mLineBreakWordStyle = a.getInt(attr,
LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE); LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE);
break; break;
@@ -4350,7 +4341,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
break; break;
case com.android.internal.R.styleable.TextAppearance_lineBreakWordStyle: case com.android.internal.R.styleable.TextAppearance_lineBreakWordStyle:
attributes.mHasLineBreakWordStyle = true; attributes.mHasLineBreakWordStyle = true;
mUserSpeficiedLineBreakwordStyle = true;
attributes.mLineBreakWordStyle = attributes.mLineBreakWordStyle =
appearance.getInt(attr, attributes.mLineBreakWordStyle); appearance.getInt(attr, attributes.mLineBreakWordStyle);
break; break;
@@ -5086,7 +5076,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
* @param lineBreakWordStyle The line-break word style for the text. * @param lineBreakWordStyle The line-break word style for the text.
*/ */
public void setLineBreakWordStyle(@LineBreakConfig.LineBreakWordStyle int lineBreakWordStyle) { public void setLineBreakWordStyle(@LineBreakConfig.LineBreakWordStyle int lineBreakWordStyle) {
mUserSpeficiedLineBreakwordStyle = true;
if (mLineBreakWordStyle != lineBreakWordStyle) { if (mLineBreakWordStyle != lineBreakWordStyle) {
mLineBreakWordStyle = lineBreakWordStyle; mLineBreakWordStyle = lineBreakWordStyle;
if (mLayout != null) { if (mLayout != null) {
@@ -5122,12 +5111,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
* @see PrecomputedText * @see PrecomputedText
*/ */
public @NonNull PrecomputedText.Params getTextMetricsParams() { public @NonNull PrecomputedText.Params getTextMetricsParams() {
final boolean autoPhraseBreaking =
!mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext,
FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING);
return new PrecomputedText.Params(new TextPaint(mTextPaint), return new PrecomputedText.Params(new TextPaint(mTextPaint),
LineBreakConfig.getLineBreakConfig(mLineBreakStyle, mLineBreakWordStyle, LineBreakConfig.getLineBreakConfig(mLineBreakStyle, mLineBreakWordStyle),
autoPhraseBreaking),
getTextDirectionHeuristic(), getTextDirectionHeuristic(),
mBreakStrategy, mHyphenationFrequency); mBreakStrategy, mHyphenationFrequency);
} }
@@ -5147,7 +5132,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
LineBreakConfig lineBreakConfig = params.getLineBreakConfig(); LineBreakConfig lineBreakConfig = params.getLineBreakConfig();
mLineBreakStyle = LineBreakConfig.getResolvedLineBreakStyle(lineBreakConfig); mLineBreakStyle = LineBreakConfig.getResolvedLineBreakStyle(lineBreakConfig);
mLineBreakWordStyle = LineBreakConfig.getResolvedLineBreakWordStyle(lineBreakConfig); mLineBreakWordStyle = LineBreakConfig.getResolvedLineBreakWordStyle(lineBreakConfig);
mUserSpeficiedLineBreakwordStyle = true;
if (mLayout != null) { if (mLayout != null) {
nullLayouts(); nullLayouts();
requestLayout(); requestLayout();
@@ -7077,13 +7061,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (mTextDir == null) { if (mTextDir == null) {
mTextDir = getTextDirectionHeuristic(); mTextDir = getTextDirectionHeuristic();
} }
final boolean autoPhraseBreaking =
!mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext,
FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING);
final @PrecomputedText.Params.CheckResultUsableResult int checkResult = final @PrecomputedText.Params.CheckResultUsableResult int checkResult =
precomputed.getParams().checkResultUsable(getPaint(), mTextDir, mBreakStrategy, precomputed.getParams().checkResultUsable(getPaint(), mTextDir, mBreakStrategy,
mHyphenationFrequency, LineBreakConfig.getLineBreakConfig( mHyphenationFrequency, LineBreakConfig.getLineBreakConfig(
mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); mLineBreakStyle, mLineBreakWordStyle));
switch (checkResult) { switch (checkResult) {
case PrecomputedText.Params.UNUSABLE: case PrecomputedText.Params.UNUSABLE:
throw new IllegalArgumentException( throw new IllegalArgumentException(
@@ -10640,9 +10621,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
} }
// TODO: code duplication with makeSingleLayout() // TODO: code duplication with makeSingleLayout()
if (mHintLayout == null) { if (mHintLayout == null) {
final boolean autoPhraseBreaking =
!mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext,
FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING);
StaticLayout.Builder builder = StaticLayout.Builder.obtain(mHint, 0, StaticLayout.Builder builder = StaticLayout.Builder.obtain(mHint, 0,
mHint.length(), mTextPaint, hintWidth) mHint.length(), mTextPaint, hintWidth)
.setAlignment(alignment) .setAlignment(alignment)
@@ -10655,7 +10633,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
.setJustificationMode(mJustificationMode) .setJustificationMode(mJustificationMode)
.setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE)
.setLineBreakConfig(LineBreakConfig.getLineBreakConfig( .setLineBreakConfig(LineBreakConfig.getLineBreakConfig(
mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); mLineBreakStyle, mLineBreakWordStyle));
if (shouldEllipsize) { if (shouldEllipsize) {
builder.setEllipsize(mEllipsize) builder.setEllipsize(mEllipsize)
.setEllipsizedWidth(ellipsisWidth); .setEllipsizedWidth(ellipsisWidth);
@@ -10704,7 +10682,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
boolean useSaved) { boolean useSaved) {
Layout result = null; Layout result = null;
if (useDynamicLayout()) { if (useDynamicLayout()) {
final boolean autoPhraseBreaking = isAutoPhraseBreakingEnabled();
final DynamicLayout.Builder builder = DynamicLayout.Builder.obtain(mText, mTextPaint, final DynamicLayout.Builder builder = DynamicLayout.Builder.obtain(mText, mTextPaint,
wantWidth) wantWidth)
.setDisplayText(mTransformed) .setDisplayText(mTransformed)
@@ -10717,7 +10694,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
.setHyphenationFrequency(mHyphenationFrequency) .setHyphenationFrequency(mHyphenationFrequency)
.setJustificationMode(mJustificationMode) .setJustificationMode(mJustificationMode)
.setLineBreakConfig(LineBreakConfig.getLineBreakConfig( .setLineBreakConfig(LineBreakConfig.getLineBreakConfig(
mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)) mLineBreakStyle, mLineBreakWordStyle))
.setEllipsize(getKeyListener() == null ? effectiveEllipsize : null) .setEllipsize(getKeyListener() == null ? effectiveEllipsize : null)
.setEllipsizedWidth(ellipsisWidth); .setEllipsizedWidth(ellipsisWidth);
result = builder.build(); result = builder.build();
@@ -10762,7 +10739,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
} }
} }
if (result == null) { if (result == null) {
final boolean autoPhraseBreaking = isAutoPhraseBreakingEnabled();
StaticLayout.Builder builder = StaticLayout.Builder.obtain(mTransformed, StaticLayout.Builder builder = StaticLayout.Builder.obtain(mTransformed,
0, mTransformed.length(), mTextPaint, wantWidth) 0, mTransformed.length(), mTextPaint, wantWidth)
.setAlignment(alignment) .setAlignment(alignment)
@@ -10775,7 +10751,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
.setJustificationMode(mJustificationMode) .setJustificationMode(mJustificationMode)
.setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE)
.setLineBreakConfig(LineBreakConfig.getLineBreakConfig( .setLineBreakConfig(LineBreakConfig.getLineBreakConfig(
mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); mLineBreakStyle, mLineBreakWordStyle));
if (shouldEllipsize) { if (shouldEllipsize) {
builder.setEllipsize(effectiveEllipsize) builder.setEllipsize(effectiveEllipsize)
.setEllipsizedWidth(ellipsisWidth); .setEllipsizedWidth(ellipsisWidth);
@@ -10785,11 +10761,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
return result; return result;
} }
private boolean isAutoPhraseBreakingEnabled() {
return !mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext,
FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING);
}
@UnsupportedAppUsage @UnsupportedAppUsage
private boolean compressText(float width) { private boolean compressText(float width) {
if (isHardwareAccelerated()) return false; if (isHardwareAccelerated()) return false;
@@ -11138,9 +11109,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain( final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain(
text, 0, text.length(), mTempTextPaint, Math.round(availableSpace.right)); text, 0, text.length(), mTempTextPaint, Math.round(availableSpace.right));
final boolean autoPhraseBreaking =
!mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext,
FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING);
layoutBuilder.setAlignment(getLayoutAlignment()) layoutBuilder.setAlignment(getLayoutAlignment())
.setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier()) .setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier())
.setIncludePad(getIncludeFontPadding()) .setIncludePad(getIncludeFontPadding())
@@ -11151,7 +11119,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
.setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE)
.setTextDirection(getTextDirectionHeuristic()) .setTextDirection(getTextDirectionHeuristic())
.setLineBreakConfig(LineBreakConfig.getLineBreakConfig( .setLineBreakConfig(LineBreakConfig.getLineBreakConfig(
mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); mLineBreakStyle, mLineBreakWordStyle));
final StaticLayout layout = layoutBuilder.build(); final StaticLayout layout = layoutBuilder.build();

View File

@@ -24,7 +24,6 @@ import static org.junit.Assert.assertTrue;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Paint.FontMetricsInt; import android.graphics.Paint.FontMetricsInt;
import android.graphics.text.LineBreakConfig;
import android.os.LocaleList; import android.os.LocaleList;
import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit;
import android.text.Layout.Alignment; import android.text.Layout.Alignment;
@@ -926,24 +925,4 @@ public class StaticLayoutTest {
assertEquals(0, layout.getHeight(true)); assertEquals(0, layout.getHeight(true));
assertEquals(2, layout.getLineCount()); assertEquals(2, layout.getLineCount());
} }
@Test
public void testBuilder_autoPhraseBreaking() {
{
// setAutoPhraseBreaking true
LineBreakConfig lineBreakConfig = new LineBreakConfig.Builder()
.setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_STYLE_NONE)
.setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE)
.setAutoPhraseBreaking(true)
.build();
final String text = "これが正解。";
// Obtain.
StaticLayout.Builder builder = StaticLayout.Builder.obtain(text, 0,
text.length(), mDefaultPaint, DEFAULT_OUTER_WIDTH);
builder.setLineBreakConfig(lineBreakConfig);
builder.build();
assertEquals(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE,
builder.getLineBreakWordStyle());
}
}
} }

View File

@@ -147,11 +147,6 @@ public final class LineBreakConfig {
private @LineBreakWordStyle int mLineBreakWordStyle = private @LineBreakWordStyle int mLineBreakWordStyle =
LineBreakConfig.LINE_BREAK_WORD_STYLE_UNSPECIFIED; LineBreakConfig.LINE_BREAK_WORD_STYLE_UNSPECIFIED;
// Whether or not enabling phrase breaking automatically.
// TODO(b/226012260): Remove this and add LINE_BREAK_WORD_STYLE_PHRASE_AUTO after
// the experiment.
private boolean mAutoPhraseBreaking = false;
/** /**
* Builder constructor. * Builder constructor.
*/ */
@@ -243,16 +238,6 @@ public final class LineBreakConfig {
return this; return this;
} }
/**
* Enables or disables the automation of {@link #LINE_BREAK_WORD_STYLE_PHRASE}.
*
* @hide
*/
public @NonNull Builder setAutoPhraseBreaking(boolean autoPhraseBreaking) {
mAutoPhraseBreaking = autoPhraseBreaking;
return this;
}
/** /**
* Builds a {@link LineBreakConfig} instance. * Builds a {@link LineBreakConfig} instance.
* *
@@ -262,7 +247,7 @@ public final class LineBreakConfig {
* @return The {@code LineBreakConfig} instance. * @return The {@code LineBreakConfig} instance.
*/ */
public @NonNull LineBreakConfig build() { public @NonNull LineBreakConfig build() {
return new LineBreakConfig(mLineBreakStyle, mLineBreakWordStyle, mAutoPhraseBreaking); return new LineBreakConfig(mLineBreakStyle, mLineBreakWordStyle);
} }
} }
@@ -283,23 +268,6 @@ public final class LineBreakConfig {
.build(); .build();
} }
/**
* Create the LineBreakConfig instance.
*
* @param lineBreakStyle the line break style for text wrapping.
* @param lineBreakWordStyle the line break word style for text wrapping.
* @return the {@link LineBreakConfig} instance. *
* @hide
*/
public static @NonNull LineBreakConfig getLineBreakConfig(@LineBreakStyle int lineBreakStyle,
@LineBreakWordStyle int lineBreakWordStyle, boolean autoPhraseBreaking) {
LineBreakConfig.Builder builder = new LineBreakConfig.Builder();
return builder.setLineBreakStyle(lineBreakStyle)
.setLineBreakWordStyle(lineBreakWordStyle)
.setAutoPhraseBreaking(autoPhraseBreaking)
.build();
}
/** @hide */ /** @hide */
public static final LineBreakConfig NONE = public static final LineBreakConfig NONE =
new Builder().setLineBreakStyle(LINE_BREAK_STYLE_NONE) new Builder().setLineBreakStyle(LINE_BREAK_STYLE_NONE)
@@ -307,7 +275,6 @@ public final class LineBreakConfig {
private final @LineBreakStyle int mLineBreakStyle; private final @LineBreakStyle int mLineBreakStyle;
private final @LineBreakWordStyle int mLineBreakWordStyle; private final @LineBreakWordStyle int mLineBreakWordStyle;
private final boolean mAutoPhraseBreaking;
/** /**
* Constructor with line-break parameters. * Constructor with line-break parameters.
@@ -316,10 +283,9 @@ public final class LineBreakConfig {
* {@code LineBreakConfig} instance. * {@code LineBreakConfig} instance.
*/ */
private LineBreakConfig(@LineBreakStyle int lineBreakStyle, private LineBreakConfig(@LineBreakStyle int lineBreakStyle,
@LineBreakWordStyle int lineBreakWordStyle, boolean autoPhraseBreaking) { @LineBreakWordStyle int lineBreakWordStyle) {
mLineBreakStyle = lineBreakStyle; mLineBreakStyle = lineBreakStyle;
mLineBreakWordStyle = lineBreakWordStyle; mLineBreakWordStyle = lineBreakWordStyle;
mAutoPhraseBreaking = autoPhraseBreaking;
} }
/** /**
@@ -400,20 +366,7 @@ public final class LineBreakConfig {
config.mLineBreakStyle == LINE_BREAK_STYLE_UNSPECIFIED config.mLineBreakStyle == LINE_BREAK_STYLE_UNSPECIFIED
? mLineBreakStyle : config.mLineBreakStyle, ? mLineBreakStyle : config.mLineBreakStyle,
config.mLineBreakWordStyle == LINE_BREAK_WORD_STYLE_UNSPECIFIED config.mLineBreakWordStyle == LINE_BREAK_WORD_STYLE_UNSPECIFIED
? mLineBreakWordStyle : config.mLineBreakWordStyle, ? mLineBreakWordStyle : config.mLineBreakWordStyle);
config.mAutoPhraseBreaking
);
}
/**
* Used to identify if the automation of {@link #LINE_BREAK_WORD_STYLE_PHRASE} is enabled.
*
* @return The result that records whether or not the automation of
* {@link #LINE_BREAK_WORD_STYLE_PHRASE} is enabled.
* @hide
*/
public boolean getAutoPhraseBreaking() {
return mAutoPhraseBreaking;
} }
@Override @Override
@@ -423,8 +376,7 @@ public final class LineBreakConfig {
if (!(o instanceof LineBreakConfig)) return false; if (!(o instanceof LineBreakConfig)) return false;
LineBreakConfig that = (LineBreakConfig) o; LineBreakConfig that = (LineBreakConfig) o;
return (mLineBreakStyle == that.mLineBreakStyle) return (mLineBreakStyle == that.mLineBreakStyle)
&& (mLineBreakWordStyle == that.mLineBreakWordStyle) && (mLineBreakWordStyle == that.mLineBreakWordStyle);
&& (mAutoPhraseBreaking == that.mAutoPhraseBreaking);
} }
@Override @Override