mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-01 22:56:33 +02:00
Limit text size / number of links
This commit is contained in:
@@ -74,9 +74,11 @@ import static androidx.core.text.HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_LIST_
|
||||
import static androidx.core.text.HtmlCompat.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE;
|
||||
|
||||
public class HtmlHelper {
|
||||
static final int PREVIEW_SIZE = 250;
|
||||
static final int PREVIEW_SIZE = 250; // characters
|
||||
|
||||
private static final int TRACKING_PIXEL_SURFACE = 25;
|
||||
private static final int MAX_LINKS = 50;
|
||||
private static final int MAX_SIZE = 50 * 1024; // characters
|
||||
private static final int TRACKING_PIXEL_SURFACE = 25; // pixels
|
||||
|
||||
private static final List<String> heads = Collections.unmodifiableList(Arrays.asList(
|
||||
"h1", "h2", "h3", "h4", "h5", "h6", "p", "ol", "ul", "table", "br", "hr"));
|
||||
@@ -124,6 +126,10 @@ public class HtmlHelper {
|
||||
}
|
||||
}
|
||||
|
||||
int links = parsed.select("a").size();
|
||||
if (links > MAX_LINKS || parsed.text().length() > MAX_SIZE)
|
||||
return "<strong>" + context.getString(R.string.title_hint_too_complex) + "</strong>";
|
||||
|
||||
Whitelist whitelist = Whitelist.relaxed()
|
||||
.addTags("hr", "abbr")
|
||||
.removeTags("col", "colgroup", "thead", "tbody")
|
||||
@@ -266,6 +272,8 @@ public class HtmlHelper {
|
||||
PatternsCompat.AUTOLINK_WEB_URL.pattern());
|
||||
|
||||
NodeTraversor.traverse(new NodeVisitor() {
|
||||
private int alinks = links;
|
||||
|
||||
@Override
|
||||
public void head(Node node, int depth) {
|
||||
if (node instanceof TextNode) {
|
||||
@@ -294,7 +302,7 @@ public class HtmlHelper {
|
||||
" " + matcher.start() + "..." + matcher.end() + "/" + text.length() +
|
||||
" linked=" + linked + " email=" + email);
|
||||
|
||||
if (linked)
|
||||
if (linked || alinks >= MAX_LINKS)
|
||||
span.appendText(text.substring(pos, matcher.end()));
|
||||
else {
|
||||
span.appendText(text.substring(pos, matcher.start()));
|
||||
@@ -303,6 +311,8 @@ public class HtmlHelper {
|
||||
a.attr("href", (email ? "mailto:" : "") + matcher.group());
|
||||
a.text(matcher.group());
|
||||
span.appendChild(a);
|
||||
|
||||
alinks++;
|
||||
}
|
||||
|
||||
pos = matcher.end();
|
||||
|
||||
Reference in New Issue
Block a user