* For #9336 Check current destination before navigating * For #9336 Update unit test to check for navigateSafemaster
parent
90787cf630
commit
8cd6d7460c
|
@ -59,3 +59,12 @@ fun recordIdException(actual: Int?, expected: Int?) {
|
|||
Sentry.capture("Fragment id $actual did not match expected $expected")
|
||||
}
|
||||
}
|
||||
|
||||
fun NavController.navigateSafe(
|
||||
@IdRes resId: Int,
|
||||
directions: NavDirections
|
||||
) {
|
||||
if (currentDestination?.id == resId) {
|
||||
this.navigate(directions)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import mozilla.components.browser.session.Session
|
|||
import mozilla.components.support.ktx.kotlin.isUrl
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.Event.PerformedSearch.SearchAccessPoint.ACTION
|
||||
import org.mozilla.fenix.components.metrics.Event.PerformedSearch.SearchAccessPoint.NONE
|
||||
|
@ -23,6 +24,7 @@ import org.mozilla.fenix.components.metrics.MetricsUtils
|
|||
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.metrics
|
||||
import org.mozilla.fenix.ext.navigateSafe
|
||||
import org.mozilla.fenix.ext.settings
|
||||
|
||||
/**
|
||||
|
@ -159,7 +161,7 @@ class DefaultSearchController(
|
|||
|
||||
override fun handleClickSearchEngineSettings() {
|
||||
val directions = SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment()
|
||||
navController.navigate(directions)
|
||||
navController.navigateSafe(R.id.searchFragment, directions)
|
||||
}
|
||||
|
||||
override fun handleExistingSessionSelected(session: Session) {
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.mozilla.fenix.components.metrics.Event
|
|||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.metrics
|
||||
import org.mozilla.fenix.ext.navigateSafe
|
||||
import org.mozilla.fenix.ext.searchEngineManager
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.search.DefaultSearchController.Companion.KEYBOARD_ANIMATION_DELAY
|
||||
|
@ -242,7 +243,7 @@ class DefaultSearchControllerTest {
|
|||
|
||||
controller.handleClickSearchEngineSettings()
|
||||
|
||||
verify { navController.navigate(directions) }
|
||||
verify { navController.navigateSafe(R.id.searchEngineFragment, directions) }
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -26,10 +26,12 @@ import org.junit.runner.RunWith
|
|||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.FenixApplication
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.TestApplication
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES
|
||||
import org.mozilla.fenix.ext.metrics
|
||||
import org.mozilla.fenix.ext.navigateSafe
|
||||
import org.mozilla.fenix.ext.searchEngineManager
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
@ -271,6 +273,7 @@ class SearchInteractorTest {
|
|||
val store: SearchFragmentStore = mockk()
|
||||
|
||||
every { store.state } returns mockk(relaxed = true)
|
||||
every { navController.currentDestination?.id } returns R.id.searchFragment
|
||||
|
||||
val searchController: SearchController = DefaultSearchController(
|
||||
mockk(),
|
||||
|
@ -286,7 +289,10 @@ class SearchInteractorTest {
|
|||
interactor.onClickSearchEngineSettings()
|
||||
|
||||
verify {
|
||||
navController.navigate(SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment())
|
||||
navController.navigateSafe(
|
||||
R.id.searchFragment,
|
||||
SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue