@@ -25,6 +25,7 @@ import androidx.test.espresso.device.context.ActionContext
2525import androidx.test.espresso.device.controller.DeviceControllerOperationException
2626import androidx.test.espresso.device.sizeclass.HeightSizeClass
2727import androidx.test.espresso.device.sizeclass.WidthSizeClass
28+ import androidx.test.espresso.device.util.calculateCurrentDisplayWidthAndHeightPx
2829import androidx.test.espresso.device.util.executeShellCommand
2930import androidx.test.espresso.device.util.getDeviceApiLevel
3031import androidx.test.espresso.device.util.getResumedActivityOrNull
@@ -48,7 +49,7 @@ internal class DisplaySizeAction(
4849
4950 val currentActivity = getResumedActivityOrNull()
5051 if (currentActivity != null ) {
51- val displaySize = calculateCurrentDisplay (currentActivity)
52+ val displaySize = calculateCurrentDisplayWidthAndHeightDp (currentActivity)
5253 val startingWidth = displaySize.first
5354 val startingHeight = displaySize.second
5455 if (
@@ -61,35 +62,32 @@ internal class DisplaySizeAction(
6162
6263 val latch: CountDownLatch = CountDownLatch (1 )
6364
64- val currentActivityView: View = object : View (currentActivity) {
65- override fun onConfigurationChanged (newConfig : Configuration ? ) {
66- super .onConfigurationChanged(newConfig)
67- val currentDisplaySize = calculateCurrentDisplay(currentActivity)
68- if (
69- WidthSizeClass .compute(currentDisplaySize.first) == widthDisplaySize &&
70- HeightSizeClass .compute(currentDisplaySize.second) == heightDisplaySize
71- ) {
72- latch.countDown()
65+ val currentActivityView: View =
66+ object : View (currentActivity) {
67+ override fun onConfigurationChanged (newConfig : Configuration ? ) {
68+ super .onConfigurationChanged(newConfig)
69+ val currentDisplaySize = calculateCurrentDisplayWidthAndHeightDp(currentActivity)
70+ if (
71+ WidthSizeClass .compute(currentDisplaySize.first) == widthDisplaySize &&
72+ HeightSizeClass .compute(currentDisplaySize.second) == heightDisplaySize
73+ ) {
74+ latch.countDown()
75+ }
7376 }
7477 }
75- }
7678 val container: ViewGroup =
77- currentActivity.getWindow().findViewById(android.R .id.content) as ViewGroup
78- currentActivity.runOnUiThread {
79- container.addView(currentActivityView)
80- }
79+ currentActivity.getWindow().findViewById(android.R .id.content) as ViewGroup
80+ currentActivity.runOnUiThread { container.addView(currentActivityView) }
8181
8282 val widthDp = WidthSizeClass .getWidthDpInSizeClass(widthDisplaySize)
8383 val heightDp = HeightSizeClass .getHeightDpInSizeClass(heightDisplaySize)
8484
8585 executeShellCommand(" wm size ${widthDp} dpx${heightDp} dp" )
8686
8787 latch.await(5 , TimeUnit .SECONDS )
88- currentActivity.runOnUiThread {
89- container.removeView(currentActivityView)
90- }
88+ currentActivity.runOnUiThread { container.removeView(currentActivityView) }
9189
92- val finalSize = calculateCurrentDisplay (currentActivity)
90+ val finalSize = calculateCurrentDisplayWidthAndHeightDp (currentActivity)
9391 if (
9492 WidthSizeClass .compute(finalSize.first) != widthDisplaySize ||
9593 HeightSizeClass .compute(finalSize.second) != heightDisplaySize
@@ -108,20 +106,10 @@ internal class DisplaySizeAction(
108106 }
109107 }
110108
111- private fun calculateCurrentDisplay (activity : Activity ): Pair <Int , Int > {
112- // "wm size" will output a string with the format
113- // "Physical size: WxH
114- // Override size: WxH"
115- val output = executeShellCommand(" wm size" )
116-
117- val subStringToFind = " Override size: "
118- val displaySizes =
119- output.substring(output.indexOf(subStringToFind) + subStringToFind.length).trim().split(" x" )
120- val widthPx = displaySizes.get(0 ).toInt()
121- val heightPx = displaySizes.get(1 ).toInt()
122-
123- val widthDp = (widthPx / activity.getResources().displayMetrics.density).roundToInt()
124- val heightDp = (heightPx / activity.getResources().displayMetrics.density).roundToInt()
109+ private fun calculateCurrentDisplayWidthAndHeightDp (activity : Activity ): Pair <Int , Int > {
110+ val displayPx = calculateCurrentDisplayWidthAndHeightPx()
111+ val widthDp = (displayPx.first / activity.getResources().displayMetrics.density).roundToInt()
112+ val heightDp = (displayPx.second / activity.getResources().displayMetrics.density).roundToInt()
125113 return Pair (widthDp, heightDp)
126114 }
127115
0 commit comments