Skip to content

Commit 1e51431

Browse files
committed
Remove getWindowDisplayMetrics from DisplayMetricsHolder
1 parent 0c153e2 commit 1e51431

5 files changed

Lines changed: 2 additions & 102 deletions

File tree

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3284,13 +3284,10 @@ public abstract class com/facebook/react/uimanager/BaseViewManagerDelegate : com
32843284

32853285
public final class com/facebook/react/uimanager/DisplayMetricsHolder {
32863286
public static final field INSTANCE Lcom/facebook/react/uimanager/DisplayMetricsHolder;
3287-
public static final fun getDisplayMetricsWritableMap (D)Lcom/facebook/react/bridge/WritableMap;
32883287
public static final fun getScreenDisplayMetrics ()Landroid/util/DisplayMetrics;
3289-
public static final fun getWindowDisplayMetrics ()Landroid/util/DisplayMetrics;
32903288
public static final fun initDisplayMetrics (Landroid/content/Context;)V
32913289
public static final fun initDisplayMetricsIfNotInitialized (Landroid/content/Context;)V
32923290
public static final fun setScreenDisplayMetrics (Landroid/util/DisplayMetrics;)V
3293-
public static final fun setWindowDisplayMetrics (Landroid/util/DisplayMetrics;)V
32943291
}
32953292

32963293
public final class com/facebook/react/uimanager/FloatUtil {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import android.util.DisplayMetrics
1414
import android.view.WindowManager
1515
import androidx.core.view.ViewCompat
1616
import androidx.core.view.WindowInsetsCompat
17-
import com.facebook.react.bridge.WritableMap
18-
import com.facebook.react.bridge.WritableNativeMap
1917
import com.facebook.react.uimanager.PixelUtil.pxToDp
2018

2119
/**
@@ -26,23 +24,8 @@ public object DisplayMetricsHolder {
2624
private const val INITIALIZATION_MISSING_MESSAGE =
2725
"DisplayMetricsHolder must be initialized with initDisplayMetricsIfNotInitialized or initDisplayMetrics"
2826

29-
@JvmStatic private var windowDisplayMetrics: DisplayMetrics? = null
3027
@JvmStatic private var screenDisplayMetrics: DisplayMetrics? = null
3128

32-
// TODO(0.87): Remove once we are out of the non-breaking window (see 8d21ffda60)
33-
/** The metrics of the window associated to the Context used to initialize ReactNative */
34-
@JvmStatic
35-
public fun getWindowDisplayMetrics(): DisplayMetrics {
36-
checkNotNull(windowDisplayMetrics) { INITIALIZATION_MISSING_MESSAGE }
37-
return windowDisplayMetrics as DisplayMetrics
38-
}
39-
40-
// TODO(0.87): Remove once we are out of the non-breaking window (see 8d21ffda60)
41-
@JvmStatic
42-
public fun setWindowDisplayMetrics(displayMetrics: DisplayMetrics?) {
43-
windowDisplayMetrics = displayMetrics
44-
}
45-
4629
/** Screen metrics returns the metrics of the default screen on the device. */
4730
@JvmStatic
4831
public fun getScreenDisplayMetrics(): DisplayMetrics {
@@ -64,11 +47,10 @@ public object DisplayMetricsHolder {
6447
}
6548

6649
@JvmStatic
67-
@SuppressLint("DeprecatedMethod") // for Andriod Lint
50+
@SuppressLint("DeprecatedMethod") // for Android Lint
6851
@Suppress("DEPRECATION") // for Kotlin compiler
6952
public fun initDisplayMetrics(context: Context) {
7053
val displayMetrics = context.resources.displayMetrics
71-
windowDisplayMetrics = displayMetrics
7254
val screenDisplayMetrics = DisplayMetrics()
7355
screenDisplayMetrics.setTo(displayMetrics)
7456
try {
@@ -86,36 +68,6 @@ public object DisplayMetricsHolder {
8668
DisplayMetricsHolder.screenDisplayMetrics = screenDisplayMetrics
8769
}
8870

89-
// TODO(0.87): Remove once we are out of the non-breaking window (see 8d21ffda60)
90-
@JvmStatic
91-
public fun getDisplayMetricsWritableMap(fontScale: Double): WritableMap {
92-
checkNotNull(windowDisplayMetrics) { INITIALIZATION_MISSING_MESSAGE }
93-
checkNotNull(screenDisplayMetrics) { INITIALIZATION_MISSING_MESSAGE }
94-
95-
return WritableNativeMap().apply {
96-
putMap(
97-
"windowPhysicalPixels",
98-
getPhysicalPixelsWritableMap(windowDisplayMetrics as DisplayMetrics, fontScale),
99-
)
100-
putMap(
101-
"screenPhysicalPixels",
102-
getPhysicalPixelsWritableMap(screenDisplayMetrics as DisplayMetrics, fontScale),
103-
)
104-
}
105-
}
106-
107-
private fun getPhysicalPixelsWritableMap(
108-
displayMetrics: DisplayMetrics,
109-
fontScale: Double,
110-
): WritableMap =
111-
WritableNativeMap().apply {
112-
putInt("width", displayMetrics.widthPixels)
113-
putInt("height", displayMetrics.heightPixels)
114-
putDouble("scale", displayMetrics.density.toDouble())
115-
putDouble("fontScale", fontScale)
116-
putDouble("densityDpi", displayMetrics.densityDpi.toDouble())
117-
}
118-
11971
internal fun getStatusBarHeightPx(activity: Activity?): Int {
12072
val windowInsets = activity?.window?.decorView?.let(ViewCompat::getRootWindowInsets) ?: return 0
12173
return windowInsets

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1333,7 +1333,7 @@ internal object TextLayoutManager {
13331333
return FontMetricsUtil.getFontMetrics(
13341334
layout.text,
13351335
layout,
1336-
DisplayMetricsHolder.getWindowDisplayMetrics(),
1336+
DisplayMetricsHolder.getScreenDisplayMetrics(),
13371337
)
13381338
}
13391339

packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/DisplayMetricsHolderTest.kt

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import android.view.View
1717
import android.view.Window
1818
import android.view.WindowInsets
1919
import androidx.annotation.RequiresApi
20-
import com.facebook.react.bridge.WritableMap
2120
import com.facebook.testutils.shadows.ShadowNativeLoader
2221
import com.facebook.testutils.shadows.ShadowNativeMap
2322
import com.facebook.testutils.shadows.ShadowReadableNativeMap
@@ -55,33 +54,19 @@ class DisplayMetricsHolderTest {
5554
fun setUp() {
5655
context = RuntimeEnvironment.getApplication()
5756
displayMetrics = context.resources.displayMetrics
58-
DisplayMetricsHolder.setWindowDisplayMetrics(null)
5957
DisplayMetricsHolder.setScreenDisplayMetrics(null)
6058
}
6159

6260
@After
6361
fun tearDown() {
64-
DisplayMetricsHolder.setWindowDisplayMetrics(null)
6562
DisplayMetricsHolder.setScreenDisplayMetrics(null)
6663
}
6764

68-
@Test(expected = IllegalStateException::class)
69-
fun getWindowDisplayMetrics_failsIfDisplayMetricsIsNotInitialized() {
70-
DisplayMetricsHolder.getWindowDisplayMetrics()
71-
}
72-
7365
@Test(expected = IllegalStateException::class)
7466
fun getScreenDisplayMetrics_failsIfDisplayMetricsIsNotInitialized() {
7567
DisplayMetricsHolder.getScreenDisplayMetrics()
7668
}
7769

78-
@Test
79-
fun setAndGetWindowDisplayMetrics_returnsSetValue() {
80-
DisplayMetricsHolder.setWindowDisplayMetrics(displayMetrics)
81-
val result = DisplayMetricsHolder.getWindowDisplayMetrics()
82-
assertThat(result).isEqualTo(displayMetrics)
83-
}
84-
8570
@Test
8671
fun setAndGetScreenDisplayMetrics_returnsSetValue() {
8772
DisplayMetricsHolder.setScreenDisplayMetrics(displayMetrics)
@@ -92,46 +77,19 @@ class DisplayMetricsHolderTest {
9277
@Test
9378
fun initDisplayMetrics_setsMetrics() {
9479
DisplayMetricsHolder.initDisplayMetrics(context)
95-
assertThat(DisplayMetricsHolder.getWindowDisplayMetrics()).isNotNull()
9680
assertThat(DisplayMetricsHolder.getScreenDisplayMetrics()).isNotNull()
9781
}
9882

9983
@Test
10084
fun initDisplayMetricsIfNotInitialized_onlyInitializesOnce() {
10185
DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(context)
102-
val firstWindow = DisplayMetricsHolder.getWindowDisplayMetrics()
10386
val firstScreen = DisplayMetricsHolder.getScreenDisplayMetrics()
10487
// Should not reinitialize
10588
DisplayMetricsHolder.initDisplayMetricsIfNotInitialized(context)
106-
val secondWindow = DisplayMetricsHolder.getWindowDisplayMetrics()
10789
val secondScreen = DisplayMetricsHolder.getScreenDisplayMetrics()
108-
assertThat(secondWindow).isEqualTo(firstWindow)
10990
assertThat(secondScreen).isEqualTo(firstScreen)
11091
}
11192

112-
@Test(expected = IllegalStateException::class)
113-
fun getDisplayMetricsWritableMap_failsIfNotInitialized() {
114-
DisplayMetricsHolder.getDisplayMetricsWritableMap(1.0)
115-
}
116-
117-
@Test
118-
fun getDisplayMetricsWritableMap_returnsCorrectMap() {
119-
// Use the official initialization method to ensure both metrics are set
120-
DisplayMetricsHolder.initDisplayMetrics(context)
121-
val map: WritableMap = DisplayMetricsHolder.getDisplayMetricsWritableMap(1.0)
122-
assertThat(map.hasKey("windowPhysicalPixels")).isTrue()
123-
assertThat(map.hasKey("screenPhysicalPixels")).isTrue()
124-
val windowMap = map.getMap("windowPhysicalPixels")
125-
val screenMap = map.getMap("screenPhysicalPixels")
126-
checkNotNull(windowMap)
127-
checkNotNull(screenMap)
128-
assertThat(windowMap.hasKey("width")).isTrue()
129-
assertThat(windowMap.hasKey("height")).isTrue()
130-
assertThat(windowMap.hasKey("scale")).isTrue()
131-
assertThat(windowMap.hasKey("fontScale")).isTrue()
132-
assertThat(windowMap.hasKey("densityDpi")).isTrue()
133-
}
134-
13593
@Test
13694
@RequiresApi(30)
13795
fun getEncodedScreenSizeWithoutVerticalInsets_returnsEncodedValue() {
@@ -204,7 +162,6 @@ class DisplayMetricsHolderTest {
204162
DisplayMetricsHolder.initDisplayMetrics(mockContext)
205163

206164
// Metrics should still be set from resource display metrics
207-
assertThat(DisplayMetricsHolder.getWindowDisplayMetrics()).isNotNull()
208165
assertThat(DisplayMetricsHolder.getScreenDisplayMetrics()).isNotNull()
209166
}
210167
}

packages/react-native/ReactAndroid/src/test/java/com/facebook/react/uimanager/PixelUtilTest.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,11 @@ class PixelUtilTest {
3737
@Before
3838
fun setUp() {
3939
context = RuntimeEnvironment.getApplication()
40-
DisplayMetricsHolder.setWindowDisplayMetrics(null)
4140
DisplayMetricsHolder.setScreenDisplayMetrics(null)
4241
}
4342

4443
@After
4544
fun tearDown() {
46-
DisplayMetricsHolder.setWindowDisplayMetrics(null)
4745
DisplayMetricsHolder.setScreenDisplayMetrics(null)
4846
}
4947

@@ -57,7 +55,6 @@ class PixelUtilTest {
5755
displayMetrics.heightPixels = 1920
5856
displayMetrics.densityDpi = DisplayMetrics.DENSITY_XXHIGH
5957

60-
DisplayMetricsHolder.setWindowDisplayMetrics(displayMetrics)
6158
DisplayMetricsHolder.setScreenDisplayMetrics(displayMetrics)
6259

6360
// Test that toPixelFromSP respects fontScale < 1.0
@@ -80,7 +77,6 @@ class PixelUtilTest {
8077
displayMetrics.heightPixels = 1920
8178
displayMetrics.densityDpi = DisplayMetrics.DENSITY_XXHIGH
8279

83-
DisplayMetricsHolder.setWindowDisplayMetrics(displayMetrics)
8480
DisplayMetricsHolder.setScreenDisplayMetrics(displayMetrics)
8581

8682
// Test that toPixelFromSP respects fontScale > 1.0
@@ -103,7 +99,6 @@ class PixelUtilTest {
10399
displayMetrics.heightPixels = 1920
104100
displayMetrics.densityDpi = DisplayMetrics.DENSITY_XXHIGH
105101

106-
DisplayMetricsHolder.setWindowDisplayMetrics(displayMetrics)
107102
DisplayMetricsHolder.setScreenDisplayMetrics(displayMetrics)
108103

109104
// Test that maxFontScale limits the scaling
@@ -128,7 +123,6 @@ class PixelUtilTest {
128123
displayMetrics.heightPixels = 1920
129124
displayMetrics.densityDpi = DisplayMetrics.DENSITY_XXHIGH
130125

131-
DisplayMetricsHolder.setWindowDisplayMetrics(displayMetrics)
132126
DisplayMetricsHolder.setScreenDisplayMetrics(displayMetrics)
133127

134128
// Test that maxFontScale doesn't prevent scaling down

0 commit comments

Comments
 (0)