mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-06-11 09:44:46 -04:00
131 lines
5.4 KiB
Diff
131 lines
5.4 KiB
Diff
From 51f108b2abb8808bc7196d6b7e7b4d46aaeb9013 Mon Sep 17 00:00:00 2001
|
|
From: Akash Yadav <itsaky01@gmail.com>
|
|
Date: Mon, 28 Apr 2025 11:33:58 +0530
|
|
Subject: [PATCH] fix(patches): update 'install-ublock.patch' for
|
|
'FIREFOX_138_0_BUILD1'
|
|
|
|
Signed-off-by: Akash Yadav <itsaky01@gmail.com>
|
|
---
|
|
.../extension/WebExtensionPromptFeature.kt | 21 ++++++++++++
|
|
.../fenix/onboarding/OnboardingFragment.kt | 7 ++++
|
|
.../org/mozilla/fenix/utils/AddonUtils.kt | 34 +++++++++++++++++++
|
|
3 files changed, 62 insertions(+)
|
|
create mode 100644 mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/AddonUtils.kt
|
|
|
|
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/extension/WebExtensionPromptFeature.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/extension/WebExtensionPromptFeature.kt
|
|
index 82e44d1abc..fe2c0dd3e3 100644
|
|
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/extension/WebExtensionPromptFeature.kt
|
|
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/extension/WebExtensionPromptFeature.kt
|
|
@@ -121,6 +121,9 @@ class WebExtensionPromptFeature(
|
|
private fun handlePostInstallationRequest(
|
|
addon: Addon,
|
|
) {
|
|
+ if (org.mozilla.fenix.utils.isUBlock(addon)) {
|
|
+ return
|
|
+ }
|
|
showPostInstallationDialog(addon)
|
|
}
|
|
|
|
@@ -128,6 +131,15 @@ class WebExtensionPromptFeature(
|
|
addon: Addon,
|
|
promptRequest: WebExtensionPromptRequest.AfterInstallation.Permissions.Required,
|
|
) {
|
|
+ if (org.mozilla.fenix.utils.isUBlock(addon)) {
|
|
+ handlePermissions(
|
|
+ promptRequest = promptRequest,
|
|
+ granted = true,
|
|
+ privateBrowsingAllowed = true
|
|
+ )
|
|
+ return
|
|
+ }
|
|
+
|
|
showPermissionDialog(
|
|
addon = addon,
|
|
promptRequest = promptRequest,
|
|
@@ -141,6 +153,15 @@ class WebExtensionPromptFeature(
|
|
addon: Addon,
|
|
promptRequest: WebExtensionPromptRequest.AfterInstallation.Permissions.Optional,
|
|
) {
|
|
+ if (org.mozilla.fenix.utils.isUBlock(addon)) {
|
|
+ handlePermissions(
|
|
+ promptRequest = promptRequest,
|
|
+ granted = true,
|
|
+ privateBrowsingAllowed = true
|
|
+ )
|
|
+ return
|
|
+ }
|
|
+
|
|
val shouldGrantWithoutPrompt = Addon.localizePermissions(
|
|
promptRequest.permissions,
|
|
context,
|
|
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/OnboardingFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/OnboardingFragment.kt
|
|
index 1c975c33f4..c8e8c637f3 100644
|
|
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/OnboardingFragment.kt
|
|
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/onboarding/OnboardingFragment.kt
|
|
@@ -19,8 +19,10 @@ import androidx.annotation.RequiresApi
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.platform.ComposeView
|
|
import androidx.fragment.app.Fragment
|
|
+import androidx.lifecycle.lifecycleScope
|
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
|
import androidx.navigation.fragment.findNavController
|
|
+import kotlinx.coroutines.launch
|
|
import mozilla.components.concept.engine.webextension.InstallationMethod
|
|
import mozilla.components.service.nimbus.evalJexlSafe
|
|
import mozilla.components.service.nimbus.messaging.use
|
|
@@ -116,6 +118,11 @@ class OnboardingFragment : Fragment() {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
val context = requireContext()
|
|
+
|
|
+ lifecycleScope.launch {
|
|
+ org.mozilla.fenix.utils.installIFAddons(requireComponents)
|
|
+ }
|
|
+
|
|
if (pagesToDisplay.isEmpty()) {
|
|
/* do not continue if there's no onboarding pages to display */
|
|
onFinish(null)
|
|
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/AddonUtils.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/AddonUtils.kt
|
|
new file mode 100644
|
|
index 0000000000..da5f74b77f
|
|
--- /dev/null
|
|
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/AddonUtils.kt
|
|
@@ -0,0 +1,34 @@
|
|
+package org.mozilla.fenix.utils
|
|
+
|
|
+import kotlinx.coroutines.Dispatchers
|
|
+import kotlinx.coroutines.withContext
|
|
+import mozilla.components.concept.engine.webextension.InstallationMethod
|
|
+import mozilla.components.feature.addons.Addon
|
|
+import mozilla.components.feature.addons.logger
|
|
+import org.mozilla.fenix.components.Components
|
|
+
|
|
+private val UBLOCK = Addon(
|
|
+ id = "uBlock0@raymondhill.net",
|
|
+ downloadUrl = "https://addons.mozilla.org/firefox/downloads/latest/uBlock0@raymondhill.net/latest.xpi"
|
|
+)
|
|
+
|
|
+fun isUBlock(addon: Addon) = addon.id == UBLOCK.id
|
|
+
|
|
+suspend fun installIFAddons(components: Components) = withContext(Dispatchers.IO) {
|
|
+ val addonManager = components.addonManager
|
|
+ val addons = addonManager.getAddons(waitForPendingActions = true)
|
|
+ if (addons.none { it.id == UBLOCK.id && it.isInstalled() }) {
|
|
+ withContext(Dispatchers.Main) {
|
|
+ addonManager.installAddon(
|
|
+ url = UBLOCK.downloadUrl,
|
|
+ installationMethod = InstallationMethod.MANAGER,
|
|
+ onSuccess = {
|
|
+ logger.info("uBlock Origin installed.")
|
|
+ },
|
|
+ onError = { err ->
|
|
+ logger.error("uBlock Origin install failed.", err)
|
|
+ }
|
|
+ )
|
|
+ }
|
|
+ }
|
|
+}
|
|
--
|
|
2.49.0
|
|
|