* 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")
|
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 mozilla.components.support.ktx.kotlin.isUrl
|
||||||
import org.mozilla.fenix.BrowserDirection
|
import org.mozilla.fenix.BrowserDirection
|
||||||
import org.mozilla.fenix.HomeActivity
|
import org.mozilla.fenix.HomeActivity
|
||||||
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
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.ACTION
|
||||||
import org.mozilla.fenix.components.metrics.Event.PerformedSearch.SearchAccessPoint.NONE
|
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.components.searchengine.CustomSearchEngineStore
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
import org.mozilla.fenix.ext.metrics
|
import org.mozilla.fenix.ext.metrics
|
||||||
|
import org.mozilla.fenix.ext.navigateSafe
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -159,7 +161,7 @@ class DefaultSearchController(
|
||||||
|
|
||||||
override fun handleClickSearchEngineSettings() {
|
override fun handleClickSearchEngineSettings() {
|
||||||
val directions = SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment()
|
val directions = SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment()
|
||||||
navController.navigate(directions)
|
navController.navigateSafe(R.id.searchFragment, directions)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleExistingSessionSelected(session: Session) {
|
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.components.metrics.MetricController
|
||||||
import org.mozilla.fenix.ext.components
|
import org.mozilla.fenix.ext.components
|
||||||
import org.mozilla.fenix.ext.metrics
|
import org.mozilla.fenix.ext.metrics
|
||||||
|
import org.mozilla.fenix.ext.navigateSafe
|
||||||
import org.mozilla.fenix.ext.searchEngineManager
|
import org.mozilla.fenix.ext.searchEngineManager
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
import org.mozilla.fenix.search.DefaultSearchController.Companion.KEYBOARD_ANIMATION_DELAY
|
import org.mozilla.fenix.search.DefaultSearchController.Companion.KEYBOARD_ANIMATION_DELAY
|
||||||
|
@ -242,7 +243,7 @@ class DefaultSearchControllerTest {
|
||||||
|
|
||||||
controller.handleClickSearchEngineSettings()
|
controller.handleClickSearchEngineSettings()
|
||||||
|
|
||||||
verify { navController.navigate(directions) }
|
verify { navController.navigateSafe(R.id.searchEngineFragment, directions) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -26,10 +26,12 @@ import org.junit.runner.RunWith
|
||||||
import org.mozilla.fenix.BrowserDirection
|
import org.mozilla.fenix.BrowserDirection
|
||||||
import org.mozilla.fenix.FenixApplication
|
import org.mozilla.fenix.FenixApplication
|
||||||
import org.mozilla.fenix.HomeActivity
|
import org.mozilla.fenix.HomeActivity
|
||||||
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.TestApplication
|
import org.mozilla.fenix.TestApplication
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
import org.mozilla.fenix.components.metrics.Event
|
||||||
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES
|
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES
|
||||||
import org.mozilla.fenix.ext.metrics
|
import org.mozilla.fenix.ext.metrics
|
||||||
|
import org.mozilla.fenix.ext.navigateSafe
|
||||||
import org.mozilla.fenix.ext.searchEngineManager
|
import org.mozilla.fenix.ext.searchEngineManager
|
||||||
import org.mozilla.fenix.ext.settings
|
import org.mozilla.fenix.ext.settings
|
||||||
import org.mozilla.fenix.utils.Settings
|
import org.mozilla.fenix.utils.Settings
|
||||||
|
@ -271,6 +273,7 @@ class SearchInteractorTest {
|
||||||
val store: SearchFragmentStore = mockk()
|
val store: SearchFragmentStore = mockk()
|
||||||
|
|
||||||
every { store.state } returns mockk(relaxed = true)
|
every { store.state } returns mockk(relaxed = true)
|
||||||
|
every { navController.currentDestination?.id } returns R.id.searchFragment
|
||||||
|
|
||||||
val searchController: SearchController = DefaultSearchController(
|
val searchController: SearchController = DefaultSearchController(
|
||||||
mockk(),
|
mockk(),
|
||||||
|
@ -286,7 +289,10 @@ class SearchInteractorTest {
|
||||||
interactor.onClickSearchEngineSettings()
|
interactor.onClickSearchEngineSettings()
|
||||||
|
|
||||||
verify {
|
verify {
|
||||||
navController.navigate(SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment())
|
navController.navigateSafe(
|
||||||
|
R.id.searchFragment,
|
||||||
|
SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue