From 704dcd0230d66157f721694da489988c10facf7b Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Fri, 9 Mar 2018 00:11:40 +0100 Subject: [PATCH] Correctly match additional URIs. --- app/src/main/AndroidManifest.xml | 2 + .../kuschku/quasseldroid_ng/QuasseldroidNG.kt | 48 +++++++++++++++++++ .../chat/messages/QuasselMessageRenderer.kt | 4 +- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5e08fb93a..54dbdd794 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <!-- Enable after we target Android P --> + <!--<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />--> <application android:name=".QuasseldroidNG" diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt index 0b796525c..f5ea01c14 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt @@ -5,6 +5,7 @@ import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager import android.graphics.drawable.Icon import android.os.Build +import android.os.StrictMode import android.support.v7.preference.PreferenceManager import com.squareup.leakcanary.LeakCanary import de.kuschku.malheur.CrashHandler @@ -64,5 +65,52 @@ class QuasseldroidNG : Application() { .build() ) } + + if (BuildConfig.DEBUG) { + StrictMode.setThreadPolicy( + StrictMode.ThreadPolicy.Builder() + .detectNetwork() + .detectCustomSlowCalls() + .let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + it.detectResourceMismatches() + } else { + it + } + } + .let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + it.detectUnbufferedIo() + } else { + it + } + } + .penaltyLog() + .build() + ) + StrictMode.setVmPolicy( + StrictMode.VmPolicy.Builder() + .detectLeakedSqlLiteObjects() + .detectActivityLeaks() + .detectLeakedClosableObjects() + .detectLeakedRegistrationObjects() + .let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + it.detectFileUriExposure() + } else { + it + } + } + .let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + it.detectContentUriWithoutPermission() + } else { + it + } + } + .penaltyLog() + .build() + ) + } } } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt index da3b5cda9..e61e8c882 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/QuasselMessageRenderer.kt @@ -297,14 +297,14 @@ class QuasselMessageRenderer( @Language("RegExp") private val scheme = "(?:(?:mailto:|magnet:|(?:[+.-]?\\w)+://)|www(?=\\.\\S+\\.))" @Language("RegExp") - private val authority = "(?:(?:[,.;@:]?[-\\w]+)+\\.?|\\[[0-9a-f:.]+])(?::\\d+)?" + private val authority = "(?:(?:[,.;@:]?[-\\w]+)+\\.?|\\[[0-9a-f:.]+])?(?::\\d+)?" @Language("RegExp") private val urlChars = "(?:[,.;:]*[\\w~@/?&=+$()!%#*-])" @Language("RegExp") private val urlEnd = "((?:>|[,.;:\"]*\\s|\\b|$))" private val urlPattern = Regex( - "\\b($scheme$authority(?:/$urlChars*)?)$urlEnd", + "\\b($scheme$authority(?:$urlChars*)?)$urlEnd", RegexOption.IGNORE_CASE ) -- GitLab