diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderInsets.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderInsets.kt index 67b0424f10c0..26ed8034f97f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderInsets.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/style/BorderInsets.kt @@ -27,10 +27,10 @@ internal class BorderInsets { * Sets the border width for a specific logical edge. * * @param edge The logical edge to set - * @param width The border width in pixels, or null to clear + * @param width The border width in pixels, or null or NaN to clear */ fun setBorderWidth(edge: LogicalEdge, width: Float?) { - edgeInsets[edge.ordinal] = width + edgeInsets[edge.ordinal] = width?.takeUnless { it.isNaN() } } /** diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/style/BorderInsetsTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/style/BorderInsetsTest.kt new file mode 100644 index 000000000000..4212bef6f47c --- /dev/null +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/style/BorderInsetsTest.kt @@ -0,0 +1,30 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.uimanager.style + +import android.content.Context +import android.util.LayoutDirection +import org.assertj.core.api.Assertions.assertThat +import org.junit.Test +import org.mockito.kotlin.mock + +class BorderInsetsTest { + @Test + fun nanBorderWidthsAreTreatedAsUnset() { + val borderInsets = BorderInsets() + borderInsets.setBorderWidth(LogicalEdge.ALL, 4f) + borderInsets.setBorderWidth(LogicalEdge.LEFT, Float.NaN) + + val resolved = borderInsets.resolve(LayoutDirection.LTR, mock()) + + assertThat(resolved.left).isEqualTo(4f) + assertThat(resolved.top).isEqualTo(4f) + assertThat(resolved.right).isEqualTo(4f) + assertThat(resolved.bottom).isEqualTo(4f) + } +}