diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e635525..a6dec01f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Add `sendDefaultPii` option ([#377](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/377)) + ### Dependencies - Bump Java SDK from v8.8.0 to v8.9.0 ([#375](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/375)) @@ -10,7 +14,7 @@ ## 0.12.0 -### Feature +### Features - Move replay options out of experimental ([#367](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/367)) - You can now access the replay options via `options.sessionReplay` diff --git a/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api b/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api index e479b79a..cab31bff 100644 --- a/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api +++ b/sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api @@ -185,6 +185,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions { public final fun getRelease ()Ljava/lang/String; public final fun getSampleRate ()Ljava/lang/Double; public final fun getSdk ()Lio/sentry/kotlin/multiplatform/protocol/SdkVersion; + public final fun getSendDefaultPii ()Z public final fun getSessionReplay ()Lio/sentry/kotlin/multiplatform/SentryReplayOptions; public final fun getSessionTrackingIntervalMillis ()J public final fun getTracesSampleRate ()Ljava/lang/Double; @@ -214,6 +215,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions { public final fun setRelease (Ljava/lang/String;)V public final fun setSampleRate (Ljava/lang/Double;)V public final fun setSdk (Lio/sentry/kotlin/multiplatform/protocol/SdkVersion;)V + public final fun setSendDefaultPii (Z)V public final fun setSessionReplay (Lio/sentry/kotlin/multiplatform/SentryReplayOptions;)V public final fun setSessionTrackingIntervalMillis (J)V public final fun setTracesSampleRate (Ljava/lang/Double;)V diff --git a/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api b/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api index e0779801..d122843d 100644 --- a/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api +++ b/sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api @@ -182,6 +182,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions { public final fun getRelease ()Ljava/lang/String; public final fun getSampleRate ()Ljava/lang/Double; public final fun getSdk ()Lio/sentry/kotlin/multiplatform/protocol/SdkVersion; + public final fun getSendDefaultPii ()Z public final fun getSessionReplay ()Lio/sentry/kotlin/multiplatform/SentryReplayOptions; public final fun getSessionTrackingIntervalMillis ()J public final fun getTracesSampleRate ()Ljava/lang/Double; @@ -211,6 +212,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions { public final fun setRelease (Ljava/lang/String;)V public final fun setSampleRate (Ljava/lang/Double;)V public final fun setSdk (Lio/sentry/kotlin/multiplatform/protocol/SdkVersion;)V + public final fun setSendDefaultPii (Z)V public final fun setSessionReplay (Lio/sentry/kotlin/multiplatform/SentryReplayOptions;)V public final fun setSessionTrackingIntervalMillis (J)V public final fun setTracesSampleRate (Ljava/lang/Double;)V diff --git a/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.android.kt b/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.android.kt index 02a7e439..76e6cc57 100644 --- a/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.android.kt +++ b/sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.android.kt @@ -73,6 +73,9 @@ class SentryAndroidOptionsWrapper(private val androidOptions: SentryAndroidOptio override val sessionReplay: AndroidSentryReplayOptions get() = androidOptions.sessionReplay + override val sendDefaultPii: Boolean + get() = androidOptions.isSendDefaultPii + override fun applyFromOptions(options: SentryOptions) { options.toAndroidSentryOptionsCallback().invoke(androidOptions) } diff --git a/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt index d7c488a0..77ce7d0c 100644 --- a/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt +++ b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt @@ -23,6 +23,7 @@ internal fun CocoaSentryOptions.applyCocoaBaseOptions(kmpOptions: SentryOptions) kmpOptions.environment?.let { cocoaOptions.environment = it } + cocoaOptions.sendDefaultPii = kmpOptions.sendDefaultPii cocoaOptions.releaseName = kmpOptions.release cocoaOptions.debug = kmpOptions.debug cocoaOptions.sessionTrackingIntervalMillis = kmpOptions.sessionTrackingIntervalMillis.convert() diff --git a/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.apple.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.apple.kt index 5c9891d7..47bcd12f 100644 --- a/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.apple.kt +++ b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.apple.kt @@ -54,6 +54,9 @@ open class SentryAppleOptionsWrapper(private val cocoaOptions: CocoaSentryOption override val diagnosticLevel: SentryLevel get() = cocoaOptions.diagnosticLevel.toKmpSentryLevel()!! + override val sendDefaultPii: Boolean + get() = cocoaOptions.sendDefaultPii + override fun applyFromOptions(options: SentryOptions) { options.toCocoaOptionsConfiguration().invoke(cocoaOptions) } diff --git a/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.jvm.kt b/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.jvm.kt index 2f42adac..2caf8d6e 100644 --- a/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.jvm.kt +++ b/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.jvm.kt @@ -23,6 +23,7 @@ internal fun JvmSentryOptions.applyJvmBaseOptions(kmpOptions: SentryOptions) { jvmOptions.isAttachStacktrace = kmpOptions.attachStackTrace jvmOptions.dist = kmpOptions.dist jvmOptions.environment = kmpOptions.environment + jvmOptions.isSendDefaultPii = kmpOptions.sendDefaultPii jvmOptions.release = kmpOptions.release jvmOptions.isDebug = kmpOptions.debug jvmOptions.sessionTrackingIntervalMillis = kmpOptions.sessionTrackingIntervalMillis diff --git a/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryOptions.kt b/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryOptions.kt index 9f59f3a9..124fa0d3 100644 --- a/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryOptions.kt +++ b/sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryOptions.kt @@ -191,6 +191,19 @@ public open class SentryOptions { */ public var sessionReplay: SentryReplayOptions = SentryReplayOptions() + /** + * If this flag is enabled, certain personally identifiable information (PII) is added by active integrations. + * Among other things, enabling this will enable automatic IP address collection on events. + * + * If you enable this option, be sure to manually remove what you don't want to send using + * our features for managing sensitive data. + * + * For further details, refer to the documentation in the respective native SDKs: + * - [Cocoa](https://docs.sentry.io/platforms/apple/data-management/data-collected/) + * - [Android](https://docs.sentry.io/platforms/android/data-management/data-collected/) + */ + public var sendDefaultPii: Boolean = false + /** * Experimental options for new features, these options are going to be promoted to SentryOptions * before GA. diff --git a/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.kt b/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.kt index b89952f9..c34aa6ba 100644 --- a/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.kt +++ b/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.kt @@ -14,6 +14,7 @@ interface CommonPlatformOptions { val maxAttachmentSize: Long val sampleRate: Double? val tracesSampleRate: Double? + val sendDefaultPii: Boolean fun applyFromOptions(options: SentryOptions) } diff --git a/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryOptionsTest.kt b/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryOptionsTest.kt index 40b7b431..2bb260f3 100644 --- a/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryOptionsTest.kt +++ b/sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryOptionsTest.kt @@ -133,6 +133,7 @@ class SentryOptionsTest : BaseSentryTest() { assertTrue(options.sessionReplay.maskAllImages) assertEquals(SentryReplayOptions.Quality.MEDIUM, options.sessionReplay.quality) assertTrue(options.enableWatchdogTerminationTracking) + assertFalse(options.sendDefaultPii) } @Test @@ -163,6 +164,7 @@ class SentryOptionsTest : BaseSentryTest() { sessionReplay.maskAllText = false sessionReplay.maskAllImages = false sessionReplay.quality = SentryReplayOptions.Quality.LOW + sendDefaultPii = true } val platformOptions = createPlatformOptions() diff --git a/sentry-kotlin-multiplatform/src/jvmTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.jvm.kt b/sentry-kotlin-multiplatform/src/jvmTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.jvm.kt index 7a3afecf..48eac5a8 100644 --- a/sentry-kotlin-multiplatform/src/jvmTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.jvm.kt +++ b/sentry-kotlin-multiplatform/src/jvmTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.jvm.kt @@ -46,6 +46,9 @@ class SentryJvmOptionsWrapper(private val jvmOptions: JvmSentryOptions) : Platfo override val diagnosticLevel: SentryLevel get() = jvmOptions.diagnosticLevel.toKmpSentryLevel()!! + override val sendDefaultPii: Boolean + get() = jvmOptions.isSendDefaultPii + override fun applyFromOptions(options: SentryOptions) { options.toJvmSentryOptionsCallback().invoke(jvmOptions) }