From 73e3db8fe01309a647a43fe784d026cc17c9d297 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Mon, 19 Aug 2019 12:53:24 -0700 Subject: [PATCH] For #4804: Resolves issue with crash reporter stack --- .../java/org/mozilla/fenix/HomeActivity.kt | 21 +++++++------------ .../fenix/crashes/CrashReporterFragment.kt | 9 +++++--- app/src/main/res/navigation/nav_graph.xml | 3 ++- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 4b2cfaa7f..f818cc47e 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -122,8 +122,14 @@ open class HomeActivity : AppCompatActivity(), ShareFragment.TabsSharedCallback override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) - handleCrashIfNecessary(intent) - handleOpenedFromExternalSourceIfNecessary(intent) + + intent?.let { + if (Crash.isCrashIntent(it)) { + openToCrashReporter(it) + } else { + handleOpenedFromExternalSourceIfNecessary(it) + } + } } override fun onResume() { @@ -164,17 +170,6 @@ open class HomeActivity : AppCompatActivity(), ShareFragment.TabsSharedCallback super.onBackPressed() } - private fun handleCrashIfNecessary(intent: Intent?) { - if (intent == null) { - return - } - if (!Crash.isCrashIntent(intent)) { - return - } - - openToCrashReporter(intent) - } - private fun openToCrashReporter(intent: Intent) { val directions = NavGraphDirections.actionGlobalCrashReporter(intent) navHost.navController.navigate(directions) diff --git a/app/src/main/java/org/mozilla/fenix/crashes/CrashReporterFragment.kt b/app/src/main/java/org/mozilla/fenix/crashes/CrashReporterFragment.kt index cc5c79b92..eadf94df5 100644 --- a/app/src/main/java/org/mozilla/fenix/crashes/CrashReporterFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/crashes/CrashReporterFragment.kt @@ -11,12 +11,14 @@ import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.navigation.Navigation +import androidx.navigation.fragment.findNavController import kotlinx.android.synthetic.main.fragment_crash_reporter.* import mozilla.components.browser.session.Session import mozilla.components.lib.crash.Crash import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components +import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.utils.Settings @@ -61,7 +63,7 @@ class CrashReporterFragment : Fragment() { } else { requireComponents.useCases.tabsUseCases.removeTab.invoke(session) requireComponents.useCases.sessionUseCases.crashRecovery.invoke() - navigateHome(view!!) + navigateHome() } } @@ -74,7 +76,8 @@ class CrashReporterFragment : Fragment() { requireContext().components.analytics.metrics.track(Event.CrashReporterClosed(didSubmitCrashReport)) } - private fun navigateHome(fromView: View) { - Navigation.findNavController(fromView).popBackStack(R.id.browserFragment, true) + private fun navigateHome() { + val directions = CrashReporterFragmentDirections.actionCrashReporterFragmentToHomeFragment() + findNavController().nav(R.id.crashReporterFragment, directions) } } diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index ab5092ae9..2be36c775 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -369,7 +369,8 @@ android:label="CrashReporterFragment"> + app:destination="@id/homeFragment" + app:popUpTo="@id/nav_graph"/>