From cbf04e3fb8e5c10d672c2a912e7200bb383de248 Mon Sep 17 00:00:00 2001 From: ekager Date: Wed, 9 Dec 2020 14:38:37 -0800 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/16807 - Make sure there's only one instance of search dialog --- .../home/intent/StartSearchIntentProcessor.kt | 21 ++++++++++++------- app/src/main/res/navigation/nav_graph.xml | 11 +++++----- .../intent/StartSearchIntentProcessorTest.kt | 11 ++++++++-- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/intent/StartSearchIntentProcessor.kt b/app/src/main/java/org/mozilla/fenix/home/intent/StartSearchIntentProcessor.kt index e6f079c8b..2cf18554c 100644 --- a/app/src/main/java/org/mozilla/fenix/home/intent/StartSearchIntentProcessor.kt +++ b/app/src/main/java/org/mozilla/fenix/home/intent/StartSearchIntentProcessor.kt @@ -6,8 +6,10 @@ package org.mozilla.fenix.home.intent import android.content.Intent import androidx.navigation.NavController +import androidx.navigation.navOptions import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.NavGraphDirections +import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.ext.nav @@ -22,25 +24,25 @@ class StartSearchIntentProcessor( override fun process(intent: Intent, navController: NavController, out: Intent): Boolean { val event = intent.extras?.getString(HomeActivity.OPEN_TO_SEARCH) - var source: Event.PerformedSearch.SearchAccessPoint? = null return if (event != null) { - when (event) { + val source = when (event) { SEARCH_WIDGET -> { metrics.track(Event.SearchWidgetNewTabPressed) - source = Event.PerformedSearch.SearchAccessPoint.WIDGET + Event.PerformedSearch.SearchAccessPoint.WIDGET } STATIC_SHORTCUT_NEW_TAB -> { metrics.track(Event.PrivateBrowsingStaticShortcutTab) - source = Event.PerformedSearch.SearchAccessPoint.SHORTCUT + Event.PerformedSearch.SearchAccessPoint.SHORTCUT } STATIC_SHORTCUT_NEW_PRIVATE_TAB -> { metrics.track(Event.PrivateBrowsingStaticShortcutPrivateTab) - source = Event.PerformedSearch.SearchAccessPoint.SHORTCUT + Event.PerformedSearch.SearchAccessPoint.SHORTCUT } PRIVATE_BROWSING_PINNED_SHORTCUT -> { metrics.track(Event.PrivateBrowsingPinnedShortcutPrivateTab) - source = Event.PerformedSearch.SearchAccessPoint.SHORTCUT + Event.PerformedSearch.SearchAccessPoint.SHORTCUT } + else -> null } out.removeExtra(HomeActivity.OPEN_TO_SEARCH) @@ -51,7 +53,12 @@ class StartSearchIntentProcessor( searchAccessPoint = it ) } - directions?.let { navController.nav(null, it) } + directions?.let { + val options = navOptions { + popUpTo = R.id.homeFragment + } + navController.nav(null, it, options) + } true } else { false diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index b58f35ec1..e24b2ddfb 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -25,7 +25,9 @@ + app:destination="@id/searchDialogFragment" + app:popUpTo="@id/searchDialogFragment" + app:popUpToInclusive="true"/> + app:destination="@id/tabTrayDialogFragment" + app:popUpTo="@id/tabTrayDialogFragment" + app:popUpToInclusive="true"/> @@ -204,9 +208,6 @@ -