From b4006541f3c11fa9bd88eae0c74a2e2b08e18685 Mon Sep 17 00:00:00 2001 From: lookshe Date: Fri, 21 Aug 2015 19:26:47 +0200 Subject: fixes FS#44 - IOException if content-length is not present --- .../java/eu/siacs/conversations/http/HttpDownloadConnection.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java index 62fe4191..45f1e965 100644 --- a/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java +++ b/src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java @@ -150,7 +150,7 @@ public class HttpDownloadConnection implements Transferable { return; } file.setExpectedSize(size); - if (size <= mHttpConnectionManager.getAutoAcceptFileSize()) { + if (size != -1 && size <= mHttpConnectionManager.getAutoAcceptFileSize()) { HttpDownloadConnection.this.acceptedAutomatically = true; new Thread(new FileDownloader(interactive)).start(); } else { @@ -171,12 +171,12 @@ public class HttpDownloadConnection implements Transferable { connection.connect(); String contentLength = connection.getHeaderField("Content-Length"); if (contentLength == null) { - throw new IOException(); + return -1; } try { return Long.parseLong(contentLength, 10); } catch (NumberFormatException e) { - throw new IOException(); + return -1; } } -- cgit v1.2.3 From ef0f8d4507391dafba2fc9d2b691a117e84b40fc Mon Sep 17 00:00:00 2001 From: lookshe Date: Fri, 21 Aug 2015 19:58:16 +0200 Subject: fixes FS#42 - Smilie replacement in url --- .../ankushsachdeva/emojicon/EmojiconHandler.java | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java index 958ac760..bc1d670d 100644 --- a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java +++ b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java @@ -19,10 +19,16 @@ import github.ankushsachdeva.emojicon.R; import android.content.Context; import android.text.Spannable; +import android.util.Pair; +import android.util.Patterns; import android.util.SparseIntArray; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -1440,13 +1446,20 @@ public final class EmojiconHandler { spannable.removeSpan(oldSpans[i]); } boolean hasChanges = false; + + Matcher webUrlMatcher = Patterns.WEB_URL.matcher(spannable); + Set> webUrls = new HashSet>(); + while (webUrlMatcher.find()) { + webUrls.add(Pair.create(webUrlMatcher.start(), webUrlMatcher.end())); + } + Map emoticons = ANDROID_EMOTICONS; for (Map.Entry entry : emoticons.entrySet()) { Matcher matcher = entry.getKey().matcher(spannable); while (matcher.find()) { boolean set = true; for (EmojiconImageSpan span : spannable.getSpans(matcher.start(), - matcher.end(), EmojiconImageSpan.class)) + matcher.end(), EmojiconImageSpan.class)) { if (spannable.getSpanStart(span) >= matcher.start() && spannable.getSpanEnd(span) <= matcher.end()) spannable.removeSpan(span); @@ -1454,6 +1467,17 @@ public final class EmojiconHandler { set = false; break; } + } + if (set) { + // check that found emojicon is not in an web url + for (Pair webUrl : webUrls) { + if ((matcher.start() >= webUrl.first && matcher.start() <= webUrl.second) + || (matcher.end() >= webUrl.first && matcher.end() <= webUrl.second)) { + set = false; + break; + } + } + } if (set) { spannable.setSpan(new EmojiconImageSpan(context, entry.getValue()), matcher.start(), matcher.end(), -- cgit v1.2.3