Detect GV2 capability in non-gcm Android devices

This commit is contained in:
Alan Evans 2020-09-28 16:54:10 -03:00 committed by GitHub
parent 9339823e84
commit e64c8007c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 34 deletions

View File

@ -255,13 +255,13 @@ public class Device {
final boolean groupsV2Supported;
if (this.capabilities != null) {
if (this.getGcmId() != null) {
groupsV2Supported = this.capabilities.isGv2() || this.capabilities.isGv2_2() || this.capabilities.isGv2_3();
} else if (this.apnId != null || this.voipApnId != null) {
groupsV2Supported = this.capabilities.isGv2_2() || this.capabilities.isGv2_3();
} else {
groupsV2Supported = this.capabilities.isGv2_3();
}
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();
} else {
groupsV2Supported = false;
}

View File

@ -12,40 +12,56 @@ public class DeviceTest {
@Test
@Parameters(method = "argumentsForTestIsGroupsV2Supported")
public void testIsGroupsV2Supported(final String gcmId, final String apnId, final boolean gv2Capability, final boolean gv2_2Capability, final boolean gv2_3Capability, final boolean expectGv2Supported) {
public void testIsGroupsV2Supported(final boolean master, final String apnId, final boolean gv2Capability, final boolean gv2_2Capability, final boolean gv2_3Capability, final boolean expectGv2Supported) {
final Device.DeviceCapabilities capabilities = new Device.DeviceCapabilities(gv2Capability, gv2_2Capability, gv2_3Capability, false, false);
final Device device = new Device(1, "test", "auth-token", "salt", "signaling-key", gcmId, apnId, null, false, 1, null, 0, 0, "user-agent", 0, capabilities);
final Device device = new Device(master ? 1 : 2, "test", "auth-token", "salt", "signaling-key", null, apnId, null, false, 1, null, 0, 0, "user-agent", 0, capabilities);
assertEquals(expectGv2Supported, device.isGroupsV2Supported());
}
private static Object argumentsForTestIsGroupsV2Supported() {
return new Object[] {
// gcmId apnId gv2 gv2-2 gv2-3 capable
new Object[] { "gcm-id", null, false, false, false, false },
new Object[] { "gcm-id", null, true, false, false, true },
new Object[] { "gcm-id", null, false, true, false, true },
new Object[] { "gcm-id", null, true, true, false, true },
new Object[] { "gcm-id", null, false, false, true, true },
new Object[] { "gcm-id", null, true, false, true, true },
new Object[] { "gcm-id", null, false, true, true, true },
new Object[] { "gcm-id", null, true, true, true, true },
new Object[] { null, "apn-id", false, false, false, false },
new Object[] { null, "apn-id", true, false, false, false },
new Object[] { null, "apn-id", false, true, false, true },
new Object[] { null, "apn-id", true, true, false, true },
new Object[] { null, "apn-id", false, false, true, true },
new Object[] { null, "apn-id", true, false, true, true },
new Object[] { null, "apn-id", false, true, true, true },
new Object[] { null, "apn-id", true, true, true, true },
new Object[] { null, null, false, false, false, false },
new Object[] { null, null, true, false, false, false },
new Object[] { null, null, false, true, false, false },
new Object[] { null, null, true, true, false, false },
new Object[] { null, null, false, false, true, true },
new Object[] { null, null, true, false, true, true },
new Object[] { null, null, false, true, true, true },
new Object[] { null, null, true, true, true, true }
// master apnId gv2 gv2-2 gv2-3 capable
// 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, false, false, true, true },
new Object[] { true, null, true, false, true, true },
new Object[] { true, null, false, true, true, true },
new Object[] { true, null, true, true, true, true },
// iOs master
new Object[] { true, "apn-id", false, false, false, false },
new Object[] { true, "apn-id", true, false, false, false },
new Object[] { true, "apn-id", false, true, false, true },
new Object[] { true, "apn-id", true, true, false, true },
new Object[] { true, "apn-id", false, false, true, true },
new Object[] { true, "apn-id", true, false, true, true },
new Object[] { true, "apn-id", false, true, true, true },
new Object[] { true, "apn-id", true, true, true, true },
// iOs linked
new Object[] { false, "apn-id", false, false, false, false },
new Object[] { false, "apn-id", true, false, false, false },
new Object[] { false, "apn-id", false, true, false, true },
new Object[] { false, "apn-id", true, true, false, true },
new Object[] { false, "apn-id", false, false, true, true },
new Object[] { false, "apn-id", true, false, true, true },
new Object[] { false, "apn-id", false, true, true, true },
new Object[] { false, "apn-id", true, true, true, true },
// desktop linked
new Object[] { false, null, false, false, false, false },
new Object[] { false, null, true, false, false, false },
new Object[] { false, null, false, true, false, false },
new Object[] { false, null, true, true, false, false },
new Object[] { false, null, false, false, true, true },
new Object[] { false, null, true, false, true, true },
new Object[] { false, null, false, true, true, true },
new Object[] { false, null, true, true, true, true }
};
}
}