From 2f3d38b51f5c3fb9ebdac6394231a45871385c1a Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Mon, 8 Apr 2019 08:04:22 -0700 Subject: [PATCH] For #1002 and #1222: Adds ability to restore crashed tabs (#1433) --- CHANGELOG.md | 9 ++-- .../fenix/crashes/CrashReporterFragment.kt | 47 ++++++++++++------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1b956c9d..b8cd690ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added - #916 - Added the ability to save and delete bookmarks -- #356 - Adds the ability to delete history +- #356 - Added the ability to delete history - #208 - Added normal browsing dark mode (advised to use attrs from now on for most referenced colors) -- #957 - Adds telemetry for the context menu -- #1036 - Adds telemetry for Find in Page -- #1049 - Add style for progress bar with gradient drawable +- #957 - Added telemetry for the context menu +- #1036 - Added telemetry for Find in Page +- #1049 - Added style for progress bar with gradient drawable - #1165 - Added doorhanger to the toolbar +- #1002 - Added ability to restore tab after crash - #1195 - Adds telemetry for quick action sheet - #627 - Sets engine preferred color scheme based on light/dark theme - #904 - Added tab counter in browser toolbar 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 27898be80..4965bf8b0 100644 --- a/app/src/main/java/org/mozilla/fenix/crashes/CrashReporterFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/crashes/CrashReporterFragment.kt @@ -13,6 +13,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.navigation.Navigation 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 @@ -36,19 +37,14 @@ class CrashReporterFragment : Fragment() { requireContext().components.analytics.metrics.track(Event.CrashReporterOpened) + val selectedSession = requireComponents.core.sessionManager.selectedSession + + restore_tab_button.setOnClickListener { + selectedSession?.let { session -> closeFragment(true, session, crash) } + } + close_tab_button.setOnClickListener { - val selectedSession = requireComponents.core.sessionManager.selectedSession - - selectedSession?.let { session -> requireComponents.useCases.tabsUseCases.removeTab.invoke(session) } - - var wantsSubmitCrashReport = false - if (Settings.getInstance(context!!).isCrashReportingEnabled) { - requireComponents.analytics.crashReporter.submitReport(crash) - wantsSubmitCrashReport = true - } - - requireContext().components.analytics.metrics.track(Event.CrashReporterClosed(wantsSubmitCrashReport)) - navigateHome(view) + selectedSession?.let { session -> closeFragment(false, session, crash) } } } @@ -57,12 +53,29 @@ class CrashReporterFragment : Fragment() { (activity as AppCompatActivity).supportActionBar?.hide() } - fun navigateHome(fromView: View) { + private fun closeFragment(shouldRestore: Boolean, session: Session, crash: Crash) { + submitReportIfNecessary(crash) + + if (shouldRestore) { + requireComponents.useCases.sessionUseCases.crashRecovery.invoke(session) + Navigation.findNavController(view!!).popBackStack() + } else { + requireComponents.useCases.tabsUseCases.removeTab.invoke(session) + navigateHome(view!!) + } + } + + private fun submitReportIfNecessary(crash: Crash) { + var didSubmitCrashReport = false + if (Settings.getInstance(context!!).isCrashReportingEnabled) { + requireComponents.analytics.crashReporter.submitReport(crash) + didSubmitCrashReport = true + } + requireContext().components.analytics.metrics.track(Event.CrashReporterClosed(didSubmitCrashReport)) + } + + private fun navigateHome(fromView: View) { val directions = CrashReporterFragmentDirections.actionCrashReporterFragmentToHomeFragment() Navigation.findNavController(fromView).navigate(directions) } - - fun onBackPressed() { - requireContext().components.analytics.metrics.track(Event.CrashReporterClosed(false)) - } }