Loading core/java/android/text/Html.java +20 −5 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.text; package android.text; import com.android.internal.util.ArrayUtils; import org.ccil.cowan.tagsoup.HTMLSchema; import org.ccil.cowan.tagsoup.HTMLSchema; import org.ccil.cowan.tagsoup.Parser; import org.ccil.cowan.tagsoup.Parser; import org.xml.sax.Attributes; import org.xml.sax.Attributes; Loading Loading @@ -45,13 +46,11 @@ import android.text.style.TextAppearanceSpan; import android.text.style.TypefaceSpan; import android.text.style.TypefaceSpan; import android.text.style.URLSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; import android.text.style.UnderlineSpan; import android.util.Log; import com.android.internal.util.XmlUtils; import com.android.internal.util.XmlUtils; import java.io.IOException; import java.io.IOException; import java.io.StringReader; import java.io.StringReader; import java.nio.CharBuffer; import java.util.HashMap; import java.util.HashMap; /** /** Loading Loading @@ -203,9 +202,26 @@ public class Html { } } } } private static String getOpenParaTagWithDirection(Spanned text, int start, int end) { final int len = end - start; final byte[] levels = new byte[ArrayUtils.idealByteArraySize(len)]; final char[] buffer = TextUtils.obtain(len); TextUtils.getChars(text, start, end, buffer, 0); int paraDir = AndroidBidi.bidi(Layout.DIR_REQUEST_DEFAULT_LTR, buffer, levels, len, false /* no info */); switch(paraDir) { case Layout.DIR_RIGHT_TO_LEFT: return "<p dir=rtl>"; case Layout.DIR_LEFT_TO_RIGHT: default: return "<p dir=ltr>"; } } private static void withinBlockquote(StringBuilder out, Spanned text, private static void withinBlockquote(StringBuilder out, Spanned text, int start, int end) { int start, int end) { out.append("<p>"); out.append(getOpenParaTagWithDirection(text, start, end)); int next; int next; for (int i = start; i < end; i = next) { for (int i = start; i < end; i = next) { Loading Loading @@ -340,7 +356,7 @@ public class Html { } } } } String p = last ? "" : "</p>\n<p>"; String p = last ? "" : "</p>\n" + getOpenParaTagWithDirection(text, start, end); if (nl == 1) { if (nl == 1) { out.append("<br>\n"); out.append("<br>\n"); Loading @@ -350,7 +366,6 @@ public class Html { for (int i = 2; i < nl; i++) { for (int i = 2; i < nl; i++) { out.append("<br>"); out.append("<br>"); } } out.append(p); out.append(p); } } } } Loading Loading
core/java/android/text/Html.java +20 −5 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.text; package android.text; import com.android.internal.util.ArrayUtils; import org.ccil.cowan.tagsoup.HTMLSchema; import org.ccil.cowan.tagsoup.HTMLSchema; import org.ccil.cowan.tagsoup.Parser; import org.ccil.cowan.tagsoup.Parser; import org.xml.sax.Attributes; import org.xml.sax.Attributes; Loading Loading @@ -45,13 +46,11 @@ import android.text.style.TextAppearanceSpan; import android.text.style.TypefaceSpan; import android.text.style.TypefaceSpan; import android.text.style.URLSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; import android.text.style.UnderlineSpan; import android.util.Log; import com.android.internal.util.XmlUtils; import com.android.internal.util.XmlUtils; import java.io.IOException; import java.io.IOException; import java.io.StringReader; import java.io.StringReader; import java.nio.CharBuffer; import java.util.HashMap; import java.util.HashMap; /** /** Loading Loading @@ -203,9 +202,26 @@ public class Html { } } } } private static String getOpenParaTagWithDirection(Spanned text, int start, int end) { final int len = end - start; final byte[] levels = new byte[ArrayUtils.idealByteArraySize(len)]; final char[] buffer = TextUtils.obtain(len); TextUtils.getChars(text, start, end, buffer, 0); int paraDir = AndroidBidi.bidi(Layout.DIR_REQUEST_DEFAULT_LTR, buffer, levels, len, false /* no info */); switch(paraDir) { case Layout.DIR_RIGHT_TO_LEFT: return "<p dir=rtl>"; case Layout.DIR_LEFT_TO_RIGHT: default: return "<p dir=ltr>"; } } private static void withinBlockquote(StringBuilder out, Spanned text, private static void withinBlockquote(StringBuilder out, Spanned text, int start, int end) { int start, int end) { out.append("<p>"); out.append(getOpenParaTagWithDirection(text, start, end)); int next; int next; for (int i = start; i < end; i = next) { for (int i = start; i < end; i = next) { Loading Loading @@ -340,7 +356,7 @@ public class Html { } } } } String p = last ? "" : "</p>\n<p>"; String p = last ? "" : "</p>\n" + getOpenParaTagWithDirection(text, start, end); if (nl == 1) { if (nl == 1) { out.append("<br>\n"); out.append("<br>\n"); Loading @@ -350,7 +366,6 @@ public class Html { for (int i = 2; i < nl; i++) { for (int i = 2; i < nl; i++) { out.append("<br>"); out.append("<br>"); } } out.append(p); out.append(p); } } } } Loading