Bug 1850316 - Use alternative ways to get backQueue elements.

backQueue is now private in NavController.
fenix/124.1.0
mcarare 10 months ago committed by mergify[bot]
parent 40c37e67ef
commit 764786b015

@ -68,7 +68,7 @@ fun NavController.navigateWithBreadcrumb(
*/
@SuppressLint("RestrictedApi")
fun NavController.hasTopDestination(fragmentClassName: String): Boolean {
return this.backQueue.lastOrNull()?.destination?.displayName?.contains(
return this.currentBackStackEntry?.destination?.displayName?.contains(
fragmentClassName,
true,
) == true

@ -959,7 +959,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
internal fun getPreviousDestination(): NavBackStackEntry? {
// This duplicates the platform functionality for "previousBackStackEntry" but additionally skips this entry.
val descendingEntries = findNavController().backQueue.reversed().iterator()
val descendingEntries = findNavController().currentBackStack.value.reversed().iterator()
// Throw the topmost destination away.
if (descendingEntries.hasNext()) {
descendingEntries.next()

@ -50,14 +50,14 @@ internal class SearchDialogFragmentTest {
@Test
fun `GIVEN this is the only visible fragment WHEN asking for the previous destination THEN return null`() {
every { navController.backQueue } returns ArrayDeque(listOf(getDestination(fragmentName)))
every { navController.currentBackStack.value } returns ArrayDeque(listOf(getDestination(fragmentName)))
assertNull(fragment.getPreviousDestination())
}
@Test
fun `GIVEN this and FragmentB on top of this are visible WHEN asking for the previous destination THEN return null`() {
every { navController.backQueue } returns ArrayDeque(
every { navController.currentBackStack.value } returns ArrayDeque(
listOf(
getDestination(fragmentName),
getDestination("FragmentB"),
@ -70,7 +70,7 @@ internal class SearchDialogFragmentTest {
@Test
fun `GIVEN FragmentA, this and FragmentB are visible WHEN asking for the previous destination THEN return FragmentA`() {
val fragmentADestination = getDestination("FragmentA")
every { navController.backQueue } returns ArrayDeque(
every { navController.currentBackStack.value } returns ArrayDeque(
listOf(
fragmentADestination,
getDestination(fragmentName),
@ -84,7 +84,7 @@ internal class SearchDialogFragmentTest {
@Test
fun `GIVEN FragmentA and this on top of it are visible WHEN asking for the previous destination THEN return FragmentA`() {
val fragmentADestination = getDestination("FragmentA")
every { navController.backQueue } returns ArrayDeque(
every { navController.currentBackStack.value } returns ArrayDeque(
listOf(
fragmentADestination,
getDestination(fragmentName),

Loading…
Cancel
Save