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..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 @@ -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.isEnforceSanitization()); } /** @@ -45,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 1a51511e1..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 @@ -5,7 +5,7 @@ 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 { @@ -14,20 +14,26 @@ public class SanitizerConfiguration { * The logger instance used to record privacy 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. + */ + private String notificationEventName = "SanitizerConcerns"; + + /** + * Flag to control whether sanitizer enforcement is enabled. + * Optional. Defaults to true. + */ + private boolean enforceSanitization = true; + /** -     * The custom event name used when logging sanitizer concerns. -     * Optional. Defaults to "SanitizerConcerns" if not specified. -     */ - public String notificationEventName = "SanitizerConcerns"; - - /** -     * 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) { @@ -36,4 +42,33 @@ public SanitizerConfiguration(ILogger logger) { this.loggerInstance = logger; } + + // 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 sanitization enforcement is currently enabled. + public boolean isEnforceSanitization() { + return enforceSanitization; + } + + // Sets the flag to enable or disable sanitization enforcement. + public void setEnforceSanitization(boolean enforceSanitization) { + this.enforceSanitization = enforceSanitization; + } } \ No newline at end of file diff --git a/lib/jni/Sanitizer_jni.cpp b/lib/jni/Sanitizer_jni.cpp index 830b072ab..27ceee333 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 warningsToSanitization) { 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(warningsToSanitization); + spSanitizer = std::make_shared(sanitizerConfig); return true; } diff --git a/wrappers/obj-c/ODWSanitizer.mm b/wrappers/obj-c/ODWSanitizer.mm index 06e343948..9ade8cdd3 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.SetAllWarningsToSanitizations = initConfigObject.setWarningsToSanitization; _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 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.