aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2023-02-23 17:58:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-02-23 17:58:54 +0000
commit0bb189a661559511cfcd6ff5e72b1450130dd75b (patch)
treea5e586251ef6d0987348b7f95a26412c5e0bc3e9
parent213a4d23832062287b9c9373c4ae6400066e3952 (diff)
parent71ed18795127c8015cddf0ac4426dddacacfe762 (diff)
downloadsupport-0bb189a661559511cfcd6ff5e72b1450130dd75b.tar.gz
Merge "Fixes setSystemGestureExclusionRects registration" into androidx-main
-rw-r--r--testutils/testutils-espresso/src/main/java/androidx/testutils/SwipeExclusionRects.kt10
-rw-r--r--viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt2
-rw-r--r--viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt4
3 files changed, 12 insertions, 4 deletions
diff --git a/testutils/testutils-espresso/src/main/java/androidx/testutils/SwipeExclusionRects.kt b/testutils/testutils-espresso/src/main/java/androidx/testutils/SwipeExclusionRects.kt
index e3c9b5e0dda..d6f36cc5edc 100644
--- a/testutils/testutils-espresso/src/main/java/androidx/testutils/SwipeExclusionRects.kt
+++ b/testutils/testutils-espresso/src/main/java/androidx/testutils/SwipeExclusionRects.kt
@@ -19,6 +19,7 @@ package androidx.testutils
import android.graphics.Rect
import android.view.View
import androidx.core.view.ViewCompat
+import androidx.test.internal.runner.junit4.statement.UiThreadStatement
/**
* Sets exclusion rects for system gestures on this view that will make sure Espresso's
@@ -26,9 +27,16 @@ import androidx.core.view.ViewCompat
* won't be mistaken for system gestures.
*
* Set this on the view on which you will perform the swipe ViewActions.
+ *
+ * @param requestLayout requests a layout; exclusion rects don't take effect until the widget goes
+ * through a layout phase, and if the test scenario doesn't result in a layout phase (e.g.
+ * the method is called after the layout phase already happened), setting [requestLayout] to `true`
+ * allows for the exclusions to be registered correctly)
+ * @see ViewCompat#setSystemGestureExclusionRects
*/
-fun View.setSystemExclusionRectsForEspressoSwipes() {
+fun View.setSystemExclusionRectsForEspressoSwipes(requestLayout: Boolean) {
addOnLayoutChangeListener(SetExclusionRectsOnLayout())
+ if (requestLayout) UiThreadStatement.runOnUiThread { requestLayout() }
}
private class SetExclusionRectsOnLayout : View.OnLayoutChangeListener {
diff --git a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt
index 3ac083fe59c..04b90438b35 100644
--- a/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt
+++ b/viewpager2/integration-tests/testapp/src/androidTest/java/androidx/viewpager2/integration/testapp/test/BaseTest.kt
@@ -72,7 +72,7 @@ abstract class BaseTest<T : FragmentActivity>(clazz: Class<T>) {
@Before
open fun setUp() {
viewPager = activityTestRule.activity.findViewById(layoutId)
- viewPager.setSystemExclusionRectsForEspressoSwipes()
+ viewPager.setSystemExclusionRectsForEspressoSwipes(requestLayout = true)
idleWatcher = ViewPagerIdleWatcher(viewPager)
onView(withId(layoutId)).perform(waitForInjectMotionEvents())
}
diff --git a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt
index a81994ef842..1075f45238e 100644
--- a/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt
+++ b/viewpager2/viewpager2/src/androidTest/java/androidx/viewpager2/widget/BaseTest.kt
@@ -121,7 +121,7 @@ open class BaseTest {
val viewPager: ViewPager2 = activityTestRule.activity.findViewById(R.id.view_pager)
activityTestRule.runOnUiThread {
viewPager.orientation = orientation
- viewPager.setSystemExclusionRectsForEspressoSwipes()
+ viewPager.setSystemExclusionRectsForEspressoSwipes(requestLayout = true)
}
onView(withId(R.id.view_pager)).check(matches(isDisplayed()))
@@ -148,7 +148,7 @@ open class BaseTest {
viewPager.orientation = orientation
viewPager.isUserInputEnabled = isUserInputEnabled
viewPager.adapter = adapterProvider(activity)
- viewPager.setSystemExclusionRectsForEspressoSwipes()
+ viewPager.setSystemExclusionRectsForEspressoSwipes(requestLayout = false)
onCreateCallback(viewPager)
}
activity = activityTestRule.recreate()