Revert "Bug 1837325 - Use alternative ways to get backQueue elements."

This reverts commit 9313f7c23ab029b816616bb37fac337279967827.

(cherry picked from commit 41414288c044fcd879326503e642c43d5ca4f251)
fenix/118.0
t-p-white 9 months ago committed by mergify[bot]
parent db5a6a4ceb
commit 78984f78a8

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

@ -1021,7 +1021,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
internal fun getPreviousDestination(): NavBackStackEntry? {
// This duplicates the platform functionality for "previousBackStackEntry" but additionally skips this entry.
val descendingEntries = findNavController().currentBackStack.value.reversed().iterator()
val descendingEntries = findNavController().backQueue.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.currentBackStack.value } returns ArrayDeque(listOf(getDestination(fragmentName)))
every { navController.backQueue } 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.currentBackStack.value } returns ArrayDeque(
every { navController.backQueue } 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.currentBackStack.value } returns ArrayDeque(
every { navController.backQueue } 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.currentBackStack.value } returns ArrayDeque(
every { navController.backQueue } returns ArrayDeque(
listOf(
fragmentADestination,
getDestination(fragmentName),

Loading…
Cancel
Save