diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2021-03-29 15:45:29 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-03-29 15:45:29 +0000 |
commit | cf5f004872bc7b25c5ba06b20e26b765e7d0d7be (patch) | |
tree | db855aa6d2df3ad7537163f0de1cb2eaaf91c5d2 | |
parent | a22320bafacfdedea0d3f2ad3bab483fee2b9256 (diff) | |
parent | 913984659f00b0ade11f91df286de73303c6a9e8 (diff) | |
download | support-cf5f004872bc7b25c5ba06b20e26b765e7d0d7be.tar.gz |
Merge "resolve Coastguard cherrypick merge conflict for change: 1653250" into snap-temp-L69700000846466201
-rw-r--r-- | navigation/navigation-runtime/build.gradle | 1 | ||||
-rw-r--r-- | navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt | 31 |
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() |