diff options
| -rw-r--r-- | core/java/android/text/StaticLayout.java | 53 | ||||
| -rw-r--r-- | core/java/android/util/FeatureFlagUtils.java | 5 | ||||
| -rw-r--r-- | core/java/android/widget/TextView.java | 38 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/text/StaticLayoutTest.java | 21 | ||||
| -rw-r--r-- | graphics/java/android/graphics/text/LineBreakConfig.java | 52 |
5 files changed, 8 insertions, 161 deletions
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index 6371da4f3776..ab9cff078ac4 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -25,7 +25,6 @@ import android.graphics.Paint; import android.graphics.text.LineBreakConfig; import android.graphics.text.LineBreaker; import android.os.Build; -import android.os.SystemProperties; import android.text.style.LeadingMarginSpan; import android.text.style.LeadingMarginSpan.LeadingMarginSpan2; import android.text.style.LineHeightSpan; @@ -33,7 +32,6 @@ import android.text.style.TabStopSpan; import android.util.Log; import android.util.Pools.SynchronizedPool; -import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.GrowingArrayUtils; @@ -75,13 +73,6 @@ public class StaticLayout extends Layout { * default values. */ 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() {} /** @@ -440,55 +431,11 @@ public class StaticLayout extends Layout { */ @NonNull public StaticLayout build() { - reviseLineBreakConfig(); StaticLayout result = new StaticLayout(this); Builder.recycle(this); return result; } - private void reviseLineBreakConfig() { - boolean autoPhraseBreaking = mLineBreakConfig.getAutoPhraseBreaking(); - int wordStyle = mLineBreakConfig.getLineBreakWordStyle(); - 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 int mStart; private int mEnd; diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index ff7d8bb956ca..0071a0d00105 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -86,9 +86,6 @@ public class FeatureFlagUtils { public static final String 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 * @hide @@ -225,7 +222,6 @@ public class FeatureFlagUtils { 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_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_MODIFIER_KEY, "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_ENABLE_MONITOR_PHANTOM_PROCS); 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_MODIFIER_KEY); PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_TRACKPAD); diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 438b9742f0af..27d8a8f23e46 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -156,7 +156,6 @@ import android.text.util.Linkify; import android.util.ArraySet; import android.util.AttributeSet; import android.util.DisplayMetrics; -import android.util.FeatureFlagUtils; import android.util.IntArray; import android.util.Log; 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 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 // more bold. private int mFontWeightAdjustment; @@ -1546,9 +1540,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener break; case com.android.internal.R.styleable.TextView_lineBreakWordStyle: - if (a.hasValue(attr)) { - mUserSpeficiedLineBreakwordStyle = true; - } mLineBreakWordStyle = a.getInt(attr, LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE); break; @@ -4350,7 +4341,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener break; case com.android.internal.R.styleable.TextAppearance_lineBreakWordStyle: attributes.mHasLineBreakWordStyle = true; - mUserSpeficiedLineBreakwordStyle = true; attributes.mLineBreakWordStyle = appearance.getInt(attr, attributes.mLineBreakWordStyle); break; @@ -5086,7 +5076,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @param lineBreakWordStyle The line-break word style for the text. */ public void setLineBreakWordStyle(@LineBreakConfig.LineBreakWordStyle int lineBreakWordStyle) { - mUserSpeficiedLineBreakwordStyle = true; if (mLineBreakWordStyle != lineBreakWordStyle) { mLineBreakWordStyle = lineBreakWordStyle; if (mLayout != null) { @@ -5122,12 +5111,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @see PrecomputedText */ public @NonNull PrecomputedText.Params getTextMetricsParams() { - final boolean autoPhraseBreaking = - !mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING); return new PrecomputedText.Params(new TextPaint(mTextPaint), - LineBreakConfig.getLineBreakConfig(mLineBreakStyle, mLineBreakWordStyle, - autoPhraseBreaking), + LineBreakConfig.getLineBreakConfig(mLineBreakStyle, mLineBreakWordStyle), getTextDirectionHeuristic(), mBreakStrategy, mHyphenationFrequency); } @@ -5147,7 +5132,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener LineBreakConfig lineBreakConfig = params.getLineBreakConfig(); mLineBreakStyle = lineBreakConfig.getLineBreakStyle(); mLineBreakWordStyle = lineBreakConfig.getLineBreakWordStyle(); - mUserSpeficiedLineBreakwordStyle = true; if (mLayout != null) { nullLayouts(); requestLayout(); @@ -7077,13 +7061,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (mTextDir == null) { mTextDir = getTextDirectionHeuristic(); } - final boolean autoPhraseBreaking = - !mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING); final @PrecomputedText.Params.CheckResultUsableResult int checkResult = precomputed.getParams().checkResultUsable(getPaint(), mTextDir, mBreakStrategy, mHyphenationFrequency, LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); + mLineBreakStyle, mLineBreakWordStyle)); switch (checkResult) { case PrecomputedText.Params.UNUSABLE: throw new IllegalArgumentException( @@ -10640,9 +10621,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } // TODO: code duplication with makeSingleLayout() if (mHintLayout == null) { - final boolean autoPhraseBreaking = - !mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING); StaticLayout.Builder builder = StaticLayout.Builder.obtain(mHint, 0, mHint.length(), mTextPaint, hintWidth) .setAlignment(alignment) @@ -10655,7 +10633,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setJustificationMode(mJustificationMode) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); + mLineBreakStyle, mLineBreakWordStyle)); if (shouldEllipsize) { builder.setEllipsize(mEllipsize) .setEllipsizedWidth(ellipsisWidth); @@ -10759,9 +10737,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } if (result == null) { - final boolean autoPhraseBreaking = - !mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING); StaticLayout.Builder builder = StaticLayout.Builder.obtain(mTransformed, 0, mTransformed.length(), mTextPaint, wantWidth) .setAlignment(alignment) @@ -10774,7 +10749,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setJustificationMode(mJustificationMode) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); + mLineBreakStyle, mLineBreakWordStyle)); if (shouldEllipsize) { builder.setEllipsize(effectiveEllipsize) .setEllipsizedWidth(ellipsisWidth); @@ -11132,9 +11107,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain( text, 0, text.length(), mTempTextPaint, Math.round(availableSpace.right)); - final boolean autoPhraseBreaking = - !mUserSpeficiedLineBreakwordStyle && FeatureFlagUtils.isEnabled(mContext, - FeatureFlagUtils.SETTINGS_AUTO_TEXT_WRAPPING); layoutBuilder.setAlignment(getLayoutAlignment()) .setLineSpacing(getLineSpacingExtra(), getLineSpacingMultiplier()) .setIncludePad(getIncludeFontPadding()) @@ -11145,7 +11117,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setTextDirection(getTextDirectionHeuristic()) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle, autoPhraseBreaking)); + mLineBreakStyle, mLineBreakWordStyle)); final StaticLayout layout = layoutBuilder.build(); diff --git a/core/tests/coretests/src/android/text/StaticLayoutTest.java b/core/tests/coretests/src/android/text/StaticLayoutTest.java index 925da4968517..0ebf03fab966 100644 --- a/core/tests/coretests/src/android/text/StaticLayoutTest.java +++ b/core/tests/coretests/src/android/text/StaticLayoutTest.java @@ -24,7 +24,6 @@ import static org.junit.Assert.assertTrue; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.FontMetricsInt; -import android.graphics.text.LineBreakConfig; import android.os.LocaleList; import android.platform.test.annotations.Presubmit; import android.text.Layout.Alignment; @@ -926,24 +925,4 @@ public class StaticLayoutTest { assertEquals(0, layout.getHeight(true)); 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()); - } - } } diff --git a/graphics/java/android/graphics/text/LineBreakConfig.java b/graphics/java/android/graphics/text/LineBreakConfig.java index d0327159b04d..0c493f5a1fdc 100644 --- a/graphics/java/android/graphics/text/LineBreakConfig.java +++ b/graphics/java/android/graphics/text/LineBreakConfig.java @@ -94,11 +94,6 @@ public final class LineBreakConfig { private @LineBreakWordStyle int mLineBreakWordStyle = LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE; - // 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. */ @@ -128,22 +123,12 @@ public final class LineBreakConfig { } /** - * 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. * * @return The {@code LineBreakConfig} instance. */ public @NonNull LineBreakConfig build() { - return new LineBreakConfig(mLineBreakStyle, mLineBreakWordStyle, mAutoPhraseBreaking); + return new LineBreakConfig(mLineBreakStyle, mLineBreakWordStyle); } } @@ -164,23 +149,6 @@ public final class LineBreakConfig { .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 */ public static final LineBreakConfig NONE = new Builder().setLineBreakStyle(LINE_BREAK_STYLE_NONE) @@ -188,7 +156,6 @@ public final class LineBreakConfig { private final @LineBreakStyle int mLineBreakStyle; private final @LineBreakWordStyle int mLineBreakWordStyle; - private final boolean mAutoPhraseBreaking; /** * Constructor with line-break parameters. @@ -197,10 +164,9 @@ public final class LineBreakConfig { * {@code LineBreakConfig} instance. */ private LineBreakConfig(@LineBreakStyle int lineBreakStyle, - @LineBreakWordStyle int lineBreakWordStyle, boolean autoPhraseBreaking) { + @LineBreakWordStyle int lineBreakWordStyle) { mLineBreakStyle = lineBreakStyle; mLineBreakWordStyle = lineBreakWordStyle; - mAutoPhraseBreaking = autoPhraseBreaking; } /** @@ -221,17 +187,6 @@ public final class LineBreakConfig { return mLineBreakWordStyle; } - /** - * 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 public boolean equals(Object o) { if (o == null) return false; @@ -239,8 +194,7 @@ public final class LineBreakConfig { if (!(o instanceof LineBreakConfig)) return false; LineBreakConfig that = (LineBreakConfig) o; return (mLineBreakStyle == that.mLineBreakStyle) - && (mLineBreakWordStyle == that.mLineBreakWordStyle) - && (mAutoPhraseBreaking == that.mAutoPhraseBreaking); + && (mLineBreakWordStyle == that.mLineBreakWordStyle); } @Override |