Require Android clients to support the gv2-3 capability

This commit is contained in:
Jon Chambers 2020-10-06 16:49:49 -04:00 committed by GitHub
parent 96cbdd5c37
commit e1c397993d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 20 deletions

View File

@ -252,8 +252,9 @@ public class DeviceController {
if (account.isGroupsV2Supported()) {
try {
switch (UserAgentUtil.parseUserAgentString(userAgent).getPlatform()) {
case DESKTOP:
case ANDROID: {
if (!capabilities.isGv2() && !capabilities.isGv2_2() && !capabilities.isGv2_3()) {
if (!capabilities.isGv2_3()) {
isDowngrade = true;
}
@ -267,14 +268,6 @@ public class DeviceController {
break;
}
case DESKTOP: {
if (!capabilities.isGv2_3()) {
isDowngrade = true;
}
break;
}
}
} catch (final UnrecognizedUserAgentException e) {
// If we can't parse the UA string, the client is for sure too old to support groups V2

View File

@ -255,13 +255,9 @@ public class Device {
final boolean groupsV2Supported;
if (this.capabilities != null) {
boolean ios = this.apnId != null || this.voipApnId != null;
boolean android = isMaster() && !ios;
if (android) groupsV2Supported = this.capabilities.isGv2() || this.capabilities.isGv2_2() || this.capabilities.isGv2_3();
else if (ios) groupsV2Supported = this.capabilities.isGv2_2() || this.capabilities.isGv2_3();
else groupsV2Supported = this.capabilities.isGv2_3();
final boolean ios = this.apnId != null || this.voipApnId != null;
groupsV2Supported = this.capabilities.isGv2_3() || (ios && this.capabilities.isGv2_2());
} else {
groupsV2Supported = false;
}

View File

@ -76,9 +76,9 @@ public class DeviceTest {
// Android master
new Object[] { true, null, false, false, false, false },
new Object[] { true, null, true, false, false, true },
new Object[] { true, null, false, true, false, true },
new Object[] { true, null, true, true, false, true },
new Object[] { true, null, true, false, false, false },
new Object[] { true, null, false, true, false, false },
new Object[] { true, null, true, true, false, false },
new Object[] { true, null, false, false, true, true },
new Object[] { true, null, true, false, true, true },
new Object[] { true, null, false, true, true, true },

View File

@ -246,9 +246,10 @@ public class DeviceControllerTest {
private static Object argumentsForDeviceDowngradeCapabilitiesTest() {
return new Object[] {
// User-Agent gv2 gv2-2 gv2-3 expected
new Object[] { "Signal-Android/4.68.3 Android/25", false, false, false, 409 },
new Object[] { "Signal-Android/4.68.3 Android/25", true, false, false, 200 },
new Object[] { "Signal-Android/4.68.3 Android/25", false, true, false, 200 },
new Object[] { "Signal-Android/4.68.3 Android/25", true, false, false, 409 },
new Object[] { "Signal-Android/4.68.3 Android/25", false, true, false, 409 },
new Object[] { "Signal-Android/4.68.3 Android/25", false, false, true, 200 },
new Object[] { "Signal-iOS/3.9.0", false, false, false, 409 },
new Object[] { "Signal-iOS/3.9.0", true, false, false, 409 },