diff --git a/patches/fenix-overlay/app/src/main/res/values/ironfox_preference_keys.xml b/patches/fenix-overlay/app/src/main/res/values/ironfox_preference_keys.xml index 08365037..36f21fde 100644 --- a/patches/fenix-overlay/app/src/main/res/values/ironfox_preference_keys.xml +++ b/patches/fenix-overlay/app/src/main/res/values/ironfox_preference_keys.xml @@ -4,6 +4,8 @@ pref_key_accessibility_enabled + pref_key_cache_enabled + pref_key_cache_ssl_enabled pref_key_javascript_enabled pref_key_jit_enabled pref_key_wasm_enabled diff --git a/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml b/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml index d5bfc6d3..b701de02 100644 --- a/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml +++ b/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml @@ -10,6 +10,10 @@ Enable accessibility services Enable to allow communication with accessibility services on your device. + + Enable disk cache + Enable disk cache for secure webpages (HTTPS) + Enable Encrypted Media Extensions (EME) Enable Widevine CDM diff --git a/patches/ironfox-content-settings.patch b/patches/ironfox-content-settings.patch index 1b9f1f02..5d115684 100644 --- a/patches/ironfox-content-settings.patch +++ b/patches/ironfox-content-settings.patch @@ -1,5 +1,5 @@ diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SiteSettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SiteSettingsFragment.kt -index 3885a06691..3a73cef122 100644 +index 3885a06691..63c041d16f 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SiteSettingsFragment.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/sitepermissions/SiteSettingsFragment.kt @@ -23,6 +23,11 @@ import org.mozilla.fenix.ext.settings @@ -14,11 +14,39 @@ index 3885a06691..3a73cef122 100644 /** * Screen for managing settings related to site permissions and content defaults. -@@ -40,6 +45,69 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { +@@ -40,6 +45,97 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { override fun onResume() { super.onResume() showToolbar(getString(R.string.preferences_site_settings)) + ++ val cacheEnabledPreference = requirePreference( ++ R.string.pref_key_cache_enabled, ++ ) ++ ++ cacheEnabledPreference.setOnPreferenceChangeListener { preference, cacheEnabled -> ++ val settings = preference.context.settings() ++ val components = preference.context.components ++ ++ settings.cacheEnabled = cacheEnabled as Boolean ++ components.core.engine.settings.cacheEnabled = cacheEnabled ++ ++ true ++ } ++ ++ val cacheSslEnabledPreference = requirePreference( ++ R.string.pref_key_cache_ssl_enabled, ++ ) ++ ++ cacheSslEnabledPreference.setOnPreferenceChangeListener { preference, cacheSslEnabled -> ++ val settings = preference.context.settings() ++ val components = preference.context.components ++ ++ settings.cacheSslEnabled = cacheSslEnabled as Boolean ++ components.core.engine.settings.cacheSslEnabled = cacheSslEnabled ++ ++ true ++ } ++ + val javascriptEnabledPreference = requirePreference( + R.string.pref_key_javascript_enabled, + ) @@ -84,7 +112,7 @@ index 3885a06691..3a73cef122 100644 setupPreferences() } -@@ -91,6 +159,12 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { +@@ -91,6 +187,12 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { navigateToPhoneFeature(phoneFeature) true } @@ -97,7 +125,7 @@ index 3885a06691..3a73cef122 100644 } private fun navigateToPhoneFeature(phoneFeature: PhoneFeature) { -@@ -109,4 +183,8 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { +@@ -109,4 +211,8 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { ) } } @@ -107,13 +135,28 @@ index 3885a06691..3a73cef122 100644 + } } diff --git a/mobile/android/fenix/app/src/main/res/xml/site_permissions_preferences.xml b/mobile/android/fenix/app/src/main/res/xml/site_permissions_preferences.xml -index ef1dcb4e6e..c727946701 100644 +index ef1dcb4e6e..bc15c8d611 100644 --- a/mobile/android/fenix/app/src/main/res/xml/site_permissions_preferences.xml +++ b/mobile/android/fenix/app/src/main/res/xml/site_permissions_preferences.xml -@@ -25,6 +25,30 @@ +@@ -25,6 +25,45 @@ android:title="@string/preference_feature_desktop_mode_default" app:iconSpaceReserved="false" /> ++ ++ ++ ++ + (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 9197b274db..1b9bf0c9fc 100644 +index 9197b274db..182a90ec05 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 -@@ -2463,6 +2463,66 @@ class Settings(private val appContext: Context) : PreferencesHolder { +@@ -2463,6 +2463,76 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = false, ) @@ -215,6 +217,16 @@ index 9197b274db..1b9bf0c9fc 100644 + default = false, + ) + ++ var cacheEnabled by booleanPreference( ++ appContext.getPreferenceKey(R.string.pref_key_cache_enabled), ++ default = false, ++ ) ++ ++ var cacheSslEnabled by booleanPreference( ++ appContext.getPreferenceKey(R.string.pref_key_cache_ssl_enabled), ++ default = false, ++ ) ++ + var emeEnabled by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_eme_enabled), + default = false, diff --git a/patches/ironfox-settings-gecko.patch b/patches/ironfox-settings-gecko.patch index 7a89beac..36d67d35 100644 --- a/patches/ironfox-settings-gecko.patch +++ b/patches/ironfox-settings-gecko.patch @@ -1,8 +1,8 @@ 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 1612c570be..491499153d 100644 +index 1612c570be..73d1ad302c 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 -@@ -1483,6 +1483,63 @@ class GeckoEngine( +@@ -1483,6 +1483,71 @@ class GeckoEngine( override var bannedPorts: String get() = runtime.settings.bannedPorts set(value) { runtime.settings.setBannedPorts(value) } @@ -11,6 +11,14 @@ index 1612c570be..491499153d 100644 + get() = runtime.settings.accessibilityEnabled + set(value) { runtime.settings.accessibilityEnabled = value } + ++ override var cacheEnabled: Boolean ++ get() = runtime.settings.cacheEnabled ++ set(value) { runtime.settings.cacheEnabled = value } ++ ++ override var cacheSslEnabled: Boolean ++ get() = runtime.settings.cacheSslEnabled ++ set(value) { runtime.settings.cacheSslEnabled = value } ++ + override var emeEnabled: Boolean + get() = runtime.settings.emeEnabled + set(value) { runtime.settings.emeEnabled = value } @@ -66,11 +74,13 @@ index 1612c570be..491499153d 100644 }.apply { defaultSettings?.let { this.javascriptEnabled = it.javascriptEnabled -@@ -1527,6 +1584,19 @@ class GeckoEngine( +@@ -1527,6 +1592,21 @@ class GeckoEngine( this.postQuantumKeyExchangeEnabled = it.postQuantumKeyExchangeEnabled this.dohAutoselectEnabled = it.dohAutoselectEnabled this.bannedPorts = it.bannedPorts + this.accessibilityEnabled = it.accessibilityEnabled ++ this.cacheEnabled = it.cacheEnabled ++ this.cacheSslEnabled = it.cacheSslEnabled + this.emeEnabled = it.emeEnabled + this.javascriptJitBaselineEnabled = it.javascriptJitBaselineEnabled + this.javascriptJitBaselineWasmEnabled = it.javascriptJitBaselineWasmEnabled @@ -87,15 +97,17 @@ index 1612c570be..491499153d 100644 } 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 24e8f76532..82a4ed2366 100644 +index 24e8f76532..31d5944166 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 -@@ -350,6 +350,20 @@ abstract class Settings { +@@ -350,6 +350,22 @@ abstract class Settings { * Comma-separated list of destination ports that the application should block connections to. */ open var bannedPorts: String by UnsupportedSetting() + + open var accessibilityEnabled: Boolean by UnsupportedSetting() ++ open var cacheEnabled: Boolean by UnsupportedSetting() ++ open var cacheSslEnabled: Boolean by UnsupportedSetting() + open var emeEnabled: Boolean by UnsupportedSetting() + open var javascriptJitBaselineEnabled: Boolean by UnsupportedSetting() + open var javascriptJitBaselineWasmEnabled: Boolean by UnsupportedSetting() @@ -111,11 +123,13 @@ index 24e8f76532..82a4ed2366 100644 } /** -@@ -420,6 +434,19 @@ data class DefaultSettings( +@@ -420,6 +436,21 @@ data class DefaultSettings( override var postQuantumKeyExchangeEnabled: Boolean? = null, override var dohAutoselectEnabled: Boolean = false, override var bannedPorts: String = "", + override var accessibilityEnabled: Boolean = false, ++ override var cacheEnabled: Boolean = false, ++ override var cacheSslEnabled: Boolean = false, + override var emeEnabled: Boolean = false, + override var javascriptJitBaselineEnabled: Boolean = false, + override var javascriptJitBaselineWasmEnabled: Boolean = false, @@ -132,14 +146,16 @@ index 24e8f76532..82a4ed2366 100644 override val desktopModeEnabled: Boolean get() = getDesktopMode() diff --git a/mobile/android/geckoview/api.txt b/mobile/android/geckoview/api.txt -index a410550e60..5d43260bf0 100644 +index a410550e60..9ef46e6e81 100644 --- a/mobile/android/geckoview/api.txt +++ b/mobile/android/geckoview/api.txt -@@ -984,6 +984,19 @@ package org.mozilla.geckoview { +@@ -984,6 +984,21 @@ package org.mozilla.geckoview { method @Nullable public Integer getWebContentIsolationStrategy(); method public boolean getWebFontsEnabled(); method public boolean getWebManifestEnabled(); + method public boolean getAccessibilityEnabled(); ++ method public boolean getCacheEnabled(); ++ method public boolean getCacheSslEnabled(); + method public boolean getEmeEnabled(); + method public boolean getJavaScriptJitBaselineEnabled(); + method public boolean getJavaScriptJitBaselineWasmEnabled(); @@ -155,11 +171,13 @@ index a410550e60..5d43260bf0 100644 method @NonNull public GeckoRuntimeSettings setAboutConfigEnabled(boolean); method @NonNull public GeckoRuntimeSettings setAllowInsecureConnections(int); method @NonNull public GeckoRuntimeSettings setAutomaticFontSizeAdjustment(boolean); -@@ -1030,6 +1043,19 @@ package org.mozilla.geckoview { +@@ -1030,6 +1045,21 @@ package org.mozilla.geckoview { method @NonNull public GeckoRuntimeSettings setWebContentIsolationStrategy(@NonNull Integer); method @NonNull public GeckoRuntimeSettings setWebFontsEnabled(boolean); method @NonNull public GeckoRuntimeSettings setWebManifestEnabled(boolean); + method @NonNull public GeckoRuntimeSettings setAccessibilityEnabled(boolean); ++ method @NonNull public GeckoRuntimeSettings setCacheEnabled(boolean); ++ method @NonNull public GeckoRuntimeSettings setCacheSslEnabled(boolean); + method @NonNull public GeckoRuntimeSettings setEmeEnabled(boolean); + method @NonNull public GeckoRuntimeSettings setJavaScriptJitBaselineEnabled(boolean); + method @NonNull public GeckoRuntimeSettings setJavaScriptJitBaselineWasmEnabled(boolean); @@ -175,11 +193,13 @@ index a410550e60..5d43260bf0 100644 field public static final int ALLOW_ALL = 0; field public static final int COLOR_SCHEME_DARK = 1; field public static final int COLOR_SCHEME_LIGHT = 0; -@@ -1093,6 +1119,19 @@ package org.mozilla.geckoview { +@@ -1093,6 +1123,21 @@ package org.mozilla.geckoview { method @NonNull public GeckoRuntimeSettings.Builder useMaxScreenDepth(boolean); method @NonNull public GeckoRuntimeSettings.Builder webFontsEnabled(boolean); method @NonNull public GeckoRuntimeSettings.Builder webManifest(boolean); + method @NonNull public GeckoRuntimeSettings.Builder accessibilityEnabled(boolean); ++ method @NonNull public GeckoRuntimeSettings.Builder cacheEnabled(boolean); ++ method @NonNull public GeckoRuntimeSettings.Builder cacheSslEnabled(boolean); + method @NonNull public GeckoRuntimeSettings.Builder emeEnabled(boolean); + method @NonNull public GeckoRuntimeSettings.Builder javaScriptJitBaselineEnabled(boolean); + method @NonNull public GeckoRuntimeSettings.Builder javaScriptJitBaselineWasmEnabled(boolean); @@ -196,10 +216,10 @@ index a410550e60..5d43260bf0 100644 } 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 25ea09c3f6..8a9c4f27d0 100644 +index 25ea09c3f6..db79ee287e 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 -@@ -640,6 +640,71 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { +@@ -640,6 +640,81 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { getSettings().setSameDocumentNavigationOverridesLoadTypeForceDisable(uri); return this; } @@ -209,6 +229,16 @@ index 25ea09c3f6..8a9c4f27d0 100644 + return this; + } + ++ public @NonNull Builder cacheEnabled(final boolean flag) { ++ getSettings().mCacheEnabled.set(flag); ++ return this; ++ } ++ ++ public @NonNull Builder cacheSslEnabled(final boolean flag) { ++ getSettings().mCacheSslEnabled.set(flag); ++ return this; ++ } ++ + public @NonNull Builder emeEnabled(final boolean flag) { + getSettings().mEmeEnabled.set(flag); + return this; @@ -271,11 +301,13 @@ index 25ea09c3f6..8a9c4f27d0 100644 } private GeckoRuntime mRuntime; -@@ -766,6 +831,20 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { +@@ -766,6 +841,22 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { /* package */ String[] mRequestedLocales; /* package */ ExperimentDelegate mExperimentDelegate; + /* package */ final Pref mAccessibilityEnabled = new Pref("accessibility.force_disabled", 1); ++ /* package */ final Pref mCacheEnabled = new Pref("browser.cache.disk.enable", false); ++ /* package */ final Pref mCacheSslEnabled = new Pref("browser.cache.disk_cache_ssl", false); + /* package */ final Pref mEmeEnabled = new Pref("media.eme.enabled", false); + /* package */ final Pref mJavaScriptJitBaselineEnabled = new Pref("javascript.options.baselinejit", false); + /* package */ final Pref mJavaScriptJitBaselineWasmEnabled = new Pref("javascript.options.wasm_baselinejit", false); @@ -292,7 +324,7 @@ index 25ea09c3f6..8a9c4f27d0 100644 /** * Attach and commit the settings to the given runtime. * -@@ -2206,6 +2285,123 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { +@@ -2206,6 +2297,141 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { return mSameDocumentNavigationOverridesLoadTypeForceDisable.get(); } @@ -305,6 +337,24 @@ index 25ea09c3f6..8a9c4f27d0 100644 + return this; + } + ++ public boolean getCacheEnabled() { ++ return mCacheEnabled.get(); ++ } ++ ++ public @NonNull GeckoRuntimeSettings setCacheEnabled(final boolean flag) { ++ mCacheEnabled.commit(flag); ++ return this; ++ } ++ ++ public boolean getCacheSslEnabled() { ++ return mCacheSslEnabled.get(); ++ } ++ ++ public @NonNull GeckoRuntimeSettings setCacheSslEnabled(final boolean flag) { ++ mCacheSslEnabled.commit(flag); ++ return this; ++ } ++ + public boolean getEmeEnabled() { + return mEmeEnabled.get(); + }