From 12479b7603866c699536a8af1077a46ea682b2b0 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 1 Oct 2021 19:24:06 +0200 Subject: [PATCH] Added support for base element --- .../java/eu/faircode/email/HtmlHelper.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 1320efe4d3..0ac67aeb00 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -105,6 +105,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; +import java.net.URI; import java.text.DateFormat; import java.text.ParsePosition; import java.util.ArrayList; @@ -1246,11 +1247,23 @@ public class HtmlHelper { } static void removeRelativeLinks(Document document) { - for (Element a : document.select("a")) - if (a.attr("href").trim().startsWith("#")) { + Elements b = document.select("base"); + String base = (b.size() > 0 ? b.get(0).attr("href") : null); + for (Element a : document.select("a")) { + String href = a.attr("href"); + if (href.trim().startsWith("#")) { a.tagName("span"); a.removeAttr("href"); - } + } else if (!TextUtils.isEmpty(base)) + try { + // https://developer.android.com/reference/java/net/URI + URI u = URI.create(base); + URI r = u.resolve(href); + a.attr("href", r.toString()); + } catch (Throwable ex) { + Log.w(ex); + } + } } static void autoLink(Document document) {