Skip to content

Commit 6188aed

Browse files
authored
Merge pull request #1195 from DataDog/jward/android-clear-text
feat: Add internal property for supporting clear text transport.
2 parents 53f9660 + 2b6fce3 commit 6188aed

3 files changed

Lines changed: 60 additions & 0 deletions

File tree

packages/core/android/src/main/kotlin/com/datadog/reactnative/DdSdkImplementation.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,7 @@ class DdSdkImplementation(
405405
internal const val DEFAULT_APP_VERSION = "?"
406406
internal const val DD_VERSION = "_dd.version"
407407
internal const val DD_VERSION_SUFFIX = "_dd.version_suffix"
408+
internal const val DD_NEEDS_CLEAR_TEXT_HTTP = "_dd.needsClearTextHttp"
408409
internal const val DD_DROP_RESOURCE = "_dd.resource.drop_resource"
409410
internal const val DD_DROP_ACTION = "_dd.action.drop_action"
410411
internal const val MONITOR_JS_ERROR_MESSAGE = "Error monitoring JS refresh rate"

packages/core/android/src/main/kotlin/com/datadog/reactnative/DdSdkNativeInitialization.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.datadog.android.log.LogsConfiguration
2121
import com.datadog.android.privacy.TrackingConsent
2222
import com.datadog.android.rum.Rum
2323
import com.datadog.android.rum.RumConfiguration
24+
import com.datadog.android._InternalProxy
2425
import com.datadog.android.rum._RumInternalProxy
2526
import com.datadog.android.rum.configuration.VitalsUpdateFrequency
2627
import com.datadog.android.rum.metric.networksettled.TimeBasedInitialResourceIdentifier
@@ -313,6 +314,10 @@ class DdSdkNativeInitialization internal constructor(
313314

314315
configBuilder.setBatchProcessingLevel(buildBatchProcessingLevel(configuration.batchProcessingLevel))
315316

317+
if (additionalConfig?.get(DdSdkImplementation.DD_NEEDS_CLEAR_TEXT_HTTP) == true) {
318+
_InternalProxy.allowClearTextHttp(configBuilder)
319+
}
320+
316321
return configBuilder.build()
317322
}
318323

packages/core/android/src/test/kotlin/com/datadog/reactnative/DdSdkTest.kt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,60 @@ internal class DdSdkTest {
582582

583583
// endregion
584584

585+
// region initialize / needsClearTextHttp
586+
587+
@Test
588+
fun `𝕄 initialize native SDK 𝕎 initialize() {needsClearTextHttp=true}`() {
589+
// Given
590+
val additionalConfig = (
591+
fakeConfiguration.additionalConfiguration?.toMutableMap() ?: mutableMapOf()
592+
).also { it[DdSdkImplementation.DD_NEEDS_CLEAR_TEXT_HTTP] = true }
593+
val bridgeConfiguration = fakeConfiguration.copy(additionalConfiguration = additionalConfig)
594+
val sdkConfigCaptor = argumentCaptor<Configuration>()
595+
val rumConfigCaptor = argumentCaptor<RumConfiguration>()
596+
val logsConfigCaptor = argumentCaptor<LogsConfiguration>()
597+
val traceConfigCaptor = argumentCaptor<TraceConfiguration>()
598+
599+
val rumMock = org.mockito.Mockito.mockStatic(Rum::class.java)
600+
val traceMock = org.mockito.Mockito.mockStatic(Trace::class.java)
601+
val logsMock = org.mockito.Mockito.mockStatic(Logs::class.java)
602+
603+
try {
604+
rumMock.`when`<Unit> { Rum.enable(any(), any()) }.then { }
605+
logsMock.`when`<Unit> { Logs.enable(any(), any()) }.then { }
606+
traceMock.`when`<Unit> { Trace.enable(any(), any()) }.then { }
607+
608+
// When
609+
testedBridgeSdk.initialize(bridgeConfiguration.toReadableJavaOnlyMap(), mockPromise)
610+
611+
// Then
612+
inOrder(mockDatadog) {
613+
verify(mockDatadog).initialize(
614+
same(mockContext),
615+
sdkConfigCaptor.capture(),
616+
any()
617+
)
618+
rumMock.verify { Rum.enable(rumConfigCaptor.capture(), any()) }
619+
traceMock.verify { Trace.enable(traceConfigCaptor.capture(), any()) }
620+
logsMock.verify { Logs.enable(logsConfigCaptor.capture(), any()) }
621+
}
622+
assertThat(sdkConfigCaptor.firstValue)
623+
.hasField("coreConfig") {
624+
it.hasFieldEqualTo("needsClearTextHttp", true)
625+
it.hasFieldEqualTo("firstPartyHostsWithHeaderTypes", emptyMap<String, String>())
626+
}
627+
.hasFieldEqualTo("clientToken", fakeConfiguration.clientToken)
628+
.hasFieldEqualTo("env", fakeConfiguration.env)
629+
.hasFieldEqualTo("variant", "")
630+
} finally {
631+
rumMock.close()
632+
logsMock.close()
633+
traceMock.close()
634+
}
635+
}
636+
637+
// endregion
638+
585639
// region initialize / site
586640

587641
@Test

0 commit comments

Comments
 (0)