commit 329afcb5bcc65fae8c97c1198667b3c9065a6df7 parent 09aa349f363df14656cc29b2bc17582232440e3b Author: Harrison Oglesby <oglesby.harrison@gmail.com> Date: Wed, 22 Oct 2025 17:29:34 +0000 Bug 1995625 - Prevent looped search in Settings Search r=android-reviewers,petru Differential Revision: https://phabricator.services.mozilla.com/D269487 Diffstat:
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -217,7 +217,11 @@ class SettingsFragment : PreferenceFragmentCompat() { val title = nimbusValidation.settingsTitle val suffix = nimbusValidation.settingsPunctuation val toolbarTitle = "$title$suffix" - if (requireContext().settings().isSettingsSearchEnabled) { + + val showSearch = requireContext().settings().isSettingsSearchEnabled && + (!args.searchInProgress) + + if (showSearch) { showToolbarWithIconButton( title = toolbarTitle, iconResId = R.drawable.ic_search, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/settingssearch/SettingsSearchMiddleware.kt @@ -52,8 +52,12 @@ class SettingsSearchMiddleware( } } is SettingsSearchAction.ResultItemClicked -> { - val bundle = bundleOf("preference_to_scroll_to" to action.item.preferenceKey) - val fragmentId = action.item.preferenceFileInformation.fragmentId + val searchItem = action.item + val bundle = bundleOf( + "preference_to_scroll_to" to searchItem.preferenceKey, + "search_in_progress" to true, + ) + val fragmentId = searchItem.preferenceFileInformation.fragmentId CoroutineScope(Dispatchers.Main).launch { dependencies.navController.navigate(fragmentId, bundle) } diff --git a/mobile/android/fenix/app/src/main/res/navigation/nav_graph.xml b/mobile/android/fenix/app/src/main/res/navigation/nav_graph.xml @@ -571,6 +571,10 @@ android:defaultValue="@null" app:argType="string" app:nullable="true" /> + <argument + android:name="search_in_progress" + android:defaultValue="false" + app:argType="boolean" /> <action android:id="@+id/action_settingsFragment_to_settingsSearchFragment" app:destination="@id/settingsSearchFragment"