From 36cd87d04e06fe6c4037e435c5cf36da4b1ff91a Mon Sep 17 00:00:00 2001 From: Roozbeh Pournader Date: Thu, 2 Jun 2016 12:01:36 -0700 Subject: [PATCH] Unhide CharSequence APIs to BidiFormatter The APIs are useful in avoiding the unnecessary creation of strings when you have a CharSequence that's not a String. Bug: 26979409 Change-Id: I27cd157ca53edb5f44a1e69085a1882af3cc7c6a --- api/current.txt | 5 +++ api/system-current.txt | 5 +++ api/test-current.txt | 5 +++ core/java/android/text/BidiFormatter.java | 39 ++++++++++++++++++++--- 4 files changed, 49 insertions(+), 5 deletions(-) diff --git a/api/current.txt b/api/current.txt index f7b952d08f300..efd2ecae105fa 100644 --- a/api/current.txt +++ b/api/current.txt @@ -38280,11 +38280,16 @@ package android.text { method public static android.text.BidiFormatter getInstance(java.util.Locale); method public boolean getStereoReset(); method public boolean isRtl(java.lang.String); + method public boolean isRtl(java.lang.CharSequence); method public boolean isRtlContext(); method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic, boolean); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic, boolean); method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic); method public java.lang.String unicodeWrap(java.lang.String, boolean); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, boolean); method public java.lang.String unicodeWrap(java.lang.String); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence); } public static final class BidiFormatter.Builder { diff --git a/api/system-current.txt b/api/system-current.txt index 8dcdaaaf900d1..93e4983946309 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -41278,11 +41278,16 @@ package android.text { method public static android.text.BidiFormatter getInstance(java.util.Locale); method public boolean getStereoReset(); method public boolean isRtl(java.lang.String); + method public boolean isRtl(java.lang.CharSequence); method public boolean isRtlContext(); method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic, boolean); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic, boolean); method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic); method public java.lang.String unicodeWrap(java.lang.String, boolean); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, boolean); method public java.lang.String unicodeWrap(java.lang.String); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence); } public static final class BidiFormatter.Builder { diff --git a/api/test-current.txt b/api/test-current.txt index fc29f38151569..cd5328ce638c7 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -38360,11 +38360,16 @@ package android.text { method public static android.text.BidiFormatter getInstance(java.util.Locale); method public boolean getStereoReset(); method public boolean isRtl(java.lang.String); + method public boolean isRtl(java.lang.CharSequence); method public boolean isRtlContext(); method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic, boolean); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic, boolean); method public java.lang.String unicodeWrap(java.lang.String, android.text.TextDirectionHeuristic); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, android.text.TextDirectionHeuristic); method public java.lang.String unicodeWrap(java.lang.String, boolean); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence, boolean); method public java.lang.String unicodeWrap(java.lang.String); + method public java.lang.CharSequence unicodeWrap(java.lang.CharSequence); } public static final class BidiFormatter.Builder { diff --git a/core/java/android/text/BidiFormatter.java b/core/java/android/text/BidiFormatter.java index 707c0fcb75ee7..59273f428240e 100644 --- a/core/java/android/text/BidiFormatter.java +++ b/core/java/android/text/BidiFormatter.java @@ -355,7 +355,11 @@ public final class BidiFormatter { } /** - * @hide + * Operates like {@link #isRtl(String)}, but takes a CharSequence instead of a string + * + * @param str CharSequence whose directionality is to be estimated. + * @return true if {@code str}'s estimated overall directionality is RTL. Otherwise returns + * false. */ public boolean isRtl(CharSequence str) { return mDefaultTextDirectionHeuristic.isRtl(str, 0, str.length()); @@ -398,7 +402,16 @@ public final class BidiFormatter { } /** - * @hide + * Operates like {@link #unicodeWrap(String, TextDirectionHeuristic, boolean)}, but takes a + * CharSequence instead of a string + * + * @param str The input CharSequence. + * @param heuristic The algorithm to be used to estimate the CharSequence's overall direction. + * See {@link TextDirectionHeuristics} for pre-defined heuristics. + * @param isolate Whether to directionally isolate the CharSequence to prevent it from garbling + * the content around it + * @return Input CharSequence after applying the above processing. {@code null} if {@code str} + * is {@code null}. */ public @Nullable CharSequence unicodeWrap(@Nullable CharSequence str, TextDirectionHeuristic heuristic, boolean isolate) { @@ -437,7 +450,13 @@ public final class BidiFormatter { } /** - * @hide + * Operates like {@link #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean)}, but + * assumes {@code isolate} is true. + * + * @param str The input CharSequence. + * @param heuristic The algorithm to be used to estimate the CharSequence's overall direction. + * See {@link TextDirectionHeuristics} for pre-defined heuristics. + * @return Input CharSequence after applying the above processing. */ public CharSequence unicodeWrap(CharSequence str, TextDirectionHeuristic heuristic) { return unicodeWrap(str, heuristic, true /* isolate */); @@ -458,7 +477,13 @@ public final class BidiFormatter { } /** - * @hide + * Operates like {@link #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean)}, but uses + * the formatter's default direction estimation algorithm. + * + * @param str The input CharSequence. + * @param isolate Whether to directionally isolate the CharSequence to prevent it from garbling + * the content around it + * @return Input CharSequence after applying the above processing. */ public CharSequence unicodeWrap(CharSequence str, boolean isolate) { return unicodeWrap(str, mDefaultTextDirectionHeuristic, isolate); @@ -476,7 +501,11 @@ public final class BidiFormatter { } /** - * @hide + * Operates like {@link #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean)}, but uses + * the formatter's default direction estimation algorithm and assumes {@code isolate} is true. + * + * @param str The input CharSequence. + * @return Input CharSequence after applying the above processing. */ public CharSequence unicodeWrap(CharSequence str) { return unicodeWrap(str, mDefaultTextDirectionHeuristic, true /* isolate */);