diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 6e1ebe4ff3..3a3dfc8d11 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -1067,7 +1067,7 @@ public abstract interface class io/sentry/IScopeObserver { public abstract fun clearAttachments ()V public abstract fun removeExtra (Ljava/lang/String;)V public abstract fun removeTag (Ljava/lang/String;)V - public abstract fun setBreadcrumbs (Ljava/util/Collection;)V + public abstract fun clearBreadcrumbs ()V public abstract fun setContexts (Lio/sentry/protocol/Contexts;)V public abstract fun setEnvironment (Ljava/lang/String;)V public abstract fun setExtra (Ljava/lang/String;Ljava/lang/String;)V @@ -2646,7 +2646,7 @@ public abstract class io/sentry/ScopeObserverAdapter : io/sentry/IScopeObserver public fun clearAttachments ()V public fun removeExtra (Ljava/lang/String;)V public fun removeTag (Ljava/lang/String;)V - public fun setBreadcrumbs (Ljava/util/Collection;)V + public fun clearBreadcrumbs ()V public fun setContexts (Lio/sentry/protocol/Contexts;)V public fun setEnvironment (Ljava/lang/String;)V public fun setExtra (Ljava/lang/String;Ljava/lang/String;)V diff --git a/sentry/src/main/java/io/sentry/IScopeObserver.java b/sentry/src/main/java/io/sentry/IScopeObserver.java index b6210c8870..a27a001a96 100644 --- a/sentry/src/main/java/io/sentry/IScopeObserver.java +++ b/sentry/src/main/java/io/sentry/IScopeObserver.java @@ -10,15 +10,14 @@ import org.jetbrains.annotations.Nullable; /** - * A Scope observer that tracks changes on Scope. All methods are "default", so implementors can - * subscribe to only those properties, that they are interested in. + * A Scope observer that tracks changes on Scope. */ public interface IScopeObserver { void setUser(@Nullable User user); void addBreadcrumb(@NotNull Breadcrumb crumb); - void setBreadcrumbs(@NotNull Collection breadcrumbs); + void clearBreadcrumbs(); void setTag(@NotNull String key, @NotNull String value); diff --git a/sentry/src/main/java/io/sentry/Scope.java b/sentry/src/main/java/io/sentry/Scope.java index f4ba9dbbb9..7638f9a909 100644 --- a/sentry/src/main/java/io/sentry/Scope.java +++ b/sentry/src/main/java/io/sentry/Scope.java @@ -534,7 +534,6 @@ public void addBreadcrumb(@NotNull Breadcrumb breadcrumb, @Nullable Hint hint) { for (final IScopeObserver observer : options.getScopeObservers()) { observer.addBreadcrumb(breadcrumb); - observer.setBreadcrumbs(breadcrumbs); } } else { options.getLogger().log(SentryLevel.INFO, "Breadcrumb was dropped by beforeBreadcrumb"); @@ -558,7 +557,7 @@ public void clearBreadcrumbs() { breadcrumbs.clear(); for (final IScopeObserver observer : options.getScopeObservers()) { - observer.setBreadcrumbs(breadcrumbs); + observer.clearBreadcrumbs(); } } diff --git a/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java b/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java index e80d8b6b20..d6b2f28715 100644 --- a/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java +++ b/sentry/src/main/java/io/sentry/ScopeObserverAdapter.java @@ -17,7 +17,7 @@ public void setUser(@Nullable User user) {} public void addBreadcrumb(@NotNull Breadcrumb crumb) {} @Override - public void setBreadcrumbs(@NotNull Collection breadcrumbs) {} + public void clearBreadcrumbs() {} @Override public void setTag(@NotNull String key, @NotNull String value) {} diff --git a/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java b/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java index 756f36f65d..4ccc03110c 100644 --- a/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java +++ b/sentry/src/main/java/io/sentry/cache/PersistingScopeObserver.java @@ -153,16 +153,12 @@ public void addBreadcrumb(@NotNull Breadcrumb crumb) { } @Override - public void setBreadcrumbs(@NotNull Collection breadcrumbs) { - if (breadcrumbs.isEmpty()) { - // we only clear the queue if the new collection is empty (someone called clearBreadcrumbs) - // If it's not empty, we'd add breadcrumbs one-by-one in the method above - if (!options.isEnableScopePersistence()) { - return; - } - pendingBreadcrumbs.offer(CLEAR_MARKER); - requestFlush(); + public void clearBreadcrumbs() { + if (!options.isEnableScopePersistence()) { + return; } + pendingBreadcrumbs.offer(CLEAR_MARKER); + requestFlush(); } @Override diff --git a/sentry/src/test/java/io/sentry/ScopeTest.kt b/sentry/src/test/java/io/sentry/ScopeTest.kt index 3fb19078c2..f339ce9976 100644 --- a/sentry/src/test/java/io/sentry/ScopeTest.kt +++ b/sentry/src/test/java/io/sentry/ScopeTest.kt @@ -761,12 +761,10 @@ class ScopeTest { val breadcrumb = Breadcrumb() scope.addBreadcrumb(breadcrumb) verify(observer).addBreadcrumb(eq(breadcrumb)) - verify(observer).setBreadcrumbs(argThat { elementAt(0) == breadcrumb }) scope.addBreadcrumb(Breadcrumb.debug("test")) verify(observer).addBreadcrumb(argThat { message == "test" }) - verify(observer, times(2)) - .setBreadcrumbs(argThat { elementAt(0) == breadcrumb && elementAt(1).message == "test" }) + verify(observer, never()).clearBreadcrumbs() } @Test @@ -780,7 +778,7 @@ class ScopeTest { assertFalse(scope.breadcrumbs.isEmpty()) scope.clearBreadcrumbs() - verify(observer, times(2)).setBreadcrumbs(argThat { isEmpty() }) + verify(observer).clearBreadcrumbs() } @Test diff --git a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt index d893e52d4c..17db28585a 100644 --- a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt +++ b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverBatchingTest.kt @@ -81,7 +81,7 @@ class PersistingScopeObserverBatchingTest { val sut = getSut(executor) sut.addBreadcrumb(Breadcrumb().apply { message = "dropped" }) - sut.setBreadcrumbs(emptyList()) + sut.clearBreadcrumbs() sut.addBreadcrumb(Breadcrumb().apply { message = "kept" }) executor.runAll() @@ -95,7 +95,7 @@ class PersistingScopeObserverBatchingTest { // fires while the flush is draining, i.e. after the first breadcrumb has been written options.setSerializer( SerializerHook(options.serializer) { - sut.setBreadcrumbs(emptyList()) + sut.clearBreadcrumbs() sut.addBreadcrumb(Breadcrumb().apply { message = "kept" }) } ) diff --git a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt index b98c5b8a31..9fdc8bf1a7 100644 --- a/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt +++ b/sentry/src/test/java/io/sentry/cache/PersistingScopeObserverTest.kt @@ -123,7 +123,7 @@ class PersistingScopeObserverTest( breadcrumbs.forEach { addBreadcrumb(it) } }, BREADCRUMBS_FILENAME, - DeleteScopeValue { setBreadcrumbs(emptyList()) }, + DeleteScopeValue { clearBreadcrumbs() }, DeletedEntityProvider { emptyList() }, ) @@ -141,7 +141,7 @@ class PersistingScopeObserverTest( ) }, BREADCRUMBS_FILENAME, - DeleteScopeValue { setBreadcrumbs(emptyList()) }, + DeleteScopeValue { clearBreadcrumbs() }, DeletedEntityProvider { emptyList() }, )