mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-06-11 09:44:46 -04:00
319 lines
16 KiB
Diff
319 lines
16 KiB
Diff
From c2c709b74fd3cc4d038a02cee6e5d9f164d3df01 Mon Sep 17 00:00:00 2001
|
|
From: Akash Yadav <itsaky01@gmail.com>
|
|
Date: Mon, 28 Apr 2025 11:38:38 +0530
|
|
Subject: [PATCH] fix(patches): update 'safe-browsing.patch' for
|
|
'FIREFOX_138_0_BUILD1'
|
|
|
|
Signed-off-by: Akash Yadav <itsaky01@gmail.com>
|
|
---
|
|
.../browser/engine/gecko/GeckoEngine.kt | 18 ++++++
|
|
.../components/concept/engine/Settings.kt | 12 ++++
|
|
.../java/org/mozilla/fenix/components/Core.kt | 2 +
|
|
.../fenix/settings/SettingsFragment.kt | 21 ++++++
|
|
.../java/org/mozilla/fenix/utils/Settings.kt | 7 ++
|
|
.../src/main/res/values/preference_keys.xml | 3 +
|
|
.../app/src/main/res/xml/preferences.xml | 6 ++
|
|
mobile/android/geckoview/api.txt | 6 ++
|
|
.../geckoview/GeckoRuntimeSettings.java | 64 +++++++++++++++++++
|
|
9 files changed, 139 insertions(+)
|
|
|
|
diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
|
|
index d3bfbfa762..0c04eb91ee 100644
|
|
--- a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
|
|
+++ b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
|
|
@@ -1114,6 +1114,22 @@ class GeckoEngine(
|
|
runtime.settings.contentBlocking.setSafeBrowsing(policy)
|
|
field = value
|
|
}
|
|
+
|
|
+ override var safeBrowsingEnabled: Boolean
|
|
+ get() = runtime.settings.safeBrowsingEnabled
|
|
+ set(value) {
|
|
+ value.let {
|
|
+ runtime.settings.safeBrowsingEnabled = it
|
|
+ }
|
|
+ }
|
|
+
|
|
+ override var safeBrowsingPhishingEnabled: Boolean
|
|
+ get() = runtime.settings.safeBrowsingPhishingEnabled
|
|
+ set(value) {
|
|
+ value.let {
|
|
+ runtime.settings.safeBrowsingPhishingEnabled = it
|
|
+ }
|
|
+ }
|
|
|
|
override var trackingProtectionPolicy: TrackingProtectionPolicy? = null
|
|
set(value) {
|
|
@@ -1481,6 +1497,8 @@ class GeckoEngine(
|
|
this.automaticLanguageAdjustment = it.automaticLanguageAdjustment
|
|
this.trackingProtectionPolicy = it.trackingProtectionPolicy
|
|
this.safeBrowsingPolicy = arrayOf(SafeBrowsingPolicy.RECOMMENDED)
|
|
+ this.safeBrowsingEnabled = it.safeBrowsingEnabled
|
|
+ this.safeBrowsingPhishingEnabled = it.safeBrowsingPhishingEnabled
|
|
this.remoteDebuggingEnabled = it.remoteDebuggingEnabled
|
|
this.testingModeEnabled = it.testingModeEnabled
|
|
this.userAgentString = it.userAgentString
|
|
diff --git a/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt b/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
|
|
index db66cbe503..8eb6fdec9d 100644
|
|
--- a/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
|
|
+++ b/mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
|
|
@@ -66,6 +66,16 @@ abstract class Settings {
|
|
*/
|
|
open var safeBrowsingPolicy: Array<SafeBrowsingPolicy> by UnsupportedSetting()
|
|
|
|
+ /**
|
|
+ * Setting to control Safe Browsing (for malware).
|
|
+ */
|
|
+ open var safeBrowsingEnabled: Boolean by UnsupportedSetting()
|
|
+
|
|
+ /**
|
|
+ * Setting to control Safe Browsing (for phishing).
|
|
+ */
|
|
+ open var safeBrowsingPhishingEnabled: Boolean by UnsupportedSetting()
|
|
+
|
|
/**
|
|
* Setting to control the cookie banner handling feature detect only mode.
|
|
*/
|
|
@@ -390,6 +400,8 @@ data class DefaultSettings(
|
|
override var cookieBannerHandlingMode: CookieBannerHandlingMode = CookieBannerHandlingMode.DISABLED,
|
|
override var cookieBannerHandlingModePrivateBrowsing: CookieBannerHandlingMode =
|
|
CookieBannerHandlingMode.DISABLED,
|
|
+ override var safeBrowsingEnabled: Boolean = true,
|
|
+ override var safeBrowsingPhishingEnabled: Boolean = true,
|
|
override var cookieBannerHandlingDetectOnlyMode: Boolean = false,
|
|
override var cookieBannerHandlingGlobalRules: Boolean = false,
|
|
override var cookieBannerHandlingGlobalRulesSubFrames: Boolean = false,
|
|
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
|
|
index 9a9487a930..ba7b61e96b 100644
|
|
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
|
|
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
|
|
@@ -169,6 +169,8 @@ class Core(
|
|
fdlibmMathEnabled = FxNimbus.features.fingerprintingProtection.value().fdlibmMath,
|
|
cookieBannerHandlingMode = context.settings().getCookieBannerHandling(),
|
|
cookieBannerHandlingModePrivateBrowsing = context.settings().getCookieBannerHandlingPrivateMode(),
|
|
+ safeBrowsingEnabled = context.settings().safeBrowsingEnabled,
|
|
+ safeBrowsingPhishingEnabled = context.settings().safeBrowsingEnabled,
|
|
cookieBannerHandlingDetectOnlyMode = context.settings().shouldEnableCookieBannerDetectOnly,
|
|
cookieBannerHandlingGlobalRules = context.settings().shouldEnableCookieBannerGlobalRules,
|
|
cookieBannerHandlingGlobalRulesSubFrames = context.settings().shouldEnableCookieBannerGlobalRulesSubFrame,
|
|
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
|
|
index ad6678f234..425ec85218 100644
|
|
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
|
|
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
|
|
@@ -563,6 +563,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
(requireContext().components.core.engine.profiler?.isProfilerActive() != null)
|
|
}
|
|
setupCookieBannerPreference()
|
|
+ setupSafeBrowsingPreference()
|
|
setupInstallAddonFromFilePreference(requireContext().settings())
|
|
setLinkSharingPreference()
|
|
setupAmoCollectionOverridePreference(requireContext().settings())
|
|
@@ -789,6 +790,36 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
}
|
|
}
|
|
|
|
+ @VisibleForTesting
|
|
+ internal fun setupSafeBrowsingPreference() {
|
|
+ val safeBrowsingEnabledPreference = requirePreference<SwitchPreference>(
|
|
+ R.string.pref_key_safe_browsing_enabled,
|
|
+ )
|
|
+
|
|
+ safeBrowsingEnabledPreference.setOnPreferenceChangeListener<Boolean> { preference, safeBrowsingEnabled ->
|
|
+ val settings = preference.context.settings()
|
|
+ val components = preference.context.components
|
|
+
|
|
+ settings.safeBrowsingEnabled = safeBrowsingEnabled
|
|
+
|
|
+ components.core.engine.settings.safeBrowsingEnabled = safeBrowsingEnabled
|
|
+ components.core.engine.settings.safeBrowsingPhishingEnabled = safeBrowsingEnabled
|
|
+
|
|
+ Toast.makeText(
|
|
+ context,
|
|
+ getString(R.string.quit_application),
|
|
+ Toast.LENGTH_LONG,
|
|
+ ).show()
|
|
+ Handler(Looper.getMainLooper()).postDelayed(
|
|
+ {
|
|
+ exitProcess(0)
|
|
+ },
|
|
+ FXA_SYNC_OVERRIDE_EXIT_DELAY,
|
|
+ )
|
|
+ true
|
|
+ }
|
|
+ }
|
|
+
|
|
@VisibleForTesting
|
|
internal fun setupInstallAddonFromFilePreference(settings: Settings) {
|
|
with(requirePreference<Preference>(R.string.pref_key_install_local_addon)) {
|
|
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
|
|
index 8e271198b0..86fc40d5fd 100644
|
|
--- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
|
|
+++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
|
|
@@ -786,6 +786,11 @@ class Settings(private val appContext: Context) : PreferencesHolder {
|
|
|
|
val queryParameterStrippingStripList: String
|
|
get() = queryParameterStrippingSection[QUERY_PARAMETER_STRIPPING_STRIP_LIST].orEmpty()
|
|
+
|
|
+ var safeBrowsingEnabled by booleanPreference(
|
|
+ appContext.getPreferenceKey(R.string.pref_key_safe_browsing_enabled),
|
|
+ default = true,
|
|
+ )
|
|
|
|
/**
|
|
* Declared as a function for performance purposes. This could be declared as a variable using
|
|
diff --git a/mobile/android/fenix/app/src/main/res/values/preference_keys.xml b/mobile/android/fenix/app/src/main/res/values/preference_keys.xml
|
|
index dbb7ece65c..e334b7586c 100644
|
|
--- a/mobile/android/fenix/app/src/main/res/values/preference_keys.xml
|
|
+++ b/mobile/android/fenix/app/src/main/res/values/preference_keys.xml
|
|
@@ -224,6 +224,9 @@
|
|
<string name="pref_key_tracking_protection_suspected_fingerprinters" translatable="false">pref_key_tracking_protection_suspected_fingerprinters</string>
|
|
<string name="pref_key_tracking_protection_suspected_fingerprinters_select" translatable="false">pref_key_tracking_protection_suspected_fingerprinters_select</string>
|
|
|
|
+ <!-- Safe Browsing -->
|
|
+ <string name="pref_key_safe_browsing_enabled" translatable="false">pref_key_safe_browsing_enabled</string>
|
|
+
|
|
<!-- Logins Settings -->
|
|
<string name="pref_key_save_logins_settings" translatable="false">pref_key_save_logins_settings</string>
|
|
<string name="pref_key_save_logins" translatable="false">pref_key_save_logins</string>
|
|
diff --git a/mobile/android/fenix/app/src/main/res/xml/preferences.xml b/mobile/android/fenix/app/src/main/res/xml/preferences.xml
|
|
index 3b85a2a548..04fff133df 100644
|
|
--- a/mobile/android/fenix/app/src/main/res/xml/preferences.xml
|
|
+++ b/mobile/android/fenix/app/src/main/res/xml/preferences.xml
|
|
@@ -120,6 +120,13 @@
|
|
app:iconSpaceReserved="false"
|
|
app:isPreferenceVisible="false"
|
|
android:title="@string/preferences_cookie_banner_reduction_private_mode" />
|
|
+
|
|
+ <androidx.preference.SwitchPreference
|
|
+ android:defaultValue="true"
|
|
+ android:key="@string/pref_key_safe_browsing_enabled"
|
|
+ android:summary="@string/restart_required_summary"
|
|
+ app:iconSpaceReserved="false"
|
|
+ android:title="@string/preference_safe_browsing_enabled" />
|
|
|
|
<androidx.preference.Preference
|
|
android:key="@string/pref_key_tracking_protection_settings"
|
|
diff --git a/mobile/android/geckoview/api.txt b/mobile/android/geckoview/api.txt
|
|
index d1af0917aa..8bf4d82d04 100644
|
|
--- a/mobile/android/geckoview/api.txt
|
|
+++ b/mobile/android/geckoview/api.txt
|
|
@@ -865,6 +865,8 @@ package org.mozilla.geckoview {
|
|
method @Nullable public String getConfigFilePath();
|
|
method public boolean getConsoleOutputEnabled();
|
|
method @NonNull public ContentBlocking.Settings getContentBlocking();
|
|
+ method public boolean getSafeBrowsingEnabled();
|
|
+ method public boolean getSafeBrowsingPhishingEnabled();
|
|
method public boolean getCookieBehaviorOptInPartitioning();
|
|
method public boolean getCookieBehaviorOptInPartitioningPBM();
|
|
method @Nullable public Class<? extends android.app.Service> getCrashHandler();
|
|
@@ -919,6 +921,8 @@ package org.mozilla.geckoview {
|
|
method @NonNull public GeckoRuntimeSettings setAutomaticFontSizeAdjustment(boolean);
|
|
method @NonNull public GeckoRuntimeSettings setCertificateTransparencyMode(int);
|
|
method @NonNull public GeckoRuntimeSettings setConsoleOutputEnabled(boolean);
|
|
+ method @NonNull public GeckoRuntimeSettings setSafeBrowsingEnabled(boolean);
|
|
+ method @NonNull public GeckoRuntimeSettings setSafeBrowsingPhishingEnabled(boolean);
|
|
method @NonNull public GeckoRuntimeSettings setCookieBehaviorOptInPartitioning(boolean);
|
|
method @NonNull public GeckoRuntimeSettings setCookieBehaviorOptInPartitioningPBM(boolean);
|
|
method @NonNull public GeckoRuntimeSettings setDefaultRecursiveResolverUri(@NonNull String);
|
|
@@ -981,6 +985,8 @@ package org.mozilla.geckoview {
|
|
method @NonNull public GeckoRuntimeSettings.Builder configFilePath(@Nullable String);
|
|
method @NonNull public GeckoRuntimeSettings.Builder consoleOutput(boolean);
|
|
method @NonNull public GeckoRuntimeSettings.Builder contentBlocking(@NonNull ContentBlocking.Settings);
|
|
+ method @NonNull public GeckoRuntimeSettings.Builder safeBrowsingEnabled(boolean);
|
|
+ method @NonNull public GeckoRuntimeSettings.Builder safeBrowsingPhishingEnabled(boolean);
|
|
method @NonNull public GeckoRuntimeSettings.Builder crashHandler(@Nullable Class<? extends android.app.Service>);
|
|
method @NonNull public GeckoRuntimeSettings.Builder debugLogging(boolean);
|
|
method @NonNull public GeckoRuntimeSettings.Builder defaultRecursiveResolverUri(@NonNull String);
|
|
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
|
|
index 30a300d9eb..343d03f7d5 100644
|
|
--- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
|
|
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
|
|
@@ -436,6 +436,28 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
|
|
return this;
|
|
}
|
|
|
|
+ /**
|
|
+ * Sets whether we should enable Safe Browsing (for malware).
|
|
+ *
|
|
+ * @param flag True if we should enable Safe Browsing (for malware), false otherwise.
|
|
+ * @return This Builder instance.
|
|
+ */
|
|
+ public @NonNull Builder safeBrowsingEnabled(final boolean flag) {
|
|
+ getSettings().mSafeBrowsingEnabled.set(flag);
|
|
+ return this;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Sets whether we should enable Safe Browsing (for phishing).
|
|
+ *
|
|
+ * @param flag True if we should enable Safe Browsing (for phishing), false otherwise.
|
|
+ * @return This Builder instance.
|
|
+ */
|
|
+ public @NonNull Builder safeBrowsingPhishingEnabled(final boolean flag) {
|
|
+ getSettings().mSafeBrowsingPhishingEnabled.set(flag);
|
|
+ return this;
|
|
+ }
|
|
+
|
|
/**
|
|
* Sets the preferred color scheme override for web content.
|
|
*
|
|
@@ -694,6 +716,8 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
|
|
new Pref<Boolean>("network.fetchpriority.enabled", false);
|
|
/* package */ final Pref<Boolean> mParallelMarkingEnabled =
|
|
new Pref<Boolean>("javascript.options.mem.gc_parallel_marking", false);
|
|
+ /* package */ final Pref<Boolean> mSafeBrowsingEnabled = new Pref<>("browser.safebrowsing.malware.enabled", true);
|
|
+ /* package */ final Pref<Boolean> mSafeBrowsingPhishingEnabled = new Pref<>("browser.safebrowsing.phishing.enabled", true);
|
|
/* package */ final Pref<Boolean> mCookieBehaviorOptInPartitioning =
|
|
new Pref<Boolean>("network.cookie.cookieBehavior.optInPartitioning", false);
|
|
/* package */ final Pref<Boolean> mCookieBehaviorOptInPartitioningPBM =
|
|
@@ -927,6 +951,46 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
|
|
return mFdlibmMathEnabled.get();
|
|
}
|
|
|
|
+ /**
|
|
+ * Get whether we should enable Safe Browsing (for malware).
|
|
+ *
|
|
+ * @return Whether we should enable Safe Browsing (for malware).
|
|
+ */
|
|
+ public boolean getSafeBrowsingEnabled() {
|
|
+ return mSafeBrowsingEnabled.get();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Set whether we should enable Safe Browsing (for malware).
|
|
+ *
|
|
+ * @param flag A flag determining whether we should enable Safe Browsing (for malware).
|
|
+ * @return This GeckoRuntimeSettings instance.
|
|
+ */
|
|
+ public @NonNull GeckoRuntimeSettings setSafeBrowsingEnabled(final boolean flag) {
|
|
+ mSafeBrowsingEnabled.commit(flag);
|
|
+ return this;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Get whether we should enable Safe Browsing (for phishing).
|
|
+ *
|
|
+ * @return Whether we should enable Safe Browsing (for phishing).
|
|
+ */
|
|
+ public boolean getSafeBrowsingPhishingEnabled() {
|
|
+ return mSafeBrowsingPhishingEnabled.get();
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Set whether we should enable Safe Browsing (for phishing).
|
|
+ *
|
|
+ * @param flag A flag determining whether we should enable Safe Browsing (for phishing).
|
|
+ * @return This GeckoRuntimeSettings instance.
|
|
+ */
|
|
+ public @NonNull GeckoRuntimeSettings setSafeBrowsingPhishingEnabled(final boolean flag) {
|
|
+ mSafeBrowsingPhishingEnabled.commit(flag);
|
|
+ return this;
|
|
+ }
|
|
+
|
|
/**
|
|
* Set the pref to control the cookie behavior opt-in partitioning.
|
|
*
|
|
--
|
|
2.49.0
|
|
|