Do not redact string extras which exclusively contain helpful system information.

Also, include the length of redacted strings.

Test: produce a bugreport and validate the expected strings are present
Change-Id: Ib1e5e18290f4a4854b0594c7e939f9392b8ac4bb
This commit is contained in:
Jeff DeCew
2021-06-18 10:33:00 -04:00
parent e7fc75760a
commit 207638e6b2

View File

@@ -585,7 +585,8 @@ public final class NotificationRecord {
pw.println("null");
} else {
pw.print(val.getClass().getSimpleName());
if (redact && (val instanceof CharSequence || val instanceof String)) {
if (redact && (val instanceof CharSequence) && shouldRedactStringExtra(key)) {
pw.print(String.format(" [length=%d]", ((CharSequence) val).length()));
// redact contents from bugreports
} else if (val instanceof Bitmap) {
pw.print(String.format(" (%dx%d)",
@@ -611,6 +612,19 @@ public final class NotificationRecord {
}
}
private boolean shouldRedactStringExtra(String key) {
if (key == null) return true;
switch (key) {
// none of these keys contain user-related information; they do not need to be redacted
case Notification.EXTRA_SUBSTITUTE_APP_NAME:
case Notification.EXTRA_TEMPLATE:
case "android.support.v4.app.extra.COMPAT_TEMPLATE":
return false;
default:
return true;
}
}
@Override
public final String toString() {
return String.format(