From 6be3d2e42dcf7b81af259bb0f74d95558ffefb3b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 2 Aug 2018 13:43:21 -0400 Subject: [PATCH] Code generate Swift wrappers for protocol buffers. --- Scripts/ProtoWrappers.py | 20 +- Signal/SignalUBSan.supp | 2 +- .../ViewControllers/DebugUI/DebugUIMessages.m | 14 +- .../ViewControllers/DebugUI/DebugUIStress.m | 548 +++++++++--------- .../src/call/WebRTCCallMessageHandler.swift | 32 +- Signal/src/util/OWSBackupExportJob.m | 1 - Signal/test/SSKTests/SSKEnvelopeTest.swift | 6 +- Signal/test/util/CDSSigningCertificateTest.m | 2 +- Signal/test/util/ProtoParsingTest.m | 8 +- .../environment/NoopCallMessageHandler.swift | 12 +- SignalServiceKit/protobuf/SignalService.proto | 5 + .../src/Protos/Generated/SSKProto.swift | 439 ++++++++++++-- .../Protos/Generated/SignalService.pb.swift | 5 + 13 files changed, 735 insertions(+), 359 deletions(-) diff --git a/Scripts/ProtoWrappers.py b/Scripts/ProtoWrappers.py index b07d714d4..b80706da4 100755 --- a/Scripts/ProtoWrappers.py +++ b/Scripts/ProtoWrappers.py @@ -491,6 +491,15 @@ class MessageContext(BaseContext): writer.add('}') writer.newline() + # serializedDataIgnoringErrors() func + writer.add('// NOTE: This method is intended for debugging purposes only.') + writer.add('@objc public func serializedDataIgnoringErrors() -> Data? {') + writer.push_indent() + writer.add('return try! self.serializedData()') + writer.pop_indent() + writer.add('}') + writer.newline() + # serializedData() func writer.extend((''' @objc @@ -689,7 +698,16 @@ public func serializedData() throws -> Data { writer.pop_indent() writer.add('}') writer.newline() - + + # buildIgnoringErrors() func + writer.add('// NOTE: This method is intended for debugging purposes only.') + writer.add('@objc public func buildIgnoringErrors() -> %s? {' % self.swift_name) + writer.push_indent() + writer.add('return try! self.build()') + writer.pop_indent() + writer.add('}') + writer.newline() + # build() func writer.add('@objc public func build() throws -> %s {' % self.swift_name) writer.push_indent() diff --git a/Signal/SignalUBSan.supp b/Signal/SignalUBSan.supp index 048ffabf6..2972a418d 100644 --- a/Signal/SignalUBSan.supp +++ b/Signal/SignalUBSan.supp @@ -5,7 +5,7 @@ shift-base:CodedInputStream.m # generated protos bool:WebSocketResources.pb.m -bool:OWSSignalServiceProtos.pb.m +bool:SSKProto.pb.m bool:WhisperTextProtocol.pb.m bool:OWSWebRTCDataProtos.pb.m bool:OWSSignaliOSProtos.pb.m diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index 3b284cade..3dceb970f 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -3863,20 +3863,20 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac NSString *randomText = [self randomText]; NSString *text = [[[@(counter) description] stringByAppendingString:@" "] stringByAppendingString:randomText]; - OWSSignalServiceProtosDataMessageBuilder *dataMessageBuilder = [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoDataMessageBuilder *dataMessageBuilder = [SSKProtoDataMessageBuilder new]; [dataMessageBuilder setBody:text]; if ([thread isKindOfClass:[TSGroupThread class]]) { TSGroupThread *groupThread = (TSGroupThread *)thread; - OWSSignalServiceProtosGroupContextBuilder *groupBuilder = [OWSSignalServiceProtosGroupContextBuilder new]; - [groupBuilder setType:OWSSignalServiceProtosGroupContextTypeDeliver]; + SSKProtoGroupContextBuilder *groupBuilder = [SSKProtoGroupContextBuilder new]; + [groupBuilder setType:SSKProtoGroupContextTypeDeliver]; [groupBuilder setId:groupThread.groupModel.groupId]; - [dataMessageBuilder setGroup:groupBuilder.build]; + [dataMessageBuilder setGroup:groupBuilder.buildIgnoringErrors]; } - OWSSignalServiceProtosContentBuilder *payloadBuilder = [OWSSignalServiceProtosContentBuilder new]; - [payloadBuilder setDataMessage:dataMessageBuilder.build]; - NSData *plaintextData = [payloadBuilder build].data; + SSKProtoContentBuilder *payloadBuilder = [SSKProtoContentBuilder new]; + [payloadBuilder setDataMessage:dataMessageBuilder.buildIgnoringErrors]; + NSData *plaintextData = [payloadBuilder buildIgnoringErrors].serializedDataIgnoringErrors; // Try to use an arbitrary member of the current thread that isn't // ourselves as the sender. diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIStress.m b/Signal/src/ViewControllers/DebugUI/DebugUIStress.m index 8b6769863..bfb40ae3d 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIStress.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIStress.m @@ -13,6 +13,7 @@ #import #import #import +#import #import #import @@ -49,120 +50,135 @@ NS_ASSUME_NONNULL_BEGIN }]]; [items addObject:[OWSTableItem itemWithTitle:@"Send no payload message" actionBlock:^{ - [DebugUIStress sendStressMessage:thread block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = [OWSSignalServiceProtosContentBuilder new]; - return [[contentBuilder build] data]; - }]; + [DebugUIStress sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; + }]; }]]; [items addObject:[OWSTableItem itemWithTitle:@"Send empty null message" actionBlock:^{ - [DebugUIStress sendStressMessage:thread block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosNullMessageBuilder *nullMessageBuilder = [OWSSignalServiceProtosNullMessageBuilder new]; - contentBuilder.nullMessage = [nullMessageBuilder build]; - return [[contentBuilder build] data]; - }]; + [DebugUIStress sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoNullMessageBuilder *nullMessageBuilder = + [SSKProtoNullMessageBuilder new]; + contentBuilder.nullMessage = + [nullMessageBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; + }]; + }]]; + [items addObject:[OWSTableItem itemWithTitle:@"Send random null message" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoNullMessageBuilder *nullMessageBuilder = + [SSKProtoNullMessageBuilder new]; + NSUInteger contentLength = arc4random_uniform(32); + nullMessageBuilder.padding = + [Cryptography generateRandomBytes:contentLength]; + contentBuilder.nullMessage = + [nullMessageBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; + }]; + }]]; + [items addObject:[OWSTableItem itemWithTitle:@"Send empty sync message" + actionBlock:^{ + [DebugUIStress sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + contentBuilder.syncMessage = + [syncMessageBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; + }]; + }]]; + [items addObject:[OWSTableItem itemWithTitle:@"Send empty sync sent message" + actionBlock:^{ + [DebugUIStress sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + syncMessageBuilder.sent = + [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = + [syncMessageBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; + }]; }]]; - [items - addObject:[OWSTableItem itemWithTitle:@"Send random null message" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosNullMessageBuilder *nullMessageBuilder = - [OWSSignalServiceProtosNullMessageBuilder new]; - NSUInteger contentLength = arc4random_uniform(32); - nullMessageBuilder.padding = - [Cryptography generateRandomBytes:contentLength]; - contentBuilder.nullMessage = [nullMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; - [items - addObject:[OWSTableItem itemWithTitle:@"Send empty sync message" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; - [items - addObject:[OWSTableItem itemWithTitle:@"Send empty sync sent message" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; [items addObject:[OWSTableItem itemWithTitle:@"Send whitespace text data message" actionBlock:^{ [DebugUIStress sendStressMessage:thread block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; dataBuilder.body = @" "; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; + contentBuilder.dataMessage = + [dataBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; }]; }]]; - [items addObject:[OWSTableItem - itemWithTitle:@"Send bad attachment data message" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; - OWSSignalServiceProtosAttachmentPointerBuilder *attachmentPointer = - [OWSSignalServiceProtosAttachmentPointerBuilder new]; - [attachmentPointer setId:arc4random_uniform(32) + 1]; - [attachmentPointer setContentType:@"1"]; - [attachmentPointer setSize:arc4random_uniform(32) + 1]; - [attachmentPointer setDigest:[Cryptography generateRandomBytes:1]]; - [attachmentPointer setFileName:@" "]; - [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; + [items + addObject:[OWSTableItem + itemWithTitle:@"Send bad attachment data message" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; + SSKProtoAttachmentPointerBuilder *attachmentPointer = + [SSKProtoAttachmentPointerBuilder new]; + [attachmentPointer setId:arc4random_uniform(32) + 1]; + [attachmentPointer setContentType:@"1"]; + [attachmentPointer setSize:arc4random_uniform(32) + 1]; + [attachmentPointer setDigest:[Cryptography generateRandomBytes:1]]; + [attachmentPointer setFileName:@" "]; + [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; + contentBuilder.dataMessage = [dataBuilder buildIgnoringErrors]; + return + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; + }]; + }]]; [items addObject:[OWSTableItem itemWithTitle:@"Send normal text data message" actionBlock:^{ [DebugUIStress sendStressMessage:thread block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; dataBuilder.body = @"alice"; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; + contentBuilder.dataMessage = + [dataBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; }]; }]]; [items addObject:[OWSTableItem itemWithTitle:@"Send N text messages with same timestamp" @@ -173,17 +189,19 @@ NS_ASSUME_NONNULL_BEGIN sendStressMessage:thread timestamp:timestamp block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; dataBuilder.body = [NSString stringWithFormat:@"%@ %d", [NSUUID UUID].UUIDString, i]; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; + contentBuilder.dataMessage = + [dataBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; }]; } }]]; @@ -195,15 +213,16 @@ NS_ASSUME_NONNULL_BEGIN sendStressMessage:thread timestamp:timestamp block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; dataBuilder.body = [[NSUUID UUID].UUIDString stringByAppendingString:@" now"]; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; + contentBuilder.dataMessage = [dataBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; }]; }]]; [items addObject:[OWSTableItem @@ -215,15 +234,16 @@ NS_ASSUME_NONNULL_BEGIN sendStressMessage:thread timestamp:timestamp block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; dataBuilder.body = [[NSUUID UUID].UUIDString stringByAppendingString:@" now"]; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; + contentBuilder.dataMessage = [dataBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; }]; }]]; [items addObject:[OWSTableItem @@ -235,27 +255,27 @@ NS_ASSUME_NONNULL_BEGIN sendStressMessage:thread timestamp:timestamp block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; dataBuilder.body = [[NSUUID UUID].UUIDString stringByAppendingString:@" now"]; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - contentBuilder.dataMessage = [dataBuilder build]; - return [[contentBuilder build] data]; + contentBuilder.dataMessage = [dataBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; }]; }]]; [items addObject:[OWSTableItem itemWithTitle:@"Send N text messages with same timestamp" actionBlock:^{ - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoDataMessageBuilder *dataBuilder = [SSKProtoDataMessageBuilder new]; dataBuilder.body = @"alice"; - contentBuilder.dataMessage = [dataBuilder build]; + contentBuilder.dataMessage = [dataBuilder buildIgnoringErrors]; [DebugUIStress ensureGroupOfDataBuilder:dataBuilder thread:thread]; - NSData *data = [[contentBuilder build] data]; + NSData *data = + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; uint64_t timestamp = [NSDate ows_millisecondTimeStamp]; @@ -268,145 +288,151 @@ NS_ASSUME_NONNULL_BEGIN } }]]; [items - addObject:[OWSTableItem itemWithTitle:@"Send malformed sync sent message 1" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - sentBuilder.destination = @"abc"; - sentBuilder.timestamp = arc4random_uniform(32) + 1; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; - sentBuilder.message = [dataBuilder build]; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; + addObject:[OWSTableItem + itemWithTitle:@"Send malformed sync sent message 1" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + sentBuilder.destination = @"abc"; + sentBuilder.timestamp = arc4random_uniform(32) + 1; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; + sentBuilder.message = [dataBuilder buildIgnoringErrors]; + syncMessageBuilder.sent = [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = [syncMessageBuilder buildIgnoringErrors]; + return + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; + }]; + }]]; [items - addObject:[OWSTableItem itemWithTitle:@"Send malformed sync sent message 2" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - sentBuilder.destination = @"abc"; - sentBuilder.timestamp = 0; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; - sentBuilder.message = [dataBuilder build]; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; + addObject:[OWSTableItem + itemWithTitle:@"Send malformed sync sent message 2" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + sentBuilder.destination = @"abc"; + sentBuilder.timestamp = 0; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; + sentBuilder.message = [dataBuilder buildIgnoringErrors]; + syncMessageBuilder.sent = [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = [syncMessageBuilder buildIgnoringErrors]; + return + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; + }]; + }]]; [items - addObject:[OWSTableItem itemWithTitle:@"Send malformed sync sent message 3" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - sentBuilder.destination = @"abc"; - sentBuilder.timestamp = 0; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; - dataBuilder.body = @" "; - sentBuilder.message = [dataBuilder build]; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; + addObject:[OWSTableItem + itemWithTitle:@"Send malformed sync sent message 3" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + sentBuilder.destination = @"abc"; + sentBuilder.timestamp = 0; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; + dataBuilder.body = @" "; + sentBuilder.message = [dataBuilder buildIgnoringErrors]; + syncMessageBuilder.sent = [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = [syncMessageBuilder buildIgnoringErrors]; + return + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; + }]; + }]]; [items - addObject:[OWSTableItem itemWithTitle:@"Send malformed sync sent message 4" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - sentBuilder.destination = @"abc"; - sentBuilder.timestamp = 0; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; - dataBuilder.body = @" "; - OWSSignalServiceProtosGroupContextBuilder *groupBuilder = - [OWSSignalServiceProtosGroupContextBuilder new]; - [groupBuilder setId:[Cryptography generateRandomBytes:1]]; - dataBuilder.group = [groupBuilder build]; - sentBuilder.message = [dataBuilder build]; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; + addObject:[OWSTableItem + itemWithTitle:@"Send malformed sync sent message 4" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + sentBuilder.destination = @"abc"; + sentBuilder.timestamp = 0; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; + dataBuilder.body = @" "; + SSKProtoGroupContextBuilder *groupBuilder = + [SSKProtoGroupContextBuilder new]; + [groupBuilder setId:[Cryptography generateRandomBytes:1]]; + dataBuilder.group = [groupBuilder buildIgnoringErrors]; + sentBuilder.message = [dataBuilder buildIgnoringErrors]; + syncMessageBuilder.sent = [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = [syncMessageBuilder buildIgnoringErrors]; + return + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; + }]; + }]]; [items - addObject:[OWSTableItem itemWithTitle:@"Send malformed sync sent message 5" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - sentBuilder.destination = @"abc"; - sentBuilder.timestamp = 0; - OWSSignalServiceProtosDataMessageBuilder *dataBuilder = - [OWSSignalServiceProtosDataMessageBuilder new]; - dataBuilder.body = @" "; - OWSSignalServiceProtosGroupContextBuilder *groupBuilder = - [OWSSignalServiceProtosGroupContextBuilder new]; - [groupBuilder setId:[Cryptography generateRandomBytes:1]]; - dataBuilder.group = [groupBuilder build]; - sentBuilder.message = [dataBuilder build]; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; - [items - addObject:[OWSTableItem itemWithTitle:@"Send empty sync sent message 6" - actionBlock:^{ - [DebugUIStress - sendStressMessage:thread - block:^(SignalRecipient *recipient) { - OWSSignalServiceProtosContentBuilder *contentBuilder = - [OWSSignalServiceProtosContentBuilder new]; - OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = - [OWSSignalServiceProtosSyncMessageBuilder new]; - OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = - [OWSSignalServiceProtosSyncMessageSentBuilder new]; - sentBuilder.destination = @"abc"; - syncMessageBuilder.sent = [sentBuilder build]; - contentBuilder.syncMessage = [syncMessageBuilder build]; - return [[contentBuilder build] data]; - }]; - }]]; - + addObject:[OWSTableItem + itemWithTitle:@"Send malformed sync sent message 5" + actionBlock:^{ + [DebugUIStress + sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + sentBuilder.destination = @"abc"; + sentBuilder.timestamp = 0; + SSKProtoDataMessageBuilder *dataBuilder = + [SSKProtoDataMessageBuilder new]; + dataBuilder.body = @" "; + SSKProtoGroupContextBuilder *groupBuilder = + [SSKProtoGroupContextBuilder new]; + [groupBuilder setId:[Cryptography generateRandomBytes:1]]; + dataBuilder.group = [groupBuilder buildIgnoringErrors]; + sentBuilder.message = [dataBuilder buildIgnoringErrors]; + syncMessageBuilder.sent = [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = [syncMessageBuilder buildIgnoringErrors]; + return + [[contentBuilder buildIgnoringErrors] serializedDataIgnoringErrors]; + }]; + }]]; + [items addObject:[OWSTableItem itemWithTitle:@"Send empty sync sent message 6" + actionBlock:^{ + [DebugUIStress sendStressMessage:thread + block:^(SignalRecipient *recipient) { + SSKProtoContentBuilder *contentBuilder = + [SSKProtoContentBuilder new]; + SSKProtoSyncMessageBuilder *syncMessageBuilder = + [SSKProtoSyncMessageBuilder new]; + SSKProtoSyncMessageSentBuilder *sentBuilder = + [SSKProtoSyncMessageSentBuilder new]; + sentBuilder.destination = @"abc"; + syncMessageBuilder.sent = + [sentBuilder buildIgnoringErrors]; + contentBuilder.syncMessage = + [syncMessageBuilder buildIgnoringErrors]; + return [[contentBuilder buildIgnoringErrors] + serializedDataIgnoringErrors]; + }]; + }]]; + if ([thread isKindOfClass:[TSGroupThread class]]) { TSGroupThread *groupThread = (TSGroupThread *)thread; [items addObject:[OWSTableItem itemWithTitle:@"Hallucinate twin group" @@ -417,7 +443,7 @@ NS_ASSUME_NONNULL_BEGIN return [OWSTableSection sectionWithTitle:self.name items:items]; } -+ (void)ensureGroupOfDataBuilder:(OWSSignalServiceProtosDataMessageBuilder *)dataBuilder thread:(TSThread *)thread ++ (void)ensureGroupOfDataBuilder:(SSKProtoDataMessageBuilder *)dataBuilder thread:(TSThread *)thread { OWSAssert(dataBuilder); OWSAssert(thread); @@ -427,10 +453,10 @@ NS_ASSUME_NONNULL_BEGIN } TSGroupThread *groupThread = (TSGroupThread *)thread; - OWSSignalServiceProtosGroupContextBuilder *groupBuilder = [OWSSignalServiceProtosGroupContextBuilder new]; - [groupBuilder setType:OWSSignalServiceProtosGroupContextTypeDeliver]; + SSKProtoGroupContextBuilder *groupBuilder = [SSKProtoGroupContextBuilder new]; + [groupBuilder setType:SSKProtoGroupContextTypeDeliver]; [groupBuilder setId:groupThread.groupModel.groupId]; - [dataBuilder setGroup:groupBuilder.build]; + [dataBuilder setGroup:groupBuilder.buildIgnoringErrors]; } + (void)sendStressMessage:(TSOutgoingMessage *)message diff --git a/Signal/src/call/WebRTCCallMessageHandler.swift b/Signal/src/call/WebRTCCallMessageHandler.swift index 8a358143f..f439752f0 100644 --- a/Signal/src/call/WebRTCCallMessageHandler.swift +++ b/Signal/src/call/WebRTCCallMessageHandler.swift @@ -9,7 +9,7 @@ import SignalMessaging @objc(OWSWebRTCCallMessageHandler) public class WebRTCCallMessageHandler: NSObject, OWSCallMessageHandler { - // MARK - Properties + // MARK: - Properties let TAG = "[WebRTCCallMessageHandler]" @@ -33,34 +33,22 @@ public class WebRTCCallMessageHandler: NSObject, OWSCallMessageHandler { // MARK: - Call Handlers - public func receivedOffer(_ offer: OWSSignalServiceProtosCallMessageOffer, from callerId: String) { + public func receivedOffer(_ offer: SSKProtoCallMessageOffer, from callerId: String) { SwiftAssertIsOnMainThread(#function) - guard offer.hasId() else { - owsFail("no callId in \(#function)") - return - } let thread = TSContactThread.getOrCreateThread(contactId: callerId) self.callService.handleReceivedOffer(thread: thread, callId: offer.id, sessionDescription: offer.sessionDescription) } - public func receivedAnswer(_ answer: OWSSignalServiceProtosCallMessageAnswer, from callerId: String) { + public func receivedAnswer(_ answer: SSKProtoCallMessageAnswer, from callerId: String) { SwiftAssertIsOnMainThread(#function) - guard answer.hasId() else { - owsFail("no callId in \(#function)") - return - } let thread = TSContactThread.getOrCreateThread(contactId: callerId) self.callService.handleReceivedAnswer(thread: thread, callId: answer.id, sessionDescription: answer.sessionDescription) } - public func receivedIceUpdate(_ iceUpdate: OWSSignalServiceProtosCallMessageIceUpdate, from callerId: String) { + public func receivedIceUpdate(_ iceUpdate: SSKProtoCallMessageIceUpdate, from callerId: String) { SwiftAssertIsOnMainThread(#function) - guard iceUpdate.hasId() else { - owsFail("no callId in \(#function)") - return - } let thread = TSContactThread.getOrCreateThread(contactId: callerId) @@ -71,23 +59,15 @@ public class WebRTCCallMessageHandler: NSObject, OWSCallMessageHandler { self.callService.handleRemoteAddedIceCandidate(thread: thread, callId: iceUpdate.id, sdp: iceUpdate.sdp, lineIndex: lineIndex, mid: iceUpdate.sdpMid) } - public func receivedHangup(_ hangup: OWSSignalServiceProtosCallMessageHangup, from callerId: String) { + public func receivedHangup(_ hangup: SSKProtoCallMessageHangup, from callerId: String) { SwiftAssertIsOnMainThread(#function) - guard hangup.hasId() else { - owsFail("no callId in \(#function)") - return - } let thread = TSContactThread.getOrCreateThread(contactId: callerId) self.callService.handleRemoteHangup(thread: thread, callId: hangup.id) } - public func receivedBusy(_ busy: OWSSignalServiceProtosCallMessageBusy, from callerId: String) { + public func receivedBusy(_ busy: SSKProtoCallMessageBusy, from callerId: String) { SwiftAssertIsOnMainThread(#function) - guard busy.hasId() else { - owsFail("no callId in \(#function)") - return - } let thread = TSContactThread.getOrCreateThread(contactId: callerId) self.callService.handleRemoteBusy(thread: thread, callId: busy.id) diff --git a/Signal/src/util/OWSBackupExportJob.m b/Signal/src/util/OWSBackupExportJob.m index 89a686ec3..a99f52bd0 100644 --- a/Signal/src/util/OWSBackupExportJob.m +++ b/Signal/src/util/OWSBackupExportJob.m @@ -5,7 +5,6 @@ #import "OWSBackupExportJob.h" #import "OWSBackupIO.h" #import "OWSDatabaseMigration.h" -#import "OWSSignalServiceProtos.pb.h" #import "Signal-Swift.h" #import #import diff --git a/Signal/test/SSKTests/SSKEnvelopeTest.swift b/Signal/test/SSKTests/SSKEnvelopeTest.swift index f3945b045..47e00dfcb 100644 --- a/Signal/test/SSKTests/SSKEnvelopeTest.swift +++ b/Signal/test/SSKTests/SSKEnvelopeTest.swift @@ -33,11 +33,11 @@ class SSKProtoEnvelopeTest: XCTestCase { func testParse_ValidData() { // `encodedData` was derived thus: - // let builder = OWSSignalServiceProtosEnvelopeBuilder() + // let builder = SSKProtoEnvelopeBuilder() // builder.setTimestamp(NSDate.ows_millisecondTimeStamp()) // builder.setSource("+15551231234") // builder.setSourceDevice(1) - // builder.setType(OWSSignalServiceProtosEnvelopeType.ciphertext) + // builder.setType(SSKProtoEnvelopeType.ciphertext) // let encodedData = builder.build().data()!.base64EncodedString() let encodedData = "CAESDCsxNTU1MTIzMTIzNCjKm4WazSw4AQ==" let data = Data(base64Encoded: encodedData)! @@ -47,7 +47,7 @@ class SSKProtoEnvelopeTest: XCTestCase { func testParse_invalidData() { // `encodedData` was derived thus: - // let builder = OWSSignalServiceProtosEnvelopeBuilder() + // let builder = SSKProtoEnvelopeBuilder() // builder.setTimestamp(NSDate.ows_millisecondTimeStamp()) // builder.setSource("+15551231234") // builder.setSourceDevice(1) diff --git a/Signal/test/util/CDSSigningCertificateTest.m b/Signal/test/util/CDSSigningCertificateTest.m index bc90904fd..5c4ce27ba 100644 --- a/Signal/test/util/CDSSigningCertificateTest.m +++ b/Signal/test/util/CDSSigningCertificateTest.m @@ -2,7 +2,7 @@ // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // -#import "OWSSignalServiceProtos.pb.h" +#import "SSKProto.pb.h" #import #import #import diff --git a/Signal/test/util/ProtoParsingTest.m b/Signal/test/util/ProtoParsingTest.m index cae8f9a56..330edfdf9 100644 --- a/Signal/test/util/ProtoParsingTest.m +++ b/Signal/test/util/ProtoParsingTest.m @@ -2,7 +2,7 @@ // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // -#import "OWSSignalServiceProtos.pb.h" +#import "SSKProto.pb.h" #import @interface ProtoParsingTest : XCTestCase @@ -15,14 +15,14 @@ - (void)testProtoParsing_nil { - OWSSignalServiceProtosEnvelope *_Nullable envelope = [OWSSignalServiceProtosEnvelope parseFromData:nil]; + SSKProtoEnvelope *_Nullable envelope = [SSKProtoEnvelope parseFromData:nil]; XCTAssertNotNil(envelope); } - (void)testProtoParsing_empty { NSData *data = [NSData new]; - OWSSignalServiceProtosEnvelope *_Nullable envelope = [OWSSignalServiceProtosEnvelope parseFromData:data]; + SSKProtoEnvelope *_Nullable envelope = [SSKProtoEnvelope parseFromData:data]; XCTAssertNotNil(envelope); } @@ -30,7 +30,7 @@ { @try { NSData *data = [@"test" dataUsingEncoding:NSUTF8StringEncoding]; - [OWSSignalServiceProtosEnvelope parseFromData:data]; + [SSKProtoEnvelope parseFromData:data]; XCTFail(@"Missing expected exception"); } @catch (NSException *exception) { // Exception is expected. diff --git a/SignalMessaging/environment/NoopCallMessageHandler.swift b/SignalMessaging/environment/NoopCallMessageHandler.swift index 1af88b458..f7019ad6a 100644 --- a/SignalMessaging/environment/NoopCallMessageHandler.swift +++ b/SignalMessaging/environment/NoopCallMessageHandler.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // import SignalServiceKit @@ -7,23 +7,23 @@ import SignalServiceKit @objc public class NoopCallMessageHandler: NSObject, OWSCallMessageHandler { - public func receivedOffer(_ offer: OWSSignalServiceProtosCallMessageOffer, from callerId: String) { + public func receivedOffer(_ offer: SSKProtoCallMessageOffer, from callerId: String) { owsFail("\(self.logTag) in \(#function).") } - public func receivedAnswer(_ answer: OWSSignalServiceProtosCallMessageAnswer, from callerId: String) { + public func receivedAnswer(_ answer: SSKProtoCallMessageAnswer, from callerId: String) { owsFail("\(self.logTag) in \(#function).") } - public func receivedIceUpdate(_ iceUpdate: OWSSignalServiceProtosCallMessageIceUpdate, from callerId: String) { + public func receivedIceUpdate(_ iceUpdate: SSKProtoCallMessageIceUpdate, from callerId: String) { owsFail("\(self.logTag) in \(#function).") } - public func receivedHangup(_ hangup: OWSSignalServiceProtosCallMessageHangup, from callerId: String) { + public func receivedHangup(_ hangup: SSKProtoCallMessageHangup, from callerId: String) { owsFail("\(self.logTag) in \(#function).") } - public func receivedBusy(_ busy: OWSSignalServiceProtosCallMessageBusy, from callerId: String) { + public func receivedBusy(_ busy: SSKProtoCallMessageBusy, from callerId: String) { owsFail("\(self.logTag) in \(#function).") } } diff --git a/SignalServiceKit/protobuf/SignalService.proto b/SignalServiceKit/protobuf/SignalService.proto index f33043799..2bb894046 100644 --- a/SignalServiceKit/protobuf/SignalService.proto +++ b/SignalServiceKit/protobuf/SignalService.proto @@ -50,6 +50,7 @@ message CallMessage { optional uint64 id = 1; // Signal-iOS renamed the description field to avoid // conflicts with [NSObject description]. + // @required optional string sessionDescription = 2; } @@ -58,14 +59,18 @@ message CallMessage { optional uint64 id = 1; // Signal-iOS renamed the description field to avoid // conflicts with [NSObject description]. + // @required optional string sessionDescription = 2; } message IceUpdate { // @required optional uint64 id = 1; + // @required optional string sdpMid = 2; + // @required optional uint32 sdpMLineIndex = 3; + // @required optional string sdp = 4; } diff --git a/SignalServiceKit/src/Protos/Generated/SSKProto.swift b/SignalServiceKit/src/Protos/Generated/SSKProto.swift index a58860a60..5d69dc700 100644 --- a/SignalServiceKit/src/Protos/Generated/SSKProto.swift +++ b/SignalServiceKit/src/Protos/Generated/SSKProto.swift @@ -80,6 +80,11 @@ public enum SSKProtoError: Error { proto.content = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoEnvelope? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoEnvelope { let wrapper = try SSKProtoEnvelope.parseProto(proto) return wrapper @@ -138,6 +143,11 @@ public enum SSKProtoError: Error { self.timestamp = timestamp } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -214,6 +224,11 @@ public enum SSKProtoError: Error { proto.receiptMessage = valueParam.proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoContent? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoContent { let wrapper = try SSKProtoContent.parseProto(proto) return wrapper @@ -261,6 +276,11 @@ public enum SSKProtoError: Error { self.receiptMessage = receiptMessage } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -331,6 +351,11 @@ public enum SSKProtoError: Error { proto.sessionDescription = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoCallMessageOffer? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoCallMessageOffer { let wrapper = try SSKProtoCallMessageOffer.parseProto(proto) return wrapper @@ -341,20 +366,19 @@ public enum SSKProtoError: Error { @objc public let id: UInt64 - @objc public var sessionDescription: String? { - guard proto.hasSessionDescription else { - return nil - } - return proto.sessionDescription - } - @objc public var hasSessionDescription: Bool { - return proto.hasSessionDescription - } + @objc public let sessionDescription: String private init(proto: SignalServiceProtos_CallMessage.Offer, - id: UInt64) { + id: UInt64, + sessionDescription: String) { self.proto = proto self.id = id + self.sessionDescription = sessionDescription + } + + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() } @objc @@ -373,12 +397,18 @@ public enum SSKProtoError: Error { } let id = proto.id + guard proto.hasSessionDescription else { + throw SSKProtoError.invalidProtobuf(description: "\(logTag) missing required field: sessionDescription") + } + let sessionDescription = proto.sessionDescription + // MARK: - Begin Validation Logic for SSKProtoCallMessageOffer - // MARK: - End Validation Logic for SSKProtoCallMessageOffer - let result = SSKProtoCallMessageOffer(proto: proto, - id: id) + id: id, + sessionDescription: sessionDescription) return result } } @@ -403,6 +433,11 @@ public enum SSKProtoError: Error { proto.sessionDescription = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoCallMessageAnswer? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoCallMessageAnswer { let wrapper = try SSKProtoCallMessageAnswer.parseProto(proto) return wrapper @@ -413,20 +448,19 @@ public enum SSKProtoError: Error { @objc public let id: UInt64 - @objc public var sessionDescription: String? { - guard proto.hasSessionDescription else { - return nil - } - return proto.sessionDescription - } - @objc public var hasSessionDescription: Bool { - return proto.hasSessionDescription - } + @objc public let sessionDescription: String private init(proto: SignalServiceProtos_CallMessage.Answer, - id: UInt64) { + id: UInt64, + sessionDescription: String) { self.proto = proto self.id = id + self.sessionDescription = sessionDescription + } + + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() } @objc @@ -445,12 +479,18 @@ public enum SSKProtoError: Error { } let id = proto.id + guard proto.hasSessionDescription else { + throw SSKProtoError.invalidProtobuf(description: "\(logTag) missing required field: sessionDescription") + } + let sessionDescription = proto.sessionDescription + // MARK: - Begin Validation Logic for SSKProtoCallMessageAnswer - // MARK: - End Validation Logic for SSKProtoCallMessageAnswer - let result = SSKProtoCallMessageAnswer(proto: proto, - id: id) + id: id, + sessionDescription: sessionDescription) return result } } @@ -483,6 +523,11 @@ public enum SSKProtoError: Error { proto.sdp = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoCallMessageIceUpdate? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoCallMessageIceUpdate { let wrapper = try SSKProtoCallMessageIceUpdate.parseProto(proto) return wrapper @@ -493,37 +538,27 @@ public enum SSKProtoError: Error { @objc public let id: UInt64 - @objc public var sdpMid: String? { - guard proto.hasSdpMid else { - return nil - } - return proto.sdpMid - } - @objc public var hasSdpMid: Bool { - return proto.hasSdpMid - } + @objc public let sdpMid: String - @objc public var sdpMlineIndex: UInt32 { - return proto.sdpMlineIndex - } - @objc public var hasSdpMlineIndex: Bool { - return proto.hasSdpMlineIndex - } + @objc public let sdpMlineIndex: UInt32 - @objc public var sdp: String? { - guard proto.hasSdp else { - return nil - } - return proto.sdp - } - @objc public var hasSdp: Bool { - return proto.hasSdp - } + @objc public let sdp: String private init(proto: SignalServiceProtos_CallMessage.IceUpdate, - id: UInt64) { + id: UInt64, + sdpMid: String, + sdpMlineIndex: UInt32, + sdp: String) { self.proto = proto self.id = id + self.sdpMid = sdpMid + self.sdpMlineIndex = sdpMlineIndex + self.sdp = sdp + } + + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() } @objc @@ -542,12 +577,30 @@ public enum SSKProtoError: Error { } let id = proto.id + guard proto.hasSdpMid else { + throw SSKProtoError.invalidProtobuf(description: "\(logTag) missing required field: sdpMid") + } + let sdpMid = proto.sdpMid + + guard proto.hasSdpMlineIndex else { + throw SSKProtoError.invalidProtobuf(description: "\(logTag) missing required field: sdpMlineIndex") + } + let sdpMlineIndex = proto.sdpMlineIndex + + guard proto.hasSdp else { + throw SSKProtoError.invalidProtobuf(description: "\(logTag) missing required field: sdp") + } + let sdp = proto.sdp + // MARK: - Begin Validation Logic for SSKProtoCallMessageIceUpdate - // MARK: - End Validation Logic for SSKProtoCallMessageIceUpdate - let result = SSKProtoCallMessageIceUpdate(proto: proto, - id: id) + id: id, + sdpMid: sdpMid, + sdpMlineIndex: sdpMlineIndex, + sdp: sdp) return result } } @@ -568,6 +621,11 @@ public enum SSKProtoError: Error { proto.id = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoCallMessageBusy? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoCallMessageBusy { let wrapper = try SSKProtoCallMessageBusy.parseProto(proto) return wrapper @@ -584,6 +642,11 @@ public enum SSKProtoError: Error { self.id = id } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -626,6 +689,11 @@ public enum SSKProtoError: Error { proto.id = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoCallMessageHangup? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoCallMessageHangup { let wrapper = try SSKProtoCallMessageHangup.parseProto(proto) return wrapper @@ -642,6 +710,11 @@ public enum SSKProtoError: Error { self.id = id } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -714,6 +787,11 @@ public enum SSKProtoError: Error { proto.profileKey = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoCallMessage? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoCallMessage { let wrapper = try SSKProtoCallMessage.parseProto(proto) return wrapper @@ -768,6 +846,11 @@ public enum SSKProtoError: Error { self.busy = busy } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -865,6 +948,11 @@ public enum SSKProtoError: Error { proto.flags = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageQuoteQuotedAttachment? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageQuoteQuotedAttachment { let wrapper = try SSKProtoDataMessageQuoteQuotedAttachment.parseProto(proto) return wrapper @@ -911,6 +999,11 @@ public enum SSKProtoError: Error { self.thumbnail = thumbnail } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -975,6 +1068,11 @@ public enum SSKProtoError: Error { proto.attachments = unwrappedItems } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageQuote? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageQuote { let wrapper = try SSKProtoDataMessageQuote.parseProto(proto) return wrapper @@ -1009,6 +1107,11 @@ public enum SSKProtoError: Error { self.attachments = attachments } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1084,6 +1187,11 @@ public enum SSKProtoError: Error { proto.displayName = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageContactName? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageContactName { let wrapper = try SSKProtoDataMessageContactName.parseProto(proto) return wrapper @@ -1156,6 +1264,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1227,6 +1340,11 @@ public enum SSKProtoError: Error { proto.label = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageContactPhone? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageContactPhone { let wrapper = try SSKProtoDataMessageContactPhone.parseProto(proto) return wrapper @@ -1266,6 +1384,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1337,6 +1460,11 @@ public enum SSKProtoError: Error { proto.label = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageContactEmail? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageContactEmail { let wrapper = try SSKProtoDataMessageContactEmail.parseProto(proto) return wrapper @@ -1376,6 +1504,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1468,6 +1601,11 @@ public enum SSKProtoError: Error { proto.country = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageContactPostalAddress? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageContactPostalAddress { let wrapper = try SSKProtoDataMessageContactPostalAddress.parseProto(proto) return wrapper @@ -1567,6 +1705,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1607,6 +1750,11 @@ public enum SSKProtoError: Error { proto.isProfile = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageContactAvatar? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageContactAvatar { let wrapper = try SSKProtoDataMessageContactAvatar.parseProto(proto) return wrapper @@ -1633,6 +1781,11 @@ public enum SSKProtoError: Error { self.avatar = avatar } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1725,6 +1878,11 @@ public enum SSKProtoError: Error { proto.organization = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessageContact? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessageContact { let wrapper = try SSKProtoDataMessageContact.parseProto(proto) return wrapper @@ -1773,6 +1931,11 @@ public enum SSKProtoError: Error { self.avatar = avatar } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -1918,6 +2081,11 @@ public enum SSKProtoError: Error { proto.contact = unwrappedItems } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoDataMessage? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoDataMessage { let wrapper = try SSKProtoDataMessage.parseProto(proto) return wrapper @@ -1993,6 +2161,11 @@ public enum SSKProtoError: Error { self.contact = contact } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2055,6 +2228,11 @@ public enum SSKProtoError: Error { proto.padding = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoNullMessage? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoNullMessage { let wrapper = try SSKProtoNullMessage.parseProto(proto) return wrapper @@ -2077,6 +2255,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2148,6 +2331,11 @@ public enum SSKProtoError: Error { proto.timestamp = unwrappedItems } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoReceiptMessage? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoReceiptMessage { let wrapper = try SSKProtoReceiptMessage.parseProto(proto) return wrapper @@ -2168,6 +2356,11 @@ public enum SSKProtoError: Error { self.type = type } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2246,6 +2439,11 @@ public enum SSKProtoError: Error { proto.nullMessage = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoVerified? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoVerified { let wrapper = try SSKProtoVerified.parseProto(proto) return wrapper @@ -2289,6 +2487,11 @@ public enum SSKProtoError: Error { self.destination = destination } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2343,6 +2546,11 @@ public enum SSKProtoError: Error { proto.expirationStartTimestamp = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageSent? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageSent { let wrapper = try SSKProtoSyncMessageSent.parseProto(proto) return wrapper @@ -2386,6 +2594,11 @@ public enum SSKProtoError: Error { self.message = message } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2432,6 +2645,11 @@ public enum SSKProtoError: Error { proto.isComplete = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageContacts? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageContacts { let wrapper = try SSKProtoSyncMessageContacts.parseProto(proto) return wrapper @@ -2455,6 +2673,11 @@ public enum SSKProtoError: Error { self.blob = blob } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2497,6 +2720,11 @@ public enum SSKProtoError: Error { proto.blob = valueParam.proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageGroups? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageGroups { let wrapper = try SSKProtoSyncMessageGroups.parseProto(proto) return wrapper @@ -2516,6 +2744,11 @@ public enum SSKProtoError: Error { self.blob = blob } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2568,6 +2801,11 @@ public enum SSKProtoError: Error { proto.numbers = unwrappedItems } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageBlocked? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageBlocked { let wrapper = try SSKProtoSyncMessageBlocked.parseProto(proto) return wrapper @@ -2584,6 +2822,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2650,6 +2893,11 @@ public enum SSKProtoError: Error { proto.type = SSKProtoSyncMessageRequestTypeUnwrap(valueParam) } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageRequest? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageRequest { let wrapper = try SSKProtoSyncMessageRequest.parseProto(proto) return wrapper @@ -2666,6 +2914,11 @@ public enum SSKProtoError: Error { self.type = type } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2712,6 +2965,11 @@ public enum SSKProtoError: Error { proto.timestamp = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageRead? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageRead { let wrapper = try SSKProtoSyncMessageRead.parseProto(proto) return wrapper @@ -2732,6 +2990,11 @@ public enum SSKProtoError: Error { self.timestamp = timestamp } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2780,6 +3043,11 @@ public enum SSKProtoError: Error { proto.readReceipts = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessageConfiguration? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessageConfiguration { let wrapper = try SSKProtoSyncMessageConfiguration.parseProto(proto) return wrapper @@ -2799,6 +3067,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -2877,6 +3150,11 @@ public enum SSKProtoError: Error { proto.padding = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoSyncMessage? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoSyncMessage { let wrapper = try SSKProtoSyncMessage.parseProto(proto) return wrapper @@ -2952,6 +3230,11 @@ public enum SSKProtoError: Error { self.configuration = configuration } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -3091,6 +3374,11 @@ public enum SSKProtoError: Error { proto.height = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoAttachmentPointer? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoAttachmentPointer { let wrapper = try SSKProtoAttachmentPointer.parseProto(proto) return wrapper @@ -3185,6 +3473,11 @@ public enum SSKProtoError: Error { self.id = id } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -3283,6 +3576,11 @@ public enum SSKProtoError: Error { proto.avatar = valueParam.proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoGroupContext? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoGroupContext { let wrapper = try SSKProtoGroupContext.parseProto(proto) return wrapper @@ -3324,6 +3622,11 @@ public enum SSKProtoError: Error { self.avatar = avatar } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -3382,6 +3685,11 @@ public enum SSKProtoError: Error { proto.length = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoContactDetailsAvatar? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoContactDetailsAvatar { let wrapper = try SSKProtoContactDetailsAvatar.parseProto(proto) return wrapper @@ -3411,6 +3719,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -3475,6 +3788,11 @@ public enum SSKProtoError: Error { proto.expireTimer = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoContactDetails? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoContactDetails { let wrapper = try SSKProtoContactDetails.parseProto(proto) return wrapper @@ -3549,6 +3867,11 @@ public enum SSKProtoError: Error { self.verified = verified } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -3607,6 +3930,11 @@ public enum SSKProtoError: Error { proto.length = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoGroupDetailsAvatar? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoGroupDetailsAvatar { let wrapper = try SSKProtoGroupDetailsAvatar.parseProto(proto) return wrapper @@ -3636,6 +3964,11 @@ public enum SSKProtoError: Error { self.proto = proto } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() @@ -3706,6 +4039,11 @@ public enum SSKProtoError: Error { proto.color = valueParam } + // NOTE: This method is intended for debugging purposes only. + @objc public func buildIgnoringErrors() -> SSKProtoGroupDetails? { + return try! self.build() + } + @objc public func build() throws -> SSKProtoGroupDetails { let wrapper = try SSKProtoGroupDetails.parseProto(proto) return wrapper @@ -3767,6 +4105,11 @@ public enum SSKProtoError: Error { self.avatar = avatar } + // NOTE: This method is intended for debugging purposes only. + @objc public func serializedDataIgnoringErrors() -> Data? { + return try! self.serializedData() + } + @objc public func serializedData() throws -> Data { return try self.proto.serializedData() diff --git a/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift b/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift index e594559a1..0e8de14c2 100644 --- a/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift +++ b/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift @@ -282,6 +282,7 @@ struct SignalServiceProtos_CallMessage { /// Signal-iOS renamed the description field to avoid /// conflicts with [NSObject description]. + /// @required var sessionDescription: String { get {return _sessionDescription ?? String()} set {_sessionDescription = newValue} @@ -316,6 +317,7 @@ struct SignalServiceProtos_CallMessage { /// Signal-iOS renamed the description field to avoid /// conflicts with [NSObject description]. + /// @required var sessionDescription: String { get {return _sessionDescription ?? String()} set {_sessionDescription = newValue} @@ -348,6 +350,7 @@ struct SignalServiceProtos_CallMessage { /// Clears the value of `id`. Subsequent reads from it will return its default value. mutating func clearID() {self._id = nil} + /// @required var sdpMid: String { get {return _sdpMid ?? String()} set {_sdpMid = newValue} @@ -357,6 +360,7 @@ struct SignalServiceProtos_CallMessage { /// Clears the value of `sdpMid`. Subsequent reads from it will return its default value. mutating func clearSdpMid() {self._sdpMid = nil} + /// @required var sdpMlineIndex: UInt32 { get {return _sdpMlineIndex ?? 0} set {_sdpMlineIndex = newValue} @@ -366,6 +370,7 @@ struct SignalServiceProtos_CallMessage { /// Clears the value of `sdpMlineIndex`. Subsequent reads from it will return its default value. mutating func clearSdpMlineIndex() {self._sdpMlineIndex = nil} + /// @required var sdp: String { get {return _sdp ?? String()} set {_sdp = newValue}