diff --git a/CHANGELOG.md b/CHANGELOG.md index 615ec638ca..bc2c3bce5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +* Ref: Make ActivityFramesTracker public to be used by Hybrid SDKs (#1931) * Bump: AGP to 7.1.2 (#1930) ## 5.6.2-beta.2 diff --git a/sentry-android-core/api/sentry-android-core.api b/sentry-android-core/api/sentry-android-core.api index 9f8d6b0256..689c85e35a 100644 --- a/sentry-android-core/api/sentry-android-core.api +++ b/sentry-android-core/api/sentry-android-core.api @@ -1,3 +1,11 @@ +public final class io/sentry/android/core/ActivityFramesTracker { + public fun (Lio/sentry/android/core/LoadClass;)V + public fun addActivity (Landroid/app/Activity;)V + public fun setMetrics (Landroid/app/Activity;Lio/sentry/protocol/SentryId;)V + public fun stop ()V + public fun takeMetrics (Lio/sentry/protocol/SentryId;)Ljava/util/Map; +} + public final class io/sentry/android/core/ActivityLifecycleIntegration : android/app/Application$ActivityLifecycleCallbacks, io/sentry/Integration, java/io/Closeable { public fun (Landroid/app/Application;Lio/sentry/android/core/IBuildInfoProvider;Lio/sentry/android/core/ActivityFramesTracker;)V public fun close ()V @@ -72,6 +80,11 @@ public abstract interface class io/sentry/android/core/IDebugImagesLoader { public abstract fun loadDebugImages ()Ljava/util/List; } +public final class io/sentry/android/core/LoadClass { + public fun ()V + public fun loadClass (Ljava/lang/String;)Ljava/lang/Class; +} + public final class io/sentry/android/core/NdkIntegration : io/sentry/Integration, java/io/Closeable { public static final field SENTRY_NDK_CLASS_NAME Ljava/lang/String; public fun (Ljava/lang/Class;)V diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ActivityFramesTracker.java b/sentry-android-core/src/main/java/io/sentry/android/core/ActivityFramesTracker.java index 0d2fb83531..fda5b25e6a 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ActivityFramesTracker.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ActivityFramesTracker.java @@ -12,7 +12,12 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; -final class ActivityFramesTracker { +/** + * A class that tracks slow and frozen frames using the FrameMetricsAggregator class from + * androidx.core package. It also checks if the FrameMetricsAggregator class is available at + * runtime. + */ +public final class ActivityFramesTracker { private @Nullable FrameMetricsAggregator frameMetricsAggregator = null; private boolean androidXAvailable = true; @@ -20,7 +25,7 @@ final class ActivityFramesTracker { private final @NotNull Map> activityMeasurements = new ConcurrentHashMap<>(); - ActivityFramesTracker(final @NotNull LoadClass loadClass) { + public ActivityFramesTracker(final @NotNull LoadClass loadClass) { androidXAvailable = checkAndroidXAvailability(loadClass); if (androidXAvailable) { frameMetricsAggregator = new FrameMetricsAggregator(); @@ -47,7 +52,7 @@ private boolean isFrameMetricsAggregatorAvailable() { } @SuppressWarnings("NullAway") - synchronized void addActivity(final @NotNull Activity activity) { + public synchronized void addActivity(final @NotNull Activity activity) { if (!isFrameMetricsAggregatorAvailable()) { return; } @@ -55,7 +60,8 @@ synchronized void addActivity(final @NotNull Activity activity) { } @SuppressWarnings("NullAway") - synchronized void setMetrics(final @NotNull Activity activity, final @NotNull SentryId sentryId) { + public synchronized void setMetrics( + final @NotNull Activity activity, final @NotNull SentryId sentryId) { if (!isFrameMetricsAggregatorAvailable()) { return; } @@ -112,7 +118,7 @@ synchronized void setMetrics(final @NotNull Activity activity, final @NotNull Se } @Nullable - synchronized Map takeMetrics( + public synchronized Map takeMetrics( final @NotNull SentryId sentryId) { if (!isFrameMetricsAggregatorAvailable()) { return null; @@ -125,7 +131,7 @@ synchronized void setMetrics(final @NotNull Activity activity, final @NotNull Se } @SuppressWarnings("NullAway") - synchronized void stop() { + public synchronized void stop() { if (isFrameMetricsAggregatorAvailable()) { frameMetricsAggregator.stop(); } diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/LoadClass.java b/sentry-android-core/src/main/java/io/sentry/android/core/LoadClass.java index 28ce508b92..9e1db9b0e1 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/LoadClass.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/LoadClass.java @@ -3,7 +3,7 @@ import org.jetbrains.annotations.NotNull; /** An Adapter for making Class.forName testable */ -final class LoadClass { +public final class LoadClass { /** * Try to load a class via reflection