From 56d1e573ba51971daa2d2e964750b4dae3e6a859 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Mon, 8 Sep 2025 11:49:00 -0400 Subject: [PATCH 1/8] added additional config properties for ios --- wrappers/obj-c/ODWSanitizer.mm | 1 + wrappers/obj-c/ODWSanitizerInitConfig.h | 8 ++++++++ wrappers/obj-c/ODWSanitizerInitConfig.mm | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/wrappers/obj-c/ODWSanitizer.mm b/wrappers/obj-c/ODWSanitizer.mm index 06e343948..ca0d3283e 100644 --- a/wrappers/obj-c/ODWSanitizer.mm +++ b/wrappers/obj-c/ODWSanitizer.mm @@ -31,6 +31,7 @@ +(void)initializeSanitizer:(ILogger *)logger withODWSanitizerInitConfig:(ODWSani { config.NotificationEventName = [[initConfigObject notificationEventName] UTF8String]; } + config.SetAllWarningsToSanitization = [initConfigObject setAllWarningsToSanitization]; _sanitizerPtr = std::make_shared(config); LogManager::GetInstance()->SetDataInspector(_sanitizerPtr); diff --git a/wrappers/obj-c/ODWSanitizerInitConfig.h b/wrappers/obj-c/ODWSanitizerInitConfig.h index 4e526815b..6872db0c9 100644 --- a/wrappers/obj-c/ODWSanitizerInitConfig.h +++ b/wrappers/obj-c/ODWSanitizerInitConfig.h @@ -15,6 +15,14 @@ NS_ASSUME_NONNULL_BEGIN */ @property(readwrite, copy, nonatomic) NSString* notificationEventName; +/*! + @brief (OPTIONAL) If enabled this will force sanitization for Urls, emails and site paths. The Default value is `YES`. + */ +@property(readwrite, nonatomic) BOOL setWarningsToSanitization; + +// Initializer +- (instancetype)init; + @end NS_ASSUME_NONNULL_END diff --git a/wrappers/obj-c/ODWSanitizerInitConfig.mm b/wrappers/obj-c/ODWSanitizerInitConfig.mm index cc3790cf5..d9bccb615 100644 --- a/wrappers/obj-c/ODWSanitizerInitConfig.mm +++ b/wrappers/obj-c/ODWSanitizerInitConfig.mm @@ -10,4 +10,13 @@ */ @implementation ODWSanitizerInitConfig : NSObject +- (instancetype)init { + self = [super init]; + if (self) { + _notificationEventName = @"SanitizerConcerns"; // Default event name + _setWarningsToSanitization = YES; // Default to true + } + return self; +} + @end \ No newline at end of file From fb443bcd08607be944ab761a77df95ab0ff82f87 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Tue, 9 Sep 2025 07:32:04 -0400 Subject: [PATCH 2/8] added jni to enable/disable warnings --- lib/jni/Sanitizer_jni.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/jni/Sanitizer_jni.cpp b/lib/jni/Sanitizer_jni.cpp index 830b072ab..5cc355d07 100644 --- a/lib/jni/Sanitizer_jni.cpp +++ b/lib/jni/Sanitizer_jni.cpp @@ -28,7 +28,8 @@ JNIEXPORT jboolean JNICALL Java_com_microsoft_applications_events_Sanitizer_nativeInitialize( JNIEnv *env, jclass /* this */, jlong iLoggerNativePtr, - jstring notificationEventName) { + jstring notificationEventName, + jboolean disableWarnings) { if (spSanitizer != nullptr) { return false; @@ -40,6 +41,8 @@ Java_com_microsoft_applications_events_Sanitizer_nativeInitialize( sanitizerConfig.NotificationEventName = JStringToStdString(env, notificationEventName).c_str(); } + sanitizerConfig.SetAllWarningsToSanitizations = static_cast(disableWarnings); + spSanitizer = std::make_shared(sanitizerConfig); return true; } From effdb935ed39ae643aa0b6f653a3a8330f58b4c4 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Tue, 9 Sep 2025 07:55:23 -0400 Subject: [PATCH 3/8] udpate ios code --- wrappers/obj-c/ODWSanitizer.mm | 2 +- wrappers/swift/Sources/OneDSSwift/Sanitizer.swift | 2 +- .../swift/Sources/OneDSSwift/SanitizerInitConfig.swift | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/wrappers/obj-c/ODWSanitizer.mm b/wrappers/obj-c/ODWSanitizer.mm index ca0d3283e..7e2f2c668 100644 --- a/wrappers/obj-c/ODWSanitizer.mm +++ b/wrappers/obj-c/ODWSanitizer.mm @@ -31,7 +31,7 @@ +(void)initializeSanitizer:(ILogger *)logger withODWSanitizerInitConfig:(ODWSani { config.NotificationEventName = [[initConfigObject notificationEventName] UTF8String]; } - config.SetAllWarningsToSanitization = [initConfigObject setAllWarningsToSanitization]; + config.SetAllWarningsToSanitizations = [initConfigObject setAllWarningsToSanitization]; _sanitizerPtr = std::make_shared(config); LogManager::GetInstance()->SetDataInspector(_sanitizerPtr); diff --git a/wrappers/swift/Sources/OneDSSwift/Sanitizer.swift b/wrappers/swift/Sources/OneDSSwift/Sanitizer.swift index 3aefd3563..4b5035f3c 100644 --- a/wrappers/swift/Sources/OneDSSwift/Sanitizer.swift +++ b/wrappers/swift/Sources/OneDSSwift/Sanitizer.swift @@ -24,7 +24,7 @@ public final class Sanitizer { } /// Resets the Sanitizer instance. - public static func resetPrivacyGuardInstance() { + public static func resetSanitizerInstance() { ODWSanitizer.resetSanitizerInstance() } } \ No newline at end of file diff --git a/wrappers/swift/Sources/OneDSSwift/SanitizerInitConfig.swift b/wrappers/swift/Sources/OneDSSwift/SanitizerInitConfig.swift index 5882e4a64..a8ea991f3 100644 --- a/wrappers/swift/Sources/OneDSSwift/SanitizerInitConfig.swift +++ b/wrappers/swift/Sources/OneDSSwift/SanitizerInitConfig.swift @@ -23,6 +23,16 @@ public final class SanitizerInitConfig { } } + /// (OPTIONAL) If enabled this will force sanitization for Urls, emails and site paths. + public var setWarningsToSanitization: Bool { + get { + odwSanitizerInitConfig.setWarningsToSanitization + } + set { + odwSanitizerInitConfig.setWarningsToSanitization = newValue + } + } + /** Returns the Obj-C object of the wrapper. From edb6d257e5f4222ea609e397f2a9be3ac161b427 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Tue, 9 Sep 2025 07:58:34 -0400 Subject: [PATCH 4/8] updated jni wrapper --- lib/jni/Sanitizer_jni.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jni/Sanitizer_jni.cpp b/lib/jni/Sanitizer_jni.cpp index 5cc355d07..27ceee333 100644 --- a/lib/jni/Sanitizer_jni.cpp +++ b/lib/jni/Sanitizer_jni.cpp @@ -29,7 +29,7 @@ Java_com_microsoft_applications_events_Sanitizer_nativeInitialize( JNIEnv *env, jclass /* this */, jlong iLoggerNativePtr, jstring notificationEventName, - jboolean disableWarnings) { + jboolean warningsToSanitization) { if (spSanitizer != nullptr) { return false; @@ -41,7 +41,7 @@ Java_com_microsoft_applications_events_Sanitizer_nativeInitialize( sanitizerConfig.NotificationEventName = JStringToStdString(env, notificationEventName).c_str(); } - sanitizerConfig.SetAllWarningsToSanitizations = static_cast(disableWarnings); + sanitizerConfig.SetAllWarningsToSanitizations = static_cast(warningsToSanitization); spSanitizer = std::make_shared(sanitizerConfig); return true; From dfef49483053d5b3c3b2d1ebb35a3532a0be63ba Mon Sep 17 00:00:00 2001 From: fmarasco Date: Tue, 9 Sep 2025 09:57:01 -0400 Subject: [PATCH 5/8] fixed assignement --- wrappers/obj-c/ODWSanitizer.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrappers/obj-c/ODWSanitizer.mm b/wrappers/obj-c/ODWSanitizer.mm index 7e2f2c668..9ade8cdd3 100644 --- a/wrappers/obj-c/ODWSanitizer.mm +++ b/wrappers/obj-c/ODWSanitizer.mm @@ -31,7 +31,7 @@ +(void)initializeSanitizer:(ILogger *)logger withODWSanitizerInitConfig:(ODWSani { config.NotificationEventName = [[initConfigObject notificationEventName] UTF8String]; } - config.SetAllWarningsToSanitizations = [initConfigObject setAllWarningsToSanitization]; + config.SetAllWarningsToSanitizations = initConfigObject.setWarningsToSanitization; _sanitizerPtr = std::make_shared(config); LogManager::GetInstance()->SetDataInspector(_sanitizerPtr); From 77f18655ecb24aeb599811f22d442d3bb81472d4 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Wed, 10 Sep 2025 12:09:55 -0400 Subject: [PATCH 6/8] added support for warnings for Andriod --- .../applications/events/Sanitizer.java | 11 ++++-- .../events/SanitizerConfiguration.java | 39 ++++++++++++++++--- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java index eab0e2a41..b202d3e53 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java @@ -9,7 +9,7 @@ public class Sanitizer { /** * Initializes the sanitizer with the provided configuration. * - * @param config The configuration object containing logger and event name. + * @param config The configuration settings used to initialize a sanitizer. * @return true if initialization succeeds, false otherwise. * @throws IllegalArgumentException if config or any required field is null or invalid. */ @@ -21,16 +21,19 @@ public static boolean initialize(SanitizerConfiguration config) { } // Ensure the logger instance is provided - if(config.loggerInstance == null) { + if(config.getLogger() == null) { throw new IllegalArgumentException(("loggerInstance cannot be null in config.")); } // Ensure the notification event name is not null or empty - if (config.notificationEventName == null || config.notificationEventName.isEmpty()) { + if (config.getNotificationEventName() == null || config.getNotificationEventName().isEmpty()) { throw new IllegalArgumentException(("notificationEventName cannot be null in config.")); } - return nativeInitialize(config.loggerInstance.getNativeILoggerPtr(), config.notificationEventName); + return nativeInitialize( + config.getLogger().getNativeILoggerPtr(), + config.getNotificationEventName(), + config.isWarningsOff()); } /** diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java index 1a51511e1..bad5f9aea 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java @@ -5,24 +5,30 @@ package com.microsoft.applications.events; /** - * Represents the configuration settings used to initialize a sanitizer instance. + * Represents the configuration settings used to initialize a sanitizer. */ public class SanitizerConfiguration { /** - * The logger instance used to record privacy concern events. + * The logger instance used to record sanitizer concern events. * This field is required. */ - public final ILogger loggerInstance; + private final ILogger loggerInstance; /**      * The custom event name used when logging sanitizer concerns.      * Optional. Defaults to "SanitizerConcerns" if not specified.      */ - public String notificationEventName = "SanitizerConcerns"; + private String notificationEventName = "SanitizerConcerns"; - /** + /** + * Flag to control whether warnings should be turned off. + * Optional. Defaults to true. + */ + private boolean warningsOff = true; + + /**      * Constructs a new SanitizerConfiguration with the specified logger.      *      * @param logger The ILogger implementation used to log privacy concern events. @@ -36,4 +42,27 @@ public SanitizerConfiguration(ILogger logger) { this.loggerInstance = logger; } + + // Getters and Setters + public ILogger getLogger() { + return this.loggerInstance; + } + + public String getNotificationEventName() { + return this.notificationEventName; + } + + public void setEventName(String eventName) { + if (eventName != null && !eventName.trim().isEmpty()) { + this.notificationEventName = eventName; + } + } + + public boolean isWarningsOff() { + return warningsOff; + } + + public void setWarningsOff(boolean warningsOff) { + this.warningsOff = warningsOff; + } } \ No newline at end of file From 0f69a5b984bdffe83402fa91cc2165984fd04e76 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Wed, 10 Sep 2025 12:23:11 -0400 Subject: [PATCH 7/8] added comments and update nativeinit --- .../microsoft/applications/events/Sanitizer.java | 3 ++- .../applications/events/SanitizerConfiguration.java | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java index b202d3e53..cca31d1fc 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java @@ -48,9 +48,10 @@ public static boolean initialize(SanitizerConfiguration config) { * * @param loggerNativePtr Native pointer to ILogger. * @param notificationEventName Optional event name for sanitizer notifications. + * @param warningsOff Flag to control whether warnings are suppressed. * @return true if initialization was successful, false otherwise. */ - public static native boolean nativeInitialize(long loggerNativePtr, String notificationEventName); + public static native boolean nativeInitialize(long loggerNativePtr, String notificationEventName, boolean warningsOff); /** * Uninitializes the sanitizer. diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java index bad5f9aea..83140f1c6 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java @@ -11,7 +11,7 @@ public class SanitizerConfiguration { /** - * The logger instance used to record sanitizer concern events. + * The logger instance used to record privacy concern events. * This field is required. */ private final ILogger loggerInstance; @@ -23,7 +23,7 @@ public class SanitizerConfiguration { private String notificationEventName = "SanitizerConcerns"; /** - * Flag to control whether warnings should be turned off. + * Flag to control whether sanitizer warnings are suppressed. * Optional. Defaults to true. */ private boolean warningsOff = true; @@ -43,25 +43,32 @@ public SanitizerConfiguration(ILogger logger) { this.loggerInstance = logger; } - // Getters and Setters + // Returns the logger instance used to record privacy concern events. public ILogger getLogger() { return this.loggerInstance; } + // Returns the current event name used for logging sanitizer concerns. Defaults to "SanitizerConcerns" if not specified. public String getNotificationEventName() { return this.notificationEventName; } + // Sets a custom event name for logging sanitizer concerns. + // Ignores null or empty strings to preserve the default value. public void setEventName(String eventName) { if (eventName != null && !eventName.trim().isEmpty()) { this.notificationEventName = eventName; } } + + // Returns whether warnings are currently turned off. + // True means enforcing sanitization; false means warnings are enabled. public boolean isWarningsOff() { return warningsOff; } + // Sets the flag to enable or disable warnings. public void setWarningsOff(boolean warningsOff) { this.warningsOff = warningsOff; } From 84bd274c737b5f98d435c8e8e97a8393eadb1744 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Wed, 10 Sep 2025 13:51:15 -0400 Subject: [PATCH 8/8] refactored class as the method was confusioning --- .../applications/events/Sanitizer.java | 2 +- .../events/SanitizerConfiguration.java | 35 +++++++++---------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java index cca31d1fc..13b53f2b4 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/Sanitizer.java @@ -33,7 +33,7 @@ public static boolean initialize(SanitizerConfiguration config) { return nativeInitialize( config.getLogger().getNativeILoggerPtr(), config.getNotificationEventName(), - config.isWarningsOff()); + config.isEnforceSanitization()); } /** diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java index 83140f1c6..fa1dbd56b 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/SanitizerConfiguration.java @@ -15,25 +15,25 @@ public class SanitizerConfiguration { * This field is required. */ private final ILogger loggerInstance; - + /** -     * The custom event name used when logging sanitizer concerns. -     * Optional. Defaults to "SanitizerConcerns" if not specified. -     */ + * The custom event name used when logging sanitizer concerns. + * Optional. Defaults to "SanitizerConcerns" if not specified. + */ private String notificationEventName = "SanitizerConcerns"; /** - * Flag to control whether sanitizer warnings are suppressed. + * Flag to control whether sanitizer enforcement is enabled. * Optional. Defaults to true. */ - private boolean warningsOff = true; + private boolean enforceSanitization = true; /** -     * Constructs a new SanitizerConfiguration with the specified logger. -     * -     * @param logger The ILogger implementation used to log privacy concern events. -     * @throws IllegalArgumentException if the logger is null. -     */ + * Constructs a new SanitizerConfiguration with the specified logger. + * + * @param logger The ILogger implementation used to log privacy concern events. + * @throws IllegalArgumentException if the logger is null. + */ public SanitizerConfiguration(ILogger logger) { if(logger == null) { @@ -62,14 +62,13 @@ public void setEventName(String eventName) { } - // Returns whether warnings are currently turned off. - // True means enforcing sanitization; false means warnings are enabled. - public boolean isWarningsOff() { - return warningsOff; + // Returns whether sanitization enforcement is currently enabled. + public boolean isEnforceSanitization() { + return enforceSanitization; } - // Sets the flag to enable or disable warnings. - public void setWarningsOff(boolean warningsOff) { - this.warningsOff = warningsOff; + // Sets the flag to enable or disable sanitization enforcement. + public void setEnforceSanitization(boolean enforceSanitization) { + this.enforceSanitization = enforceSanitization; } } \ No newline at end of file