replace getWindowDisplayMetrics with getScreenDisplayMetrics (#53523)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53523

update `DisplayMetricsHolder.getWindowDisplayMetrics()` to `getScreenDisplayMetrics()`.

Where window width and height is not needed, prefer to use `screenDisplayMetrics` as with upcoming diff `windowDisplayMetrics` initialization only happen using UiContext and have potential to cause more issues if used unnecessarily.

Changelog: [Internal] Update `DisplayMetricsHolder.getWindowDisplayMetrics()` to use `.getScreenDisplayMetrics()`

 ---

Reviewed By: mlord93

Differential Revision: D81270196

fbshipit-source-id: 5b392d67449ddceebbc0fe81db15fa61ae44108f
This commit is contained in:
Alan Lee
2025-08-29 12:21:57 -07:00
committed by Facebook GitHub Bot
parent a4581ecd8b
commit 1ad2ec099a
6 changed files with 10 additions and 10 deletions
@@ -22,7 +22,7 @@ public object PixelUtil {
return TypedValue.applyDimension( return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, TypedValue.COMPLEX_UNIT_DIP,
value, value,
DisplayMetricsHolder.getWindowDisplayMetrics(), DisplayMetricsHolder.getScreenDisplayMetrics(),
) )
} }
@@ -40,7 +40,7 @@ public object PixelUtil {
return Float.NaN return Float.NaN
} }
val displayMetrics = DisplayMetricsHolder.getWindowDisplayMetrics() val displayMetrics = DisplayMetricsHolder.getScreenDisplayMetrics()
val scaledValue = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, value, displayMetrics) val scaledValue = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, value, displayMetrics)
if (maxFontScale >= 1) { if (maxFontScale >= 1) {
@@ -63,13 +63,13 @@ public object PixelUtil {
return Float.NaN return Float.NaN
} }
return value / DisplayMetricsHolder.getWindowDisplayMetrics().density return value / DisplayMetricsHolder.getScreenDisplayMetrics().density
} }
/** @return [Float] that represents the density of the display metrics for device screen. */ /** @return [Float] that represents the density of the display metrics for device screen. */
@JvmStatic @JvmStatic
public fun getDisplayMetricDensity(): Float = public fun getDisplayMetricDensity(): Float =
DisplayMetricsHolder.getWindowDisplayMetrics().density DisplayMetricsHolder.getScreenDisplayMetrics().density
/* Kotlin extensions */ /* Kotlin extensions */
public fun Int.dpToPx(): Float = toPixelFromDIP(this.toFloat()) public fun Int.dpToPx(): Float = toPixelFromDIP(this.toFloat())
@@ -514,7 +514,7 @@ class TouchEventDispatchTest {
metrics.xdpi = 1f metrics.xdpi = 1f
metrics.ydpi = 1f metrics.ydpi = 1f
metrics.density = 1f metrics.density = 1f
DisplayMetricsHolder.setWindowDisplayMetrics(metrics) DisplayMetricsHolder.setScreenDisplayMetrics(metrics)
val reactContext = ReactTestHelper.createCatalystContextForTest() val reactContext = ReactTestHelper.createCatalystContextForTest()
@@ -25,7 +25,7 @@ class ColorStopTest {
fun setUp() { fun setUp() {
val metrics = DisplayMetrics() val metrics = DisplayMetrics()
metrics.density = 1f metrics.density = 1f
DisplayMetricsHolder.setWindowDisplayMetrics(metrics) DisplayMetricsHolder.setScreenDisplayMetrics(metrics)
} }
@Test @Test
@@ -75,14 +75,14 @@ class ReactImagePropertyTest {
context.initializeWithInstance(catalystInstanceMock) context.initializeWithInstance(catalystInstanceMock)
themeContext = ThemedReactContext(context, context, null, -1) themeContext = ThemedReactContext(context, context, null, -1)
Fresco.initialize(context) Fresco.initialize(context)
DisplayMetricsHolder.setWindowDisplayMetrics(DisplayMetrics()) DisplayMetricsHolder.setScreenDisplayMetrics(DisplayMetrics())
ReactNativeFeatureFlagsForTests.setUp() ReactNativeFeatureFlagsForTests.setUp()
} }
@After @After
fun teardown() { fun teardown() {
DisplayMetricsHolder.setWindowDisplayMetrics(null) DisplayMetricsHolder.setScreenDisplayMetrics(null)
rnLog.close() rnLog.close()
flogMock.close() flogMock.close()
} }
@@ -65,7 +65,7 @@ class ReactTextInputPropertyTest {
context.initializeWithInstance(catalystInstanceMock) context.initializeWithInstance(catalystInstanceMock)
themedContext = ThemedReactContext(context, context.baseContext, null, ID_NULL) themedContext = ThemedReactContext(context, context.baseContext, null, ID_NULL)
manager = ReactTextInputManager() manager = ReactTextInputManager()
DisplayMetricsHolder.setWindowDisplayMetrics(DisplayMetrics()) DisplayMetricsHolder.setScreenDisplayMetrics(DisplayMetrics())
view = manager.createViewInstance(themedContext) view = manager.createViewInstance(themedContext)
} }
@@ -47,7 +47,7 @@ class ReactVirtualViewTest {
val displayMetricsHolder = mockStatic(DisplayMetricsHolder::class.java) val displayMetricsHolder = mockStatic(DisplayMetricsHolder::class.java)
displayMetricsHolder displayMetricsHolder
.`when`<DisplayMetrics> { DisplayMetricsHolder.getWindowDisplayMetrics() } .`when`<DisplayMetrics> { DisplayMetricsHolder.getScreenDisplayMetrics() }
.thenAnswer { DisplayMetrics().apply { density = 1f } } .thenAnswer { DisplayMetrics().apply { density = 1f } }
} }