diff options
| author | fionaxu <fionaxu@google.com> | 2016-05-31 14:47:14 -0700 |
|---|---|---|
| committer | fionaxu <fionaxu@google.com> | 2016-05-31 18:42:18 -0700 |
| commit | e630f353222509474c8aa739e00bacfc3d906663 (patch) | |
| tree | 869347c9d53fccc832e7102675ca734d8355c7bd /core/java/android | |
| parent | 189e3e5ec5b698f1062fb98692fa75d3750148e0 (diff) | |
trim and strip html tags for load safe label name
Bug: 28557603
Change-Id: I30b6c1d32e97c1fb71ba83c2845c310fe3b7f579
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/content/pm/PackageItemInfo.java | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java index edd888b33b1e..30da03cc773b 100644 --- a/core/java/android/content/pm/PackageItemInfo.java +++ b/core/java/android/content/pm/PackageItemInfo.java @@ -25,6 +25,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.UserHandle; import android.text.BidiFormatter; +import android.text.Html; import android.text.TextPaint; import android.text.TextUtils; import android.util.Printer; @@ -164,12 +165,13 @@ public class PackageItemInfo { @SystemApi public @NonNull CharSequence loadSafeLabel(@NonNull PackageManager pm) { // loadLabel() always returns non-null - CharSequence label = loadLabel(pm); + String label = loadLabel(pm).toString(); + // strip HTML tags to avoid <br> and other tags overwriting original message + String labelStr = Html.fromHtml(label).toString(); // If the label contains new line characters it may push the UI // down to hide a part of it. Labels shouldn't have new line // characters, so just truncate at the first time one is seen. - String labelStr = label.toString(); final int labelLength = labelStr.length(); int offset = 0; while (offset < labelLength) { @@ -181,13 +183,18 @@ public class PackageItemInfo { labelStr = labelStr.substring(0, offset); break; } + // replace all non-break space to " " in order to be trimmed + if (type == Character.SPACE_SEPARATOR) { + labelStr = labelStr.substring(0, offset) + " " + labelStr.substring(offset + + Character.charCount(codePoint)); + } offset += Character.charCount(codePoint); } + labelStr = labelStr.trim(); if (labelStr.isEmpty()) { - return labelStr; + return packageName; } - TextPaint paint = new TextPaint(); paint.setTextSize(42); |
