Add support for sgnl:// proxy deep links.

fork-5.53.8
Greyson Parrelli 2021-02-03 14:09:38 -05:00
rodzic 64fe78ff9a
commit 524f3d6d08
3 zmienionych plików z 53 dodań i 2 usunięć

Wyświetl plik

@ -261,6 +261,8 @@
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="signal.tube" />
<data android:scheme="sgnl"
android:host="signal.tube" />
</intent-filter>
</activity>

Wyświetl plik

@ -103,11 +103,17 @@ public final class SignalProxyUtil {
* If this is a valid proxy deep link, this will return the embedded host. If not, it will return
* null.
*/
public static @Nullable String parseHostFromProxyDeepLink(@NonNull String proxyLink) {
public static @Nullable String parseHostFromProxyDeepLink(@Nullable String proxyLink) {
if (proxyLink == null) {
return null;
}
try {
URI uri = new URI(proxyLink);
if (!"https".equalsIgnoreCase(uri.getScheme())) {
if (!"https".equalsIgnoreCase(uri.getScheme()) &&
!"sgnl".equalsIgnoreCase(uri.getScheme()))
{
return null;
}

Wyświetl plik

@ -0,0 +1,43 @@
package org.thoughtcrime.securesms.util;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.Collection;
import static junit.framework.TestCase.assertEquals;
@RunWith(Parameterized.class)
public class SignalProxyUtilText_parseHostFromProxyDeepLink {
private final String input;
private final String output;
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{ "https://signal.tube/#proxy.parker.org", "proxy.parker.org" },
{ "sgnl://signal.tube/#proxy.parker.org", "proxy.parker.org" },
{ "https://signal.tube/", null },
{ "https://signal.tube/#", null },
{ "sgnl://signal.tube/", null },
{ "sgnl://signal.tube/#", null },
{ "http://signal.tube/#proxy.parker.org", null },
{ "signal.tube/#proxy.parker.org", null },
{ "", null },
{ null, null }
});
}
public SignalProxyUtilText_parseHostFromProxyDeepLink(String input, String output) {
this.input = input;
this.output = output;
}
@Test
public void parse() {
assertEquals(output, SignalProxyUtil.parseHostFromProxyDeepLink(input));
}
}