summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorfionaxu <fionaxu@google.com>2016-05-31 14:47:14 -0700
committerfionaxu <fionaxu@google.com>2016-05-31 18:42:18 -0700
commite630f353222509474c8aa739e00bacfc3d906663 (patch)
tree869347c9d53fccc832e7102675ca734d8355c7bd /core/java/android
parent189e3e5ec5b698f1062fb98692fa75d3750148e0 (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.java15
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);