From b3c8e1f3eea1812036da05beb13f2037d6b13109 Mon Sep 17 00:00:00 2001 From: William Durand Date: Mon, 18 Sep 2023 11:54:17 +0200 Subject: [PATCH] Bug 1853177 - Avoid multiple crash dialogs to be created and shown --- .../ExtensionProcessDisabledController.kt | 113 ++++++++++-------- .../ExtensionProcessDisabledControllerTest.kt | 39 +++++- 2 files changed, 101 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/addons/ExtensionProcessDisabledController.kt b/app/src/main/java/org/mozilla/fenix/addons/ExtensionProcessDisabledController.kt index 129f859581..4d85768c22 100644 --- a/app/src/main/java/org/mozilla/fenix/addons/ExtensionProcessDisabledController.kt +++ b/app/src/main/java/org/mozilla/fenix/addons/ExtensionProcessDisabledController.kt @@ -10,6 +10,7 @@ import android.widget.Button import android.widget.TextView import androidx.annotation.UiContext import androidx.appcompat.app.AlertDialog +import androidx.lifecycle.LifecycleOwner import mozilla.components.browser.state.action.ExtensionProcessDisabledPopupAction import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.Engine @@ -20,52 +21,6 @@ import org.mozilla.fenix.R import org.mozilla.fenix.ext.components import org.mozilla.geckoview.WebExtensionController -/** - * Present a dialog to the user notifying of extension process spawning disabled and also asking - * whether they would like to continue trying or disable extensions. If the user chooses to retry, - * enable the extension process spawning with [WebExtensionController.enableExtensionProcessSpawning]. - * - * @param context to show the AlertDialog - * @param store The [BrowserStore] which holds the state for showing the dialog - * @param webExtensionController to call when a user enables the process spawning - * @param builder to use for creating the dialog which can be styled as needed - * @param appName to be added to the message. Necessary to be added as a param for testing - */ -private fun presentDialog( - @UiContext context: Context, - store: BrowserStore, - engine: Engine, - builder: AlertDialog.Builder, - appName: String, -) { - val message = context.getString(R.string.addon_process_crash_dialog_message, appName) - var onDismissDialog: (() -> Unit)? = null - val layout = LayoutInflater.from(context) - .inflate(R.layout.crash_extension_dialog, null, false) - layout?.apply { - findViewById(R.id.message)?.text = message - findViewById