diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2023-02-23 17:58:54 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-02-23 17:58:54 +0000 |
commit | 0bb189a661559511cfcd6ff5e72b1450130dd75b (patch) | |
tree | a5e586251ef6d0987348b7f95a26412c5e0bc3e9 | |
parent | 213a4d23832062287b9c9373c4ae6400066e3952 (diff) | |
parent | 71ed18795127c8015cddf0ac4426dddacacfe762 (diff) | |
download | support-0bb189a661559511cfcd6ff5e72b1450130dd75b.tar.gz |
Merge "Fixes setSystemGestureExclusionRects registration" into androidx-main
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() |