diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 42d0adefd..e852f7fa9 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -35,7 +35,6 @@ 3471B1DA1EB7C63600F6AEC8 /* NewNonContactConversationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */; }; 3472229F1EB22FFE00E53955 /* AddToGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3472229E1EB22FFE00E53955 /* AddToGroupViewController.m */; }; 348F2EAE1F0D21BC00D4ECE0 /* DeviceSleepManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348F2EAD1F0D21BC00D4ECE0 /* DeviceSleepManager.swift */; }; - 3495BC901F1400FF00B478F5 /* OWSAsserts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3495BC8F1F1400FF00B478F5 /* OWSAsserts.swift */; }; 3497DBEC1ECE257500DB2605 /* OWSCountryMetadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 3497DBEB1ECE257500DB2605 /* OWSCountryMetadata.m */; }; 3497DBEF1ECE2E4700DB2605 /* DomainFrontingCountryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3497DBEE1ECE2E4700DB2605 /* DomainFrontingCountryViewController.m */; }; 34B3F8711E8DF1700035BE1A /* AboutTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B3F8351E8DF1700035BE1A /* AboutTableViewController.m */; }; @@ -82,6 +81,7 @@ 34D8C0271ED3673300188D7C /* DebugUIMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D8C0241ED3673300188D7C /* DebugUIMessages.m */; }; 34D8C0281ED3673300188D7C /* DebugUITableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D8C0261ED3673300188D7C /* DebugUITableViewController.m */; }; 34D8C02B1ED3685800188D7C /* DebugUIContacts.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D8C02A1ED3685800188D7C /* DebugUIContacts.m */; }; + 34D99C8E1F28DDCD00D284D6 /* OWSSwiftUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D99C8D1F28DDCD00D284D6 /* OWSSwiftUtils.swift */; }; 34DFCB851E8E04B500053165 /* AddToBlockListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34DFCB841E8E04B500053165 /* AddToBlockListViewController.m */; }; 34E3E5681EC4B19400495BAC /* AudioProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E3E5671EC4B19400495BAC /* AudioProgressView.swift */; }; 34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E3EF0C1EFC235B007F6822 /* DebugUIDiskUsage.m */; }; @@ -113,7 +113,6 @@ 451DA3C91F1489BE008E2423 /* OWSAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3453D8E91EC0D4ED003F9E6F /* OWSAlerts.swift */; }; 451DA3CA1F148A9F008E2423 /* DeviceSleepManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 348F2EAD1F0D21BC00D4ECE0 /* DeviceSleepManager.swift */; }; 451DA3CB1F148AAD008E2423 /* CallViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34B3F83B1E8DF1700035BE1A /* CallViewController.swift */; }; - 451DA3CF1F1655CD008E2423 /* OWSAsserts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3495BC8F1F1400FF00B478F5 /* OWSAsserts.swift */; }; 451DE9F81DC18C9500810E42 /* AccountManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45CD81EE1DC030E7004C9430 /* AccountManager.swift */; }; 451DE9FD1DC1A28200810E42 /* SyncPushTokensJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451DE9FC1DC1A28200810E42 /* SyncPushTokensJob.swift */; }; 451DE9FE1DC1A28200810E42 /* SyncPushTokensJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451DE9FC1DC1A28200810E42 /* SyncPushTokensJob.swift */; }; @@ -424,7 +423,6 @@ 3472229D1EB22FFE00E53955 /* AddToGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddToGroupViewController.h; sourceTree = ""; }; 3472229E1EB22FFE00E53955 /* AddToGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddToGroupViewController.m; sourceTree = ""; }; 348F2EAD1F0D21BC00D4ECE0 /* DeviceSleepManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceSleepManager.swift; sourceTree = ""; }; - 3495BC8F1F1400FF00B478F5 /* OWSAsserts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSAsserts.swift; sourceTree = ""; }; 3495BC911F1426B800B478F5 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = translations/ar.lproj/Localizable.strings; sourceTree = ""; }; 3497DBEA1ECE257500DB2605 /* OWSCountryMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSCountryMetadata.h; sourceTree = ""; }; 3497DBEB1ECE257500DB2605 /* OWSCountryMetadata.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSCountryMetadata.m; sourceTree = ""; }; @@ -511,6 +509,7 @@ 34D8C0261ED3673300188D7C /* DebugUITableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DebugUITableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 34D8C0291ED3685800188D7C /* DebugUIContacts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIContacts.h; sourceTree = ""; }; 34D8C02A1ED3685800188D7C /* DebugUIContacts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIContacts.m; sourceTree = ""; }; + 34D99C8D1F28DDCD00D284D6 /* OWSSwiftUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSSwiftUtils.swift; sourceTree = ""; }; 34DFCB831E8E04B400053165 /* AddToBlockListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddToBlockListViewController.h; sourceTree = ""; }; 34DFCB841E8E04B500053165 /* AddToBlockListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddToBlockListViewController.m; sourceTree = ""; }; 34E3E5671EC4B19400495BAC /* AudioProgressView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioProgressView.swift; sourceTree = ""; }; @@ -1351,7 +1350,6 @@ BFB074C619A5611000F2947C /* ObservableValue.m */, 76EB04EE18170B33006006FC /* Operation.h */, 76EB04EF18170B33006006FC /* Operation.m */, - 3495BC8F1F1400FF00B478F5 /* OWSAsserts.swift */, 34D5CC941EA6AFAD005515DB /* OWSContactsSyncing.h */, 34D5CC951EA6AFAD005515DB /* OWSContactsSyncing.m */, 45CD81F01DC03A22004C9430 /* OWSLogger.h */, @@ -1359,6 +1357,7 @@ 34009B651EC4CB11001D95D1 /* OWSMath.h */, 45666F541D9B2827008FE134 /* OWSScrubbingLogFormatter.h */, 45666F551D9B2827008FE134 /* OWSScrubbingLogFormatter.m */, + 34D99C8D1F28DDCD00D284D6 /* OWSSwiftUtils.swift */, 4579431C1E7C8CE9008ED0C0 /* Pastelog.h */, 4579431D1E7C8CE9008ED0C0 /* Pastelog.m */, 450DF2041E0D74AC003D14BE /* Platform.swift */, @@ -2168,7 +2167,6 @@ 45666EC91D994C0D008FE134 /* OWSGroupAvatarBuilder.m in Sources */, 3471B1DA1EB7C63600F6AEC8 /* NewNonContactConversationViewController.m in Sources */, 34B3F87C1E8DF1700035BE1A /* FingerprintViewController.m in Sources */, - 3495BC901F1400FF00B478F5 /* OWSAsserts.swift in Sources */, 76EB058218170B33006006FC /* Environment.m in Sources */, 34B3F8921E8DF1710035BE1A /* SignalAttachment.swift in Sources */, 45464DBC1DFA041F001D3FD6 /* DataChannelMessage.swift in Sources */, @@ -2232,6 +2230,7 @@ 3448BFD01EDF0EA7005B2D69 /* MessagesViewController.m in Sources */, 34CCAF3B1F0C2748004084F4 /* OWSAddToContactViewController.m in Sources */, 45F659731E1BD99C00444429 /* CallKitCallUIAdaptee.swift in Sources */, + 34D99C8E1F28DDCD00D284D6 /* OWSSwiftUtils.swift in Sources */, 45BB93381E688E14001E3939 /* UIDevice+featureSupport.swift in Sources */, 458DE9D61DEE3FD00071BB03 /* PeerConnectionClient.swift in Sources */, 451DE9FD1DC1A28200810E42 /* SyncPushTokensJob.swift in Sources */, @@ -2292,7 +2291,6 @@ 452C46901E427E200087B011 /* OutboundCallInitiator.swift in Sources */, 451DE9F81DC18C9500810E42 /* AccountManager.swift in Sources */, B660F7171C29988E00687D6E /* OWSContactsManager.m in Sources */, - 451DA3CF1F1655CD008E2423 /* OWSAsserts.swift in Sources */, B660F7181C29988E00687D6E /* CryptoTools.m in Sources */, B660F71B1C29988E00687D6E /* Environment.m in Sources */, B660F71C1C29988E00687D6E /* DebugLogger.m in Sources */, diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 060b37618..3deac3131 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -81,13 +81,6 @@ enum CallError: Error { // Should be roughly synced with Android client for consistency fileprivate let connectingTimeoutSeconds = 120 -// Example: OWSProdError("blah", #file, #function, #line) -func OWSProdError(_ __eventName: String, file: String, function: String, line: Int32) { - let location = "\((file as NSString).lastPathComponent):\(function)" - OWSAnalytics - .logEvent(__eventName, severity: .error, parameters: nil, location: (location as NSString).utf8String!, line:line) -} - func OWSProdCallAssertionError(description: String, file: String, function: String, line: Int32) -> CallError { OWSProdError(description, file:file, function:function, line:line) return .assertionError(description: description) diff --git a/Signal/src/call/PeerConnectionClient.swift b/Signal/src/call/PeerConnectionClient.swift index 13626bb57..b9a38dc5f 100644 --- a/Signal/src/call/PeerConnectionClient.swift +++ b/Signal/src/call/PeerConnectionClient.swift @@ -720,11 +720,7 @@ class PeerConnectionClient: NSObject, RTCPeerConnectionDelegate, RTCDataChannelD * We synchronize access to state in this class using this queue. */ private func assertOnSignalingQueue() { - if #available(iOS 10.0, *) { - dispatchPrecondition(condition: .onQueue(type(of: self).signalingQueue)) - } else { - // Skipping check on #import @@ -178,10 +179,7 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity) { OWSAssert(eventDictionary); OWSAssert(eventKey); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - OWSAssert(dispatch_get_current_queue() == self.serialQueue); -#pragma clang diagnostic pop + AssertOnDispatchQueue(self.serialQueue); if (isCritical) { [self submitEvent:eventDictionary @@ -194,9 +192,14 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity) }]; } else { self.hasRequestInFlight = YES; + __block isComplete = NO; [self submitEvent:eventDictionary eventKey:eventKey success:^{ + if (isComplete) { + return; + } + isComplete = YES; DDLogDebug(@"%@ sendEvent succeeded: %@", self.tag, eventKey); dispatch_async(self.serialQueue, ^{ self.hasRequestInFlight = NO; @@ -214,6 +217,10 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity) }); } failure:^{ + if (isComplete) { + return; + } + isComplete = YES; DDLogError(@"%@ sendEvent failed: %@", self.tag, eventKey); dispatch_async(self.serialQueue, ^{ self.hasRequestInFlight = NO; @@ -235,10 +242,7 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity) { OWSAssert(eventDictionary); OWSAssert(eventKey); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - OWSAssert(dispatch_get_current_queue() == self.serialQueue); -#pragma clang diagnostic pop + AssertOnDispatchQueue(self.serialQueue); DDLogDebug(@"%@ submitting: %@", self.tag, eventKey); diff --git a/SignalServiceKit/src/Util/OWSQueues.h b/SignalServiceKit/src/Util/OWSQueues.h new file mode 100644 index 000000000..50e6f813f --- /dev/null +++ b/SignalServiceKit/src/Util/OWSQueues.h @@ -0,0 +1,26 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + +NS_ASSUME_NONNULL_BEGIN + +#ifdef DEBUG + +#define AssertOnDispatchQueue(queue) \ + { \ + if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(10, 0)) { \ + dispatch_assert_queue(queue); \ + } else { \ + _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \ + OWSAssert(dispatch_get_current_queue() == queue); \ + _Pragma("clang diagnostic pop") \ + } \ + } + +#else + +#define AssertOnDispatchQueue(queue) + +#endif + +NS_ASSUME_NONNULL_END