aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2021-03-29 15:45:29 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-03-29 15:45:29 +0000
commitcf5f004872bc7b25c5ba06b20e26b765e7d0d7be (patch)
treedb855aa6d2df3ad7537163f0de1cb2eaaf91c5d2
parenta22320bafacfdedea0d3f2ad3bab483fee2b9256 (diff)
parent913984659f00b0ade11f91df286de73303c6a9e8 (diff)
downloadsupport-cf5f004872bc7b25c5ba06b20e26b765e7d0d7be.tar.gz
Merge "resolve Coastguard cherrypick merge conflict for change: 1653250" into snap-temp-L69700000846466201
-rw-r--r--navigation/navigation-runtime/build.gradle1
-rw-r--r--navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt31
2 files changed, 32 insertions, 0 deletions
diff --git a/navigation/navigation-runtime/build.gradle b/navigation/navigation-runtime/build.gradle
index 2c8832b70c7..1fce463a6f4 100644
--- a/navigation/navigation-runtime/build.gradle
+++ b/navigation/navigation-runtime/build.gradle
@@ -34,6 +34,7 @@ dependencies {
api("androidx.savedstate:savedstate:1.0.0")
api("androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0")
+ androidTestImplementation("androidx.activity:activity-ktx:1.1.0")
androidTestImplementation(project(":lifecycle:lifecycle-runtime-testing"))
androidTestImplementation(project(":internal-testutils-navigation"))
androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
diff --git a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
index 1b54accaa87..bdfda88c836 100644
--- a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
+++ b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
@@ -25,6 +25,8 @@ import android.os.Parcel
import android.os.Parcelable
import android.view.View
import androidx.activity.ComponentActivity
+import androidx.activity.OnBackPressedDispatcher
+import androidx.activity.addCallback
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.ViewModelStore
import androidx.lifecycle.testing.TestLifecycleOwner
@@ -1427,6 +1429,35 @@ class NavControllerTest {
verifyNoMoreInteractions(onDestinationChangedListener)
}
+ @UiThreadTest
+ @Test
+ fun testSetOnBackPressedDispatcherOnNavBackStackEntry() {
+ var backPressedIntercepted = false
+ val navController = createNavController()
+ val lifecycleOwner = TestLifecycleOwner()
+ val dispatcher = OnBackPressedDispatcher()
+
+ navController.setLifecycleOwner(lifecycleOwner)
+ navController.setOnBackPressedDispatcher(dispatcher)
+
+ navController.setGraph(R.navigation.nav_simple)
+ navController.navigate(R.id.second_test)
+ assertEquals(R.id.start_test, navController.previousBackStackEntry?.destination?.id ?: 0)
+
+ dispatcher.addCallback(navController.currentBackStackEntry!!) {
+ backPressedIntercepted = true
+ }
+
+ // Move to STOPPED
+ lifecycleOwner.currentState = Lifecycle.State.CREATED
+ // Move back up to RESUMED
+ lifecycleOwner.currentState = Lifecycle.State.RESUMED
+
+ dispatcher.onBackPressed()
+
+ assertThat(backPressedIntercepted).isTrue()
+ }
+
private fun createNavController(): NavController {
val navController = NavController(ApplicationProvider.getApplicationContext())
val navigator = TestNavigator()