Firefox · Core
CVE-2026-16397
Logic Error in Core
Overview
Medium
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Changed Functions
| Function | Change | Notes |
|---|---|---|
DownloadAddonDialogFragmentmobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/DownloadAddonDialogFragment.kt |
modified |
Files Changed
mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.ktmobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/PromptDialogFragment.ktmobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsDialogFragment.ktmobile/android/android-components/components/support/base/src/main/java/mozilla/components/support/base/android/NoObscuredTouchesDialogFragment.ktmobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/DownloadAddonDialogFragment.kt
Patch
diff --git a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt
index 786153f4084..fef65fd18f8 100644
--- a/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt
+++ b/mobile/android/android-components/components/feature/addons/src/main/java/mozilla/components/feature/addons/ui/AddonDialogFragment.kt
@@ -12,6 +12,7 @@ import androidx.appcompat.app.AppCompatDialogFragment
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.graphics.drawable.toDrawable
import mozilla.components.feature.addons.Addon
+import mozilla.components.support.base.android.NoObscuredTouchesDialogFragment
import mozilla.components.support.utils.ext.getParcelableCompat
@VisibleForTesting
@@ -20,7 +21,7 @@ internal const val KEY_ICON = "KEY_ICON"
/**
* A generic [Addon] dialog which has an [Addon]'s icon.
*/
-open class AddonDialogFragment : AppCompatDialogFragment() {
+open class AddonDialogFragment : NoObscuredTouchesDialogFragment() {
init {
arguments = arguments ?: Bundle()
}
diff --git a/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/PromptDialogFragment.kt b/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/PromptDialogFragment.kt
index 093c389cbfe..8cce0660fe8 100644
--- a/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/PromptDialogFragment.kt
+++ b/mobile/android/android-components/components/feature/prompts/src/main/java/mozilla/components/feature/prompts/dialog/PromptDialogFragment.kt
@@ -4,11 +4,11 @@
package mozilla.components.feature.prompts.dialog
-import androidx.fragment.app.DialogFragment
import mozilla.components.concept.engine.prompt.PromptRequest
import mozilla.components.concept.storage.CreditCardValidationDelegate
import mozilla.components.concept.storage.LoginValidationDelegate
import mozilla.components.feature.prompts.login.LoginExceptions
+import mozilla.components.support.base.android.NoObscuredTouchesDialogFragment
internal const val KEY_SESSION_ID = "KEY_SESSION_ID"
internal const val KEY_TITLE = "KEY_TITLE"
@@ -20,7 +20,7 @@ internal const val KEY_SHOULD_DISMISS_ON_LOAD = "KEY_SHOULD_DISMISS_ON_LOAD"
* An abstract representation for all different types of prompt dialogs.
* for handling [PromptFeature] dialogs.
*/
-internal abstract class PromptDialogFragment : DialogFragment() {
+internal abstract class PromptDialogFragment : NoObscuredTouchesDialogFragment() {
var feature: Prompter? = null
internal val sessionId: String by lazy { requireNotNull(arguments).getString(KEY_SESSION_ID)!! }
diff --git a/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsDialogFragment.kt b/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsDialogFragment.kt
index 3d9b44f1208..8a9fdbc2b75 100644
--- a/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsDialogFragment.kt
+++ b/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/SitePermissionsDialogFragment.kt
@@ -23,11 +23,11 @@ import android.widget.ImageView
import android.widget.LinearLayout.LayoutParams
import android.widget.TextView
import androidx.annotation.VisibleForTesting
-import androidx.appcompat.app.AppCompatDialogFragment
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toDrawable
+import mozilla.components.support.base.android.NoObscuredTouchesDialogFragment
import mozilla.components.support.base.log.logger.Logger
import mozilla.components.support.ktx.android.content.appName
import mozilla.components.support.ktx.kotlin.ifNullOrEmpty
@@ -51,7 +51,7 @@ private const val KEY_IS_NOTIFICATION_REQUEST = "KEY_IS_NOTIFICATION_REQUEST"
private const val DEFAULT_VALUE = Int.MAX_VALUE
private const val KEY_PERMISSION_ID = "KEY_PERMISSION_ID"
-internal open class SitePermissionsDialogFragment : AppCompatDialogFragment() {
+internal open class SitePermissionsDialogFragment : NoObscuredTouchesDialogFragment() {
private val logger = Logger("SitePermissionsDialogFragment")
diff --git a/mobile/android/android-components/components/support/base/src/main/java/mozilla/components/support/base/android/NoObscuredTouchesDialogFragment.kt b/mobile/android/android-components/components/support/base/src/main/java/mozilla/components/support/base/android/NoObscuredTouchesDialogFragment.kt
new file mode 100644
index 00000000000..f4b94d81210
--- /dev/null
+++ b/mobile/android/android-components/components/support/base/src/main/java/mozilla/components/support/base/android/NoObscuredTouchesDialogFragment.kt
@@ -0,0 +1,21 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package mozilla.components.support.base.android
+
+import androidx.annotation.CallSuper
+import androidx.appcompat.app.AppCompatDialogFragment
+
+/**
+ * [AppCompatDialogFragment] that responds to touches only if not obscured
+ */
+open class NoObscuredTouchesDialogFragment: AppCompatDialogFragment() {
+ @CallSuper
+ override fun onStart() {
+ super.onStart()
+ dialog?.window?.decorView?.apply {
+ filterTouchesWhenObscured = true
+ }
+ }
+}
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/DownloadAddonDialogFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/DownloadAddonDialogFragment.kt
index f605eb7c5a0..4195d760d32 100644
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/DownloadAddonDialogFragment.kt
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/addons/DownloadAddonDialogFragment.kt
@@ -43,6 +43,7 @@ import androidx.core.graphics.drawable.toDrawable
import androidx.fragment.compose.content
import androidx.navigation.fragment.navArgs
import mozilla.components.compose.base.button.TextButton
+import mozilla.components.support.base.android.NoObscuredTouchesDialogFragment
import org.mozilla.fenix.compose.Favicon
import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.theme.PreviewThemeProvider
@@ -60,7 +61,7 @@ import mozilla.components.ui.icons.R as iconsR
*
* @see [DownloadAddonDialogFragmentArgs].
*/
-class DownloadAddonDialogFragment : AppCompatDialogFragment() {
+class DownloadAddonDialogFragment : NoObscuredTouchesDialogFragment() {
private val args by navArgs<DownloadAddonDialogFragmentArgs>()
/**
Loading diff…
References
On This Page