[fenix] Bug 1813596 - Resolve CheckForFormDataException RuntimeException and add Crash Reporting

pull/600/head
Cathy Lu 1 year ago committed by mergify[bot]
parent ad658efd6d
commit 82595cecd4

@ -240,7 +240,7 @@ class Core(
RecentlyClosedMiddleware(recentlyClosedTabsStorage, RECENTLY_CLOSED_MAX),
DownloadMiddleware(context, DownloadService::class.java),
ReaderViewMiddleware(),
TelemetryMiddleware(context.settings(), metrics),
TelemetryMiddleware(context.settings(), metrics, crashReporter),
ThumbnailsMiddleware(thumbnailStorage),
UndoMiddleware(context.getUndoDelay()),
RegionMiddleware(context, locationService),

@ -15,11 +15,13 @@ import mozilla.components.browser.state.selector.normalTabs
import mozilla.components.browser.state.state.BrowserState
import mozilla.components.browser.state.state.EngineState
import mozilla.components.browser.state.state.SessionState
import mozilla.components.concept.base.crash.CrashReporting
import mozilla.components.lib.state.Middleware
import mozilla.components.lib.state.MiddlewareContext
import mozilla.components.support.base.android.Clock
import mozilla.components.support.base.log.logger.Logger
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.Config
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.GleanMetrics.Metrics
import org.mozilla.fenix.components.metrics.MetricController
@ -35,6 +37,7 @@ import org.mozilla.fenix.GleanMetrics.EngineTab as EngineMetrics
class TelemetryMiddleware(
private val settings: Settings,
private val metrics: MetricController,
private val crashReporting: CrashReporting? = null,
) : Middleware<BrowserState, BrowserAction> {
private val logger = Logger("TelemetryMiddleware")
@ -62,6 +65,10 @@ class TelemetryMiddleware(
}
is ContentAction.CheckForFormDataExceptionAction -> {
Events.formDataFailure.record(NoExtras())
if (Config.channel.isNightlyOrDebug) {
crashReporting?.submitCaughtException(action.throwable)
}
return
}
else -> {
// no-op

@ -35,6 +35,7 @@ import org.mozilla.fenix.GleanMetrics.Metrics
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.utils.Settings
import org.robolectric.shadows.ShadowLooper
import org.mozilla.fenix.GleanMetrics.EngineTab as EngineMetrics
@RunWith(FenixRobolectricTestRunner::class)
@ -359,6 +360,9 @@ class TelemetryMiddlewareTest {
ContentAction.CheckForFormDataExceptionAction("1", RuntimeException("session form data request failed")),
).joinBlocking()
// Wait for the main looper to process the re-thrown exception.
ShadowLooper.idleMainLooper()
assertNotNull(Events.formDataFailure.testGetValue())
}
}

Loading…
Cancel
Save