From ec7ea9364282abb2ca34737c44a642110388ee74 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 23 Sep 2019 19:51:17 +0200 Subject: [PATCH] Allow colors --- .../java/eu/faircode/email/HtmlHelper.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 50ccb90585..08b6f4d5a5 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -133,6 +133,7 @@ public class HtmlHelper { Whitelist whitelist = Whitelist.relaxed() .addTags("hr", "abbr", "big") + .addAttributes("span", "style") .removeTags("col", "colgroup", "thead", "tbody") .removeAttributes("table", "width") .removeAttributes("td", "colspan", "rowspan", "width") @@ -141,6 +142,27 @@ public class HtmlHelper { .addProtocols("img", "src", "data"); final Document document = new Cleaner(whitelist).clean(parsed); + // Sanitize span styles + for (Element span : document.select("span")) { + String style = span.attr("style"); + if (!TextUtils.isEmpty(style)) { + StringBuilder sb = new StringBuilder(); + + String[] params = style.split(";"); + for (String param : params) { + String[] kv = param.split(":"); + if (kv.length == 2) + switch (kv[0].trim().toLowerCase()) { + case "color": + sb.append(param).append(";"); + break; + } + } + + span.attr("style", sb.toString()); + } + } + // Remove new lines without surrounding content for (Element br : document.select("br")) if (br.parent() != null && !hasVisibleContent(br.parent().childNodes()))