From 3a4b0ba298aad39d8aeaf24b8984611858f86771 Mon Sep 17 00:00:00 2001 From: Lilly Helbling Date: Fri, 17 Apr 2026 12:18:03 +0100 Subject: [PATCH] Allow WebViewCookies option to be passed through --- .../main/java/com/exponea/ConfigurationParser.kt | 2 ++ .../java/com/exponea/ConfigurationParserTest.kt | 14 +++++++++++++- src/Configuration.ts | 2 ++ src/__tests__/Configuration.test.ts | 1 + src/test_data/configurationComplete.json | 8 ++++++-- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/exponea/ConfigurationParser.kt b/android/src/main/java/com/exponea/ConfigurationParser.kt index 63cb3d3..83611cb 100644 --- a/android/src/main/java/com/exponea/ConfigurationParser.kt +++ b/android/src/main/java/com/exponea/ConfigurationParser.kt @@ -240,6 +240,8 @@ internal class ConfigurationParser(private val readableMap: ReadableMap) { ) } } + "allowWebViewCookies" -> + configuration.allowWebViewCookies = map.getSafely("allowWebViewCookies", Boolean::class) } } } diff --git a/android/src/test/java/com/exponea/ConfigurationParserTest.kt b/android/src/test/java/com/exponea/ConfigurationParserTest.kt index 6431d14..85cd989 100644 --- a/android/src/test/java/com/exponea/ConfigurationParserTest.kt +++ b/android/src/test/java/com/exponea/ConfigurationParserTest.kt @@ -70,7 +70,8 @@ internal class ConfigurationParserTest { pushChannelId = "mock-push-channel-id", pushNotificationImportance = NotificationManager.IMPORTANCE_HIGH, httpLoggingLevel = ExponeaConfiguration.HttpLoggingLevel.BODY, - allowDefaultCustomerProperties = false + allowDefaultCustomerProperties = false, + allowWebViewCookies = true ), ConfigurationParser(data as ReadableMap).parse() ) @@ -179,4 +180,15 @@ internal class ConfigurationParserTest { val config = ConfigurationParser(data as ReadableMap).parse() assertEquals(false, config.requirePushAuthorization) } + + @Test + fun `allowWebViewCookies should default to false when not set`() { + val data = JavaOnlyMap.of( + "projectToken", "mock-project-token", + "authorizationToken", "mock-authorization-token" + ) + val config = ConfigurationParser(data as ReadableMap).parse() + assertEquals(false, config.allowWebViewCookies) + } + } diff --git a/src/Configuration.ts b/src/Configuration.ts index 2a86514..8d352f3 100644 --- a/src/Configuration.ts +++ b/src/Configuration.ts @@ -69,6 +69,8 @@ export interface AndroidConfiguration { pushNotificationImportance?: PushNotificationImportance; /** Level of HTTP logging */ httpLoggingLevel?: HttpLoggingLevel; + /** If true, allows the Exponea SDK WebViews to accept and store cookies without clearing global app cookies */ + allowWebViewCookies?: boolean; } export interface IOSConfiguration { diff --git a/src/__tests__/Configuration.test.ts b/src/__tests__/Configuration.test.ts index 4f64823..a680094 100644 --- a/src/__tests__/Configuration.test.ts +++ b/src/__tests__/Configuration.test.ts @@ -56,6 +56,7 @@ test('should construct full configuration', () => { pushNotificationImportance: PushNotificationImportance.HIGH, httpLoggingLevel: HttpLoggingLevel.BODY, requirePushAuthorization: false, + allowWebViewCookies: true, }, ios: { requirePushAuthorization: false, diff --git a/src/test_data/configurationComplete.json b/src/test_data/configurationComplete.json index 0f8b01d..068c172 100644 --- a/src/test_data/configurationComplete.json +++ b/src/test_data/configurationComplete.json @@ -14,7 +14,10 @@ "string": "value", "boolean": false, "number": 3.14159, - "array": ["value1", "value2"], + "array": [ + "value1", + "value2" + ], "object": { "key": "value" } @@ -33,7 +36,8 @@ "pushChannelId": "mock-push-channel-id", "pushNotificationImportance": "HIGH", "httpLoggingLevel": "BODY", - "requirePushAuthorization": false + "requirePushAuthorization": false, + "allowWebViewCookies": true }, "ios": { "requirePushAuthorization": false,