package androidx.core.text.util; import android.annotation.SuppressLint; import android.os.Build; import android.text.Spannable; import android.text.SpannableString; import android.text.method.LinkMovementMethod; import android.text.style.URLSpan; import android.text.util.Linkify; import android.webkit.WebView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RestrictTo; import androidx.core.util.PatternsCompat; import c.d.b.a.a; import com.adjust.sdk.Constants; import java.io.UnsupportedEncodingException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class LinkifyCompat { private static final Comparator COMPARATOR = new AnonymousClass1(); private static final String[] EMPTY_STRING = new String[0]; /* renamed from: androidx.core.text.util.LinkifyCompat$1 reason: invalid class name */ public class AnonymousClass1 implements Comparator { public int compare(LinkSpec linkSpec, LinkSpec linkSpec2) { int i; int i2; int i3 = linkSpec.start; int i4 = linkSpec2.start; if (i3 < i4) { return -1; } if (i3 <= i4 && (i = linkSpec.end) >= (i2 = linkSpec2.end)) { return i > i2 ? -1 : 0; } return 1; } } public static class LinkSpec { public int end; public URLSpan frameworkAddedSpan; public int start; public String url; } @Retention(RetentionPolicy.SOURCE) @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public @interface LinkifyMask { } private LinkifyCompat() { } private static void addLinkMovementMethod(@NonNull TextView textView) { if (!(textView.getMovementMethod() instanceof LinkMovementMethod) && textView.getLinksClickable()) { textView.setMovementMethod(LinkMovementMethod.getInstance()); } } public static void addLinks(@NonNull TextView textView, @NonNull Pattern pattern, @Nullable String str) { if (shouldAddLinksFallbackToFramework()) { Linkify.addLinks(textView, pattern, str); } else { addLinks(textView, pattern, str, (String[]) null, (Linkify.MatchFilter) null, (Linkify.TransformFilter) null); } } public static void addLinks(@NonNull TextView textView, @NonNull Pattern pattern, @Nullable String str, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) { if (shouldAddLinksFallbackToFramework()) { Linkify.addLinks(textView, pattern, str, matchFilter, transformFilter); } else { addLinks(textView, pattern, str, (String[]) null, matchFilter, transformFilter); } } @SuppressLint({"NewApi"}) public static void addLinks(@NonNull TextView textView, @NonNull Pattern pattern, @Nullable String str, @Nullable String[] strArr, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) { if (shouldAddLinksFallbackToFramework()) { Linkify.addLinks(textView, pattern, str, strArr, matchFilter, transformFilter); return; } SpannableString valueOf = SpannableString.valueOf(textView.getText()); if (addLinks(valueOf, pattern, str, strArr, matchFilter, transformFilter)) { textView.setText(valueOf); addLinkMovementMethod(textView); } } public static boolean addLinks(@NonNull Spannable spannable, int i) { if (shouldAddLinksFallbackToFramework()) { return Linkify.addLinks(spannable, i); } if (i == 0) { return false; } URLSpan[] uRLSpanArr = (URLSpan[]) spannable.getSpans(0, spannable.length(), URLSpan.class); for (int length = uRLSpanArr.length - 1; length >= 0; length--) { spannable.removeSpan(uRLSpanArr[length]); } if ((i & 4) != 0) { Linkify.addLinks(spannable, 4); } ArrayList arrayList = new ArrayList(); if ((i & 1) != 0) { gatherLinks(arrayList, spannable, PatternsCompat.AUTOLINK_WEB_URL, new String[]{"http://", "https://", "rtsp://"}, Linkify.sUrlMatchFilter, null); } if ((i & 2) != 0) { gatherLinks(arrayList, spannable, PatternsCompat.AUTOLINK_EMAIL_ADDRESS, new String[]{"mailto:"}, null, null); } if ((i & 8) != 0) { gatherMapLinks(arrayList, spannable); } pruneOverlaps(arrayList, spannable); if (arrayList.size() == 0) { return false; } Iterator it = arrayList.iterator(); while (it.hasNext()) { LinkSpec linkSpec = (LinkSpec) it.next(); if (linkSpec.frameworkAddedSpan == null) { applyLink(linkSpec.url, linkSpec.start, linkSpec.end, spannable); } } return true; } public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern, @Nullable String str) { return shouldAddLinksFallbackToFramework() ? Linkify.addLinks(spannable, pattern, str) : addLinks(spannable, pattern, str, (String[]) null, (Linkify.MatchFilter) null, (Linkify.TransformFilter) null); } public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern, @Nullable String str, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) { return shouldAddLinksFallbackToFramework() ? Linkify.addLinks(spannable, pattern, str, matchFilter, transformFilter) : addLinks(spannable, pattern, str, (String[]) null, matchFilter, transformFilter); } @SuppressLint({"NewApi"}) public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern, @Nullable String str, @Nullable String[] strArr, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) { if (shouldAddLinksFallbackToFramework()) { return Linkify.addLinks(spannable, pattern, str, strArr, matchFilter, transformFilter); } if (str == null) { str = ""; } if (strArr == null || strArr.length < 1) { strArr = EMPTY_STRING; } String[] strArr2 = new String[(strArr.length + 1)]; strArr2[0] = str.toLowerCase(Locale.ROOT); int i = 0; while (i < strArr.length) { String str2 = strArr[i]; i++; strArr2[i] = str2 == null ? "" : str2.toLowerCase(Locale.ROOT); } Matcher matcher = pattern.matcher(spannable); boolean z2 = false; while (matcher.find()) { int start = matcher.start(); int end = matcher.end(); if (matchFilter != null ? matchFilter.acceptMatch(spannable, start, end) : true) { applyLink(makeUrl(matcher.group(0), strArr2, matcher, transformFilter), start, end, spannable); z2 = true; } } return z2; } public static boolean addLinks(@NonNull TextView textView, int i) { if (shouldAddLinksFallbackToFramework()) { return Linkify.addLinks(textView, i); } if (i == 0) { return false; } CharSequence text = textView.getText(); if (!(text instanceof Spannable)) { SpannableString valueOf = SpannableString.valueOf(text); if (!addLinks(valueOf, i)) { return false; } addLinkMovementMethod(textView); textView.setText(valueOf); return true; } else if (!addLinks((Spannable) text, i)) { return false; } else { addLinkMovementMethod(textView); return true; } } private static void applyLink(String str, int i, int i2, Spannable spannable) { spannable.setSpan(new URLSpan(str), i, i2, 33); } private static String findAddress(String str) { return Build.VERSION.SDK_INT >= 28 ? WebView.findAddress(str) : FindAddress.findAddress(str); } private static void gatherLinks(ArrayList arrayList, Spannable spannable, Pattern pattern, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) { Matcher matcher = pattern.matcher(spannable); while (matcher.find()) { int start = matcher.start(); int end = matcher.end(); if (matchFilter == null || matchFilter.acceptMatch(spannable, start, end)) { LinkSpec linkSpec = new LinkSpec(); linkSpec.url = makeUrl(matcher.group(0), strArr, matcher, transformFilter); linkSpec.start = start; linkSpec.end = end; arrayList.add(linkSpec); } } } private static void gatherMapLinks(ArrayList arrayList, Spannable spannable) { String obj = spannable.toString(); int i = 0; while (true) { try { String findAddress = findAddress(obj); if (findAddress != null) { int indexOf = obj.indexOf(findAddress); if (indexOf >= 0) { LinkSpec linkSpec = new LinkSpec(); int length = findAddress.length() + indexOf; linkSpec.start = indexOf + i; i += length; linkSpec.end = i; obj = obj.substring(length); try { String encode = URLEncoder.encode(findAddress, Constants.ENCODING); linkSpec.url = "geo:0,0?q=" + encode; arrayList.add(linkSpec); } catch (UnsupportedEncodingException unused) { } } else { return; } } else { return; } } catch (UnsupportedOperationException unused2) { return; } } } private static String makeUrl(@NonNull String str, @NonNull String[] strArr, Matcher matcher, @Nullable Linkify.TransformFilter transformFilter) { boolean z2; if (transformFilter != null) { str = transformFilter.transformUrl(matcher, str); } int i = 0; while (true) { z2 = true; if (i >= strArr.length) { z2 = false; break; } else if (!str.regionMatches(true, 0, strArr[i], 0, strArr[i].length())) { i++; } else if (!str.regionMatches(false, 0, strArr[i], 0, strArr[i].length())) { str = strArr[i] + str.substring(strArr[i].length()); } } return (z2 || strArr.length <= 0) ? str : a.H(new StringBuilder(), strArr[0], str); } private static void pruneOverlaps(ArrayList arrayList, Spannable spannable) { int i; int i2 = 0; Object[] objArr = (URLSpan[]) spannable.getSpans(0, spannable.length(), URLSpan.class); for (int i3 = 0; i3 < objArr.length; i3++) { LinkSpec linkSpec = new LinkSpec(); linkSpec.frameworkAddedSpan = objArr[i3]; linkSpec.start = spannable.getSpanStart(objArr[i3]); linkSpec.end = spannable.getSpanEnd(objArr[i3]); arrayList.add(linkSpec); } Collections.sort(arrayList, COMPARATOR); int size = arrayList.size(); while (i2 < size - 1) { LinkSpec linkSpec2 = arrayList.get(i2); int i4 = i2 + 1; LinkSpec linkSpec3 = arrayList.get(i4); int i5 = linkSpec2.start; int i6 = linkSpec3.start; if (i5 <= i6 && (i = linkSpec2.end) > i6) { int i7 = linkSpec3.end; int i8 = (i7 > i && i - i5 <= i7 - i6) ? i - i5 < i7 - i6 ? i2 : -1 : i4; if (i8 != -1) { Object obj = arrayList.get(i8).frameworkAddedSpan; if (obj != null) { spannable.removeSpan(obj); } arrayList.remove(i8); size--; } } i2 = i4; } } private static boolean shouldAddLinksFallbackToFramework() { return Build.VERSION.SDK_INT >= 28; } }