mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-01-26 15:03:43 -05:00
128 lines
5.3 KiB
Diff
128 lines
5.3 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 492c009ff9..988155f8a2 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
|
|
@@ -36,6 +36,7 @@ import org.mozilla.fenix.R
|
|
import org.mozilla.fenix.ext.components
|
|
import org.mozilla.fenix.settings.SupportUtils
|
|
import org.mozilla.fenix.theme.ThemeManager
|
|
+import org.mozilla.fenix.utils.IronFoxAddons
|
|
|
|
/**
|
|
* Feature implementation for handling [WebExtensionPromptRequest] and showing the respective UI.
|
|
@@ -121,6 +122,9 @@ class WebExtensionPromptFeature(
|
|
private fun handlePostInstallationRequest(
|
|
addon: Addon,
|
|
) {
|
|
+ if (IronFoxAddons.isUBlockOrigin(addon)) {
|
|
+ return
|
|
+ }
|
|
showPostInstallationDialog(addon)
|
|
}
|
|
|
|
@@ -128,6 +132,15 @@ class WebExtensionPromptFeature(
|
|
addon: Addon,
|
|
promptRequest: WebExtensionPromptRequest.AfterInstallation.Permissions.Required,
|
|
) {
|
|
+ if (IronFoxAddons.isUBlockOrigin(addon)) {
|
|
+ handlePermissions(
|
|
+ promptRequest = promptRequest,
|
|
+ granted = true,
|
|
+ privateBrowsingAllowed = true,
|
|
+ technicalAndInteractionDataGranted = false,
|
|
+ )
|
|
+ return
|
|
+ }
|
|
showPermissionDialog(
|
|
addon = addon,
|
|
promptRequest = promptRequest,
|
|
@@ -142,6 +155,15 @@ class WebExtensionPromptFeature(
|
|
addon: Addon,
|
|
promptRequest: WebExtensionPromptRequest.AfterInstallation.Permissions.Optional,
|
|
) {
|
|
+ if (IronFoxAddons.isUBlockOrigin(addon)) {
|
|
+ handlePermissions(
|
|
+ promptRequest = promptRequest,
|
|
+ granted = true,
|
|
+ privateBrowsingAllowed = true,
|
|
+ technicalAndInteractionDataGranted = false,
|
|
+ )
|
|
+ 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 e5ab956ac3..5522b6c023 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
|
|
@@ -118,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
|
|
|