diff --git a/CHANGELOG.md b/CHANGELOG.md index af5d7f4f3..b16cd0525 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ Bugsnag Notifiers on other platforms. ## Enhancements +* Rename `OnSend` to `OnSendError` + [#562](https://github.com/bugsnag/bugsnag-cocoa/pull/562) + * Add `onCrashHandler` data to `BugsnagEvent` metadata [#564](https://github.com/bugsnag/bugsnag-cocoa/pull/564) diff --git a/Source/Bugsnag.h b/Source/Bugsnag.h index 632a818be..daa21d4a4 100644 --- a/Source/Bugsnag.h +++ b/Source/Bugsnag.h @@ -256,7 +256,7 @@ * @param block The block to be removed. */ + (void)removeOnSessionBlock:(BugsnagOnSessionBlock _Nonnull)block - NS_SWIFT_NAME(removeOnSession(block:));; + NS_SWIFT_NAME(removeOnSession(block:)); // ============================================================================= // MARK: - onSend @@ -268,16 +268,16 @@ * * @param block A block which returns YES if the report should be sent */ -+ (void)addOnSendBlock:(BugsnagOnSendBlock _Nonnull)block - NS_SWIFT_NAME(addOnSend(block:)); ++ (void)addOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block + NS_SWIFT_NAME(addOnSendError(block:)); /** * Remove the callback that would be invoked before an event is sent. * * @param block The block to be removed. */ -+ (void)removeOnSendBlock:(BugsnagOnSendBlock _Nonnull)block - NS_SWIFT_NAME(removeOnSend(block:)); ++ (void)removeOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block + NS_SWIFT_NAME(removeOnSendError(block:)); // ============================================================================= // MARK: - onBreadcrumb diff --git a/Source/Bugsnag.m b/Source/Bugsnag.m index 83b75f707..64d1b5bfb 100644 --- a/Source/Bugsnag.m +++ b/Source/Bugsnag.m @@ -357,17 +357,17 @@ + (void)updateCodeBundleId:(NSString *)codeBundleId { // MARK: - onSend // ============================================================================= -+ (void)addOnSendBlock:(BugsnagOnSendBlock _Nonnull)block ++ (void)addOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block { if ([self bugsnagStarted]) { - [self.client addOnSendBlock:block]; + [self.client addOnSendErrorBlock:block]; } } -+ (void)removeOnSendBlock:(BugsnagOnSendBlock _Nonnull)block ++ (void)removeOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block { if ([self bugsnagStarted]) { - [self.client removeOnSendBlock:block]; + [self.client removeOnSendErrorBlock:block]; } } diff --git a/Source/BugsnagClient.h b/Source/BugsnagClient.h index f855022a9..b58e470ab 100644 --- a/Source/BugsnagClient.h +++ b/Source/BugsnagClient.h @@ -178,14 +178,16 @@ NS_SWIFT_NAME(leaveBreadcrumb(_:metadata:type:)); * * @param block The block to be added. */ -- (void)addOnSessionBlock:(BugsnagOnSessionBlock _Nonnull)block; +- (void)addOnSessionBlock:(BugsnagOnSessionBlock _Nonnull)block + NS_SWIFT_NAME(addOnSession(block:)); /** * Remove a callback that would be invoked before a session is sent to Bugsnag. * * @param block The block to be removed. */ -- (void)removeOnSessionBlock:(BugsnagOnSessionBlock _Nonnull )block; +- (void)removeOnSessionBlock:(BugsnagOnSessionBlock _Nonnull )block + NS_SWIFT_NAME(removeOnSession(block:)); // ============================================================================= // MARK: - Other methods @@ -231,14 +233,16 @@ NS_SWIFT_NAME(leaveBreadcrumb(_:metadata:type:)); * * @param block A block which returns YES if the report should be sent */ -- (void)addOnSendBlock:(BugsnagOnSendBlock _Nonnull)block; +- (void)addOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block + NS_SWIFT_NAME(addOnSendError(block:)); /** * Remove an onSend callback, if it exists * * @param block The block to remove */ -- (void)removeOnSendBlock:(BugsnagOnSendBlock _Nonnull)block; +- (void)removeOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block + NS_SWIFT_NAME(removeOnSendError(block:)); // ============================================================================= // MARK: - onBreadcrumb @@ -250,13 +254,15 @@ NS_SWIFT_NAME(leaveBreadcrumb(_:metadata:type:)); * * @param block A block which returns YES if the breadcrumb should be captured */ -- (void)addOnBreadcrumbBlock:(BugsnagOnBreadcrumbBlock _Nonnull)block; +- (void)addOnBreadcrumbBlock:(BugsnagOnBreadcrumbBlock _Nonnull)block + NS_SWIFT_NAME(addOnBreadcrumb(block:)); /** * Remove the callback that would be invoked when a breadcrumb is captured. * * @param block The block to be removed. */ -- (void)removeOnBreadcrumbBlock:(BugsnagOnBreadcrumbBlock _Nonnull)block; +- (void)removeOnBreadcrumbBlock:(BugsnagOnBreadcrumbBlock _Nonnull)block + NS_SWIFT_NAME(removeOnBreadcrumb(block:)); @end diff --git a/Source/BugsnagClient.m b/Source/BugsnagClient.m index 1a670f8ff..373ecb38f 100644 --- a/Source/BugsnagClient.m +++ b/Source/BugsnagClient.m @@ -748,12 +748,12 @@ - (void)removeOnSessionBlock:(BugsnagOnSessionBlock _Nonnull )block { // MARK: - onSend // ============================================================================= -- (void)addOnSendBlock:(BugsnagOnSendBlock _Nonnull)block { - [self.configuration addOnSendBlock:block]; +- (void)addOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block { + [self.configuration addOnSendErrorBlock:block]; } -- (void)removeOnSendBlock:(BugsnagOnSendBlock _Nonnull)block { - [self.configuration removeOnSendBlock:block]; +- (void)removeOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block { + [self.configuration removeOnSendErrorBlock:block]; } // ============================================================================= diff --git a/Source/BugsnagConfiguration.h b/Source/BugsnagConfiguration.h index 42de41105..c5e3e3f36 100644 --- a/Source/BugsnagConfiguration.h +++ b/Source/BugsnagConfiguration.h @@ -75,14 +75,14 @@ typedef BOOL (^BugsnagOnErrorBlock)(BugsnagEvent *_Nonnull event); /** * A handler for modifying data before sending it to Bugsnag. * - * onSendBlocks will be invoked on a dedicated + * onSendErrorBlocks will be invoked on a dedicated * background queue, which will be different from the queue where the block was originally added. * * @param event The event report. * * @return YES if the event should be sent */ -typedef BOOL (^BugsnagOnSendBlock)(BugsnagEvent *_Nonnull event); +typedef BOOL (^BugsnagOnSendErrorBlock)(BugsnagEvent *_Nonnull event); /** * A configuration block for modifying a captured breadcrumb @@ -283,7 +283,7 @@ typedef NS_OPTIONS(NSUInteger, BSGEnabledErrorType) { * @param block The block to be removed. */ - (void)removeOnSessionBlock:(BugsnagOnSessionBlock _Nonnull)block - NS_SWIFT_NAME(removeOnSession(block:));; + NS_SWIFT_NAME(removeOnSession(block:)); // ============================================================================= // MARK: - onSend @@ -295,16 +295,16 @@ typedef NS_OPTIONS(NSUInteger, BSGEnabledErrorType) { * * @param block A block which returns YES if the report should be sent */ -- (void)addOnSendBlock:(BugsnagOnSendBlock _Nonnull)block - NS_SWIFT_NAME(addOnSend(block:)); +- (void)addOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block + NS_SWIFT_NAME(addOnSendError(block:)); /** * Remove the callback that would be invoked before an event is sent. * * @param block The block to be removed. */ -- (void)removeOnSendBlock:(BugsnagOnSendBlock _Nonnull)block - NS_SWIFT_NAME(removeOnSend(block:)); +- (void)removeOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block + NS_SWIFT_NAME(removeOnSendError(block:)); // ============================================================================= // MARK: - onBreadcrumb diff --git a/Source/BugsnagConfiguration.m b/Source/BugsnagConfiguration.m index 666e5a410..9e6629fa0 100644 --- a/Source/BugsnagConfiguration.m +++ b/Source/BugsnagConfiguration.m @@ -287,11 +287,11 @@ - (void)setUserMetadataFromUser:(BugsnagUser *)user { // MARK: - onSendBlock // ============================================================================= -- (void)addOnSendBlock:(BugsnagOnSendBlock)block { +- (void)addOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull)block { [(NSMutableArray *)self.onSendBlocks addObject:[block copy]]; } -- (void)removeOnSendBlock:(BugsnagOnSendBlock _Nonnull )block +- (void)removeOnSendErrorBlock:(BugsnagOnSendErrorBlock _Nonnull )block { [(NSMutableArray *)self.onSendBlocks removeObject:block]; } diff --git a/Source/BugsnagSink.m b/Source/BugsnagSink.m index a0844232a..882d57e0b 100644 --- a/Source/BugsnagSink.m +++ b/Source/BugsnagSink.m @@ -92,7 +92,7 @@ - (void)filterReports:(NSDictionary *)reports if (![bugsnagReport shouldBeSent]) continue; BOOL shouldSend = YES; - for (BugsnagOnSendBlock block in configuration.onSendBlocks) { + for (BugsnagOnSendErrorBlock block in configuration.onSendBlocks) { @try { shouldSend = block(bugsnagReport); if (!shouldSend) diff --git a/Tests/BugsnagBaseUnitTest.m b/Tests/BugsnagBaseUnitTest.m index ec16b5f26..f51b76adf 100644 --- a/Tests/BugsnagBaseUnitTest.m +++ b/Tests/BugsnagBaseUnitTest.m @@ -44,7 +44,9 @@ -(void)setUpBugsnagWillCallNotify:(bool)willNotify [configuration setPersistUser:willPersistUser]; if (willNotify) { - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; } [Bugsnag startBugsnagWithConfiguration:configuration]; } diff --git a/Tests/BugsnagBreadcrumbsTest.m b/Tests/BugsnagBreadcrumbsTest.m index bac738840..37fb54b76 100644 --- a/Tests/BugsnagBreadcrumbsTest.m +++ b/Tests/BugsnagBreadcrumbsTest.m @@ -302,7 +302,9 @@ - (void)testBreadcrumbFromDict { - (void)testCallbackFreeConstructors2 { // Prevent sending events BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; [Bugsnag startBugsnagWithConfiguration:configuration]; NSDictionary *md1 = @{ @"x" : @"y"}; @@ -369,7 +371,9 @@ - (void)testCallbackFreeConstructors2 { - (void)testCallbackFreeConstructors3 { // Prevent sending events BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; [Bugsnag startBugsnagWithConfiguration:configuration]; [Bugsnag leaveBreadcrumbWithMessage:@"message1"]; diff --git a/Tests/BugsnagClientTests.m b/Tests/BugsnagClientTests.m index af32f4f29..154b3e4af 100644 --- a/Tests/BugsnagClientTests.m +++ b/Tests/BugsnagClientTests.m @@ -47,7 +47,9 @@ @implementation BugsnagClientTests -(void)setUpBugsnagWillCallNotify:(bool)willNotify { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; if (willNotify) { - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; } [Bugsnag startBugsnagWithConfiguration:configuration]; } diff --git a/Tests/BugsnagConfigurationTests.m b/Tests/BugsnagConfigurationTests.m index 0b87c4d1c..5167c6052 100644 --- a/Tests/BugsnagConfigurationTests.m +++ b/Tests/BugsnagConfigurationTests.m @@ -755,14 +755,14 @@ - (void) testRemoveOnSendBlock { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; XCTAssertEqual([[configuration onSendBlocks] count], 0); - BugsnagOnSendBlock block = ^BOOL(BugsnagEvent * _Nonnull event) { return false; }; - - [configuration addOnSendBlock:block]; + BugsnagOnSendErrorBlock block = ^BOOL(BugsnagEvent * _Nonnull event) { return false; }; + + [configuration addOnSendErrorBlock:block]; [Bugsnag startBugsnagWithConfiguration:configuration]; XCTAssertEqual([[configuration onSendBlocks] count], 1); - - [configuration removeOnSendBlock:block]; + + [configuration removeOnSendErrorBlock:block]; XCTAssertEqual([[configuration onSendBlocks] count], 0); } @@ -774,12 +774,12 @@ - (void) testClearOnSendBlock { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; XCTAssertEqual([[configuration onSendBlocks] count], 0); - BugsnagOnSendBlock block1 = ^BOOL(BugsnagEvent * _Nonnull event) { return false; }; - BugsnagOnSendBlock block2 = ^BOOL(BugsnagEvent * _Nonnull event) { return false; }; + BugsnagOnSendErrorBlock block1 = ^BOOL(BugsnagEvent * _Nonnull event) { return false; }; + BugsnagOnSendErrorBlock block2 = ^BOOL(BugsnagEvent * _Nonnull event) { return false; }; // Add more than one - [configuration addOnSendBlock:block1]; - [configuration addOnSendBlock:block2]; + [configuration addOnSendErrorBlock:block1]; + [configuration addOnSendErrorBlock:block2]; [Bugsnag startBugsnagWithConfiguration:configuration]; @@ -802,8 +802,8 @@ - (void)testNSCopying { [config setAppType:@"The most amazing app, a brilliant app, the app to end all apps"]; [config setPersistUser:YES]; [config setSendThreads:BSGThreadSendPolicyUnhandledOnly]; - BugsnagOnSendBlock onSendBlock1 = ^BOOL(BugsnagEvent * _Nonnull event) { return true; }; - BugsnagOnSendBlock onSendBlock2 = ^BOOL(BugsnagEvent * _Nonnull event) { return true; }; + BugsnagOnSendErrorBlock onSendBlock1 = ^BOOL(BugsnagEvent * _Nonnull event) { return true; }; + BugsnagOnSendErrorBlock onSendBlock2 = ^BOOL(BugsnagEvent * _Nonnull event) { return true; }; NSArray *sendBlocks = @[ onSendBlock1, onSendBlock2 ]; [config setOnSendBlocks:[sendBlocks mutableCopy]]; // Mutable arg required diff --git a/Tests/BugsnagTests.m b/Tests/BugsnagTests.m index 7dc00c1f2..11056de9f 100644 --- a/Tests/BugsnagTests.m +++ b/Tests/BugsnagTests.m @@ -44,7 +44,9 @@ @implementation BugsnagTests -(void)setUpBugsnagWillCallNotify:(bool)willNotify { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; if (willNotify) { - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; } [Bugsnag startBugsnagWithConfiguration:configuration]; } @@ -147,7 +149,9 @@ - (void)testGetMetadata { */ -(void)testBugsnagPauseSession { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; [Bugsnag startBugsnagWithConfiguration:configuration]; @@ -164,7 +168,9 @@ - (void)testMutableContext { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; [configuration setContext:@"firstContext"]; - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; [Bugsnag startBugsnagWithConfiguration:configuration]; @@ -249,7 +255,9 @@ - (void)testRemoveOnSessionBlock { BugsnagConfiguration *configuration = [[BugsnagConfiguration alloc] initWithApiKey:DUMMY_APIKEY_32CHAR_1]; // non-sending bugsnag - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; BugsnagOnSessionBlock sessionBlock = ^BOOL(BugsnagSession * _Nonnull sessionPayload) { switch (called) { @@ -290,7 +298,9 @@ - (void)testAddOnSessionBlock { configuration.autoTrackSessions = NO; // non-sending bugsnag - [configuration addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { return false; }]; + [configuration addOnSendErrorBlock:^BOOL(BugsnagEvent *_Nonnull event) { + return false; + }]; BugsnagOnSessionBlock sessionBlock = ^BOOL(BugsnagSession * _Nonnull sessionPayload) { switch (called) { @@ -352,7 +362,7 @@ - (void) testOnSendBlocks { expectation6.inverted = YES; // Two blocks that will get called (or not) when we notify() - BugsnagOnSendBlock block1 = ^BOOL(BugsnagEvent * _Nonnull event) + BugsnagOnSendErrorBlock block1 = ^BOOL(BugsnagEvent * _Nonnull event) { switch (called) { case 0: @@ -376,7 +386,7 @@ - (void) testOnSendBlocks { return false; }; - BugsnagOnSendBlock block2 = ^BOOL(BugsnagEvent * _Nonnull event) + BugsnagOnSendErrorBlock block2 = ^BOOL(BugsnagEvent * _Nonnull event) { switch (called) { case 0: @@ -403,9 +413,9 @@ - (void) testOnSendBlocks { // Can't check for block behaviour before start(), so we don't [Bugsnag startBugsnagWithConfiguration:configuration]; - - [Bugsnag addOnSendBlock:block1]; - [Bugsnag addOnSendBlock:block2]; + + [Bugsnag addOnSendErrorBlock:block1]; + [Bugsnag addOnSendErrorBlock:block2]; // Both added? XCTAssertEqual([[[Bugsnag configuration] onSendBlocks] count], 2); @@ -415,8 +425,8 @@ - (void) testOnSendBlocks { // Both called? [self waitForExpectations:@[expectation1, expectation2] timeout:10.0]; - - [Bugsnag removeOnSendBlock:block2]; + + [Bugsnag removeOnSendErrorBlock:block2]; XCTAssertEqual([[[Bugsnag configuration] onSendBlocks] count], 1); called++; XCTAssertEqual(called, 1); diff --git a/UPGRADING.md b/UPGRADING.md index 6734b5b32..7df6ccfd2 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -53,7 +53,7 @@ The exact error is available using the `BSGConfigurationErrorDomain` and - config.beforeSendBlocks - config.add(beforeSend:) + config.onSendBlocks -+ config.addOnSend(block:) ++ config.addOnSendError(block:) - config.beforeSessionBlocks - config.add(beforeSession:) diff --git a/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/ModifyBreadcrumbScenario.swift b/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/ModifyBreadcrumbScenario.swift index dcc16f235..afd1fb120 100644 --- a/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/ModifyBreadcrumbScenario.swift +++ b/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/ModifyBreadcrumbScenario.swift @@ -6,7 +6,7 @@ class ModifyBreadcrumbScenario: Scenario { override func startBugsnag() { self.config.autoTrackSessions = false; - self.config.addOnSend(block: { event in + self.config.addOnSendError(block: { event in event.breadcrumbs?.forEach({ crumb in if crumb.message == "Cache cleared" { crumb.message = "Cache locked" diff --git a/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/OOMScenario.m b/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/OOMScenario.m index 312bafabe..f79ee96ec 100644 --- a/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/OOMScenario.m +++ b/features/fixtures/ios-swift-cocoapods/iOSTestApp/scenarios/OOMScenario.m @@ -6,7 +6,7 @@ @implementation OOMScenario - (void)startBugsnag { self.config.autoTrackSessions = NO; self.config.releaseStage = @"alpha"; - [self.config addOnSendBlock:^BOOL(BugsnagEvent * _Nonnull event) { + [self.config addOnSendErrorBlock:^BOOL(BugsnagEvent * _Nonnull event) { [event addMetadata:@{ @"shape": @"line" } toSection:@"extra"]; return YES; }];