From 165e4434d4e5cf720215a316d2177ad81981e97b Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Fri, 23 Aug 2024 17:42:02 -0400 Subject: [PATCH] record on android --- samples/Sentry.Samples.Maui/MauiProgram.cs | 7 ++++- .../Sentry.Bindings.Android.csproj | 7 +++++ .../Transforms/Metadata.xml | 2 ++ .../Android/BindableNativeSentryOptions.cs | 29 +++++++++++++++++++ src/Sentry/Platforms/Android/NativeOptions.cs | 17 +++++++++++ src/Sentry/Platforms/Android/SentrySdk.cs | 7 +++++ 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/samples/Sentry.Samples.Maui/MauiProgram.cs b/samples/Sentry.Samples.Maui/MauiProgram.cs index f9b1981bfe..162d9f7a97 100644 --- a/samples/Sentry.Samples.Maui/MauiProgram.cs +++ b/samples/Sentry.Samples.Maui/MauiProgram.cs @@ -22,8 +22,13 @@ public static MauiApp CreateMauiApp() options.Debug = true; options.SampleRate = 1.0F; +#if ANDROID + options.Native.ExperimentalOptions.SessionReplay.OnErrorSampleRate = 1.0; + options.Native.ExperimentalOptions.SessionReplay.SessionSampleRate = 1.0; + options.Native.ExperimentalOptions.SessionReplay.RedactAllImages = false; + options.Native.ExperimentalOptions.SessionReplay.RedactAllText = false; +#endif }) - .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); diff --git a/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj b/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj index c851373a32..55e801863b 100644 --- a/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj +++ b/src/Sentry.Bindings.Android/Sentry.Bindings.Android.csproj @@ -29,6 +29,7 @@ + @@ -49,6 +50,12 @@ Condition="!Exists('$(SentryAndroidSdkDirectory)sentry-android-ndk-$(SentryAndroidSdkVersion).aar')" Retries="3" /> + + + diff --git a/src/Sentry/Platforms/Android/BindableNativeSentryOptions.cs b/src/Sentry/Platforms/Android/BindableNativeSentryOptions.cs index 1b12a9e385..7b49a0f4c1 100644 --- a/src/Sentry/Platforms/Android/BindableNativeSentryOptions.cs +++ b/src/Sentry/Platforms/Android/BindableNativeSentryOptions.cs @@ -1,4 +1,5 @@ // ReSharper disable once CheckNamespace + namespace Sentry; internal partial class BindableSentryOptions @@ -34,7 +35,20 @@ public class NativeOptions public TimeSpan? ReadTimeout { get; set; } public bool? EnableTracing { get; set; } public bool? EnableBeforeSend { get; set; } + public NativeExperimentalOptions ExperimentalOptions { get; set; } = new(); + + internal class NativeExperimentalOptions + { + public NativeSentryReplayOptions SessionReplay { get; set; } = new(); + } + internal class NativeSentryReplayOptions + { + public double? OnErrorSampleRate { get; set; } + public double? SessionSampleRate { get; set; } + public bool RedactAllImages { get; set; } + public bool RedactAllText { get; set; } + } public void ApplyTo(SentryOptions.NativeOptions options) { options.AnrEnabled = AnrEnabled ?? options.AnrEnabled; @@ -61,6 +75,21 @@ public void ApplyTo(SentryOptions.NativeOptions options) options.ReadTimeout = ReadTimeout ?? options.ReadTimeout; options.EnableTracing = EnableTracing ?? options.EnableTracing; options.EnableBeforeSend = EnableBeforeSend ?? options.EnableBeforeSend; + + if (ExperimentalOptions.SessionReplay.OnErrorSampleRate is { } errorSampleRate) + { +#pragma warning disable CA1422 + options.ExperimentalOptions.SessionReplay.OnErrorSampleRate = errorSampleRate; +#pragma warning restore CA1422 + } + if (ExperimentalOptions.SessionReplay.SessionSampleRate is { } sessionSampleRate) + { +#pragma warning disable CA1422 + options.ExperimentalOptions.SessionReplay.SessionSampleRate = sessionSampleRate; +#pragma warning restore CA1422 + } + ExperimentalOptions.SessionReplay.RedactAllText = options.ExperimentalOptions.SessionReplay.RedactAllText; + ExperimentalOptions.SessionReplay.RedactAllImages = options.ExperimentalOptions.SessionReplay.RedactAllImages; } } } diff --git a/src/Sentry/Platforms/Android/NativeOptions.cs b/src/Sentry/Platforms/Android/NativeOptions.cs index fdef25e518..b81ed7bdf9 100644 --- a/src/Sentry/Platforms/Android/NativeOptions.cs +++ b/src/Sentry/Platforms/Android/NativeOptions.cs @@ -1,4 +1,5 @@ // ReSharper disable once CheckNamespace + namespace Sentry; public partial class SentryOptions @@ -260,5 +261,21 @@ public void AddInAppInclude(string prefix) /// be stripped away during the round-tripping between the two SDKs. Use with caution. /// public bool EnableBeforeSend { get; set; } = false; + public class NativeExperimentalOptions + { + public NativeSentryReplayOptions SessionReplay { get; set; } = new(); + } + + public class NativeSentryReplayOptions + { + public double? OnErrorSampleRate { get; set; } + public double? SessionSampleRate { get; set; } + public bool RedactAllImages { get; set; } = true; + public bool RedactAllText { get; set; } = true; + } + /// + /// ExperimentalOptions + /// + public NativeExperimentalOptions ExperimentalOptions { get; set; } = new(); } } diff --git a/src/Sentry/Platforms/Android/SentrySdk.cs b/src/Sentry/Platforms/Android/SentrySdk.cs index f018ffdcd1..09eb68c489 100644 --- a/src/Sentry/Platforms/Android/SentrySdk.cs +++ b/src/Sentry/Platforms/Android/SentrySdk.cs @@ -163,6 +163,13 @@ private static void InitSentryAndroidSdk(SentryOptions options) options.Native.InAppExcludes?.ForEach(o.AddInAppExclude); options.Native.InAppIncludes?.ForEach(o.AddInAppInclude); + o.Experimental.SessionReplay.ErrorSampleRate = + (JavaDouble?)options.Native.ExperimentalOptions.SessionReplay.OnErrorSampleRate; + o.Experimental.SessionReplay.SessionSampleRate = + (JavaDouble?)options.Native.ExperimentalOptions.SessionReplay.SessionSampleRate; + o.Experimental.SessionReplay.RedactAllImages = options.Native.ExperimentalOptions.SessionReplay.RedactAllImages; + o.Experimental.SessionReplay.RedactAllText = options.Native.ExperimentalOptions.SessionReplay.RedactAllText; + // These options are intentionally set and not exposed for modification o.EnableExternalConfiguration = false; o.EnableDeduplication = false;