From 4239dd54e7f0d0e772e2b2f4d499c63fc33ea446 Mon Sep 17 00:00:00 2001 From: celenity Date: Sun, 4 May 2025 00:06:52 -0400 Subject: [PATCH] fix: JIT toggle (+ clean-up & refine our other toggles) Signed-off-by: celenity --- ...le-accessibility-services-by-default.patch | 8 ++-- patches/ironfox-content-settings.patch | 47 +++++++------------ patches/js-settings.patch | 36 +++++--------- patches/safe-browsing.patch | 27 +++++------ 4 files changed, 45 insertions(+), 73 deletions(-) diff --git a/patches/disable-accessibility-services-by-default.patch b/patches/disable-accessibility-services-by-default.patch index c116b613..5baf244f 100644 --- a/patches/disable-accessibility-services-by-default.patch +++ b/patches/disable-accessibility-services-by-default.patch @@ -82,7 +82,7 @@ index 9a9487a930..7358b9ccd7 100644 // Apply fingerprinting protection overrides if the feature is enabled in Nimbus diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt -index 1122dc0b0f..fa3ed491b0 100644 +index 1122dc0b0f..456f387812 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/AccessibilityFragment.kt @@ -23,6 +23,20 @@ class AccessibilityFragment : PreferenceFragmentCompat() { @@ -93,12 +93,12 @@ index 1122dc0b0f..fa3ed491b0 100644 + R.string.pref_key_accessibility_enabled, + ) + -+ accessibilityEnabledPreference.setOnPreferenceChangeListener { preference, shouldEnable -> ++ accessibilityEnabledPreference.setOnPreferenceChangeListener { preference, accessibilityEnabled -> + val settings = preference.context.settings() + val components = preference.context.components + -+ settings.accessibilityEnabled = shouldEnable -+ components.core.engine.settings.accessibilityEnabled = shouldEnable ++ settings.accessibilityEnabled = accessibilityEnabled ++ components.core.engine.settings.accessibilityEnabled = accessibilityEnabled + + true + } diff --git a/patches/ironfox-content-settings.patch b/patches/ironfox-content-settings.patch index 7dc58f6e..c6959fea 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 115535816e..3cf53db9cc 100644 +index 115535816e..8581d589dc 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 @@ -24,6 +24,10 @@ import org.mozilla.fenix.ext.settings @@ -13,7 +13,7 @@ index 115535816e..3cf53db9cc 100644 /** * Screen for managing settings related to site permissions and content defaults. -@@ -44,6 +48,78 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { +@@ -44,6 +48,67 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { override fun onResume() { super.onResume() showToolbar(getString(R.string.preferences_site_settings)) @@ -22,12 +22,12 @@ index 115535816e..3cf53db9cc 100644 + R.string.pref_key_javascript_enabled, + ) + -+ javascriptEnabledPreference.setOnPreferenceChangeListener { preference, newValue -> ++ javascriptEnabledPreference.setOnPreferenceChangeListener { preference, javascriptEnabled -> + val settings = preference.context.settings() + val components = preference.context.components + -+ settings.javascriptEnabled = newValue as Boolean -+ components.core.engine.settings.javascriptEnabled = newValue ++ settings.javascriptEnabled = javascriptEnabled as Boolean ++ components.core.engine.settings.javascriptEnabled = javascriptEnabled + + true + } @@ -36,30 +36,19 @@ index 115535816e..3cf53db9cc 100644 + R.string.pref_key_jit_enabled, + ) + -+ javascriptJitEnabledPreference.setOnPreferenceChangeListener { preference, newValue -> ++ javascriptJitEnabledPreference.setOnPreferenceChangeListener { preference, javascriptJitEnabled -> + val settings = preference.context.settings() + val components = preference.context.components + -+ settings.javascriptJitBaselineEnabled = newValue as Boolean -+ components.core.engine.settings.javascriptJitBaselineEnabled = newValue ++ settings.javascriptJitEnabled = javascriptJitEnabled as Boolean + -+ settings.javascriptJitBaselineWasmEnabled = newValue -+ components.core.engine.settings.javascriptJitBaselineWasmEnabled = newValue -+ -+ settings.javascriptJitHintsEnabled = newValue -+ components.core.engine.settings.javascriptJitHintsEnabled = newValue -+ -+ settings.javascriptJitIonEnabled = newValue -+ components.core.engine.settings.javascriptJitIonEnabled = newValue -+ -+ settings.javascriptJitMainProcessEnabled = newValue -+ components.core.engine.settings.javascriptJitMainProcessEnabled = newValue -+ -+ settings.javascriptJitNativeRegexpEnabled = newValue -+ components.core.engine.settings.javascriptJitNativeRegexpEnabled = newValue -+ -+ settings.javascriptJitTrustedPrincipalsEnabled = newValue -+ components.core.engine.settings.javascriptJitTrustedPrincipalsEnabled = newValue ++ components.core.engine.settings.javascriptJitBaselineEnabled = javascriptJitEnabled ++ components.core.engine.settings.javascriptJitBaselineWasmEnabled = javascriptJitEnabled ++ components.core.engine.settings.javascriptJitHintsEnabled = javascriptJitEnabled ++ components.core.engine.settings.javascriptJitIonEnabled = javascriptJitEnabled ++ components.core.engine.settings.javascriptJitMainProcessEnabled = javascriptJitEnabled ++ components.core.engine.settings.javascriptJitNativeRegexpEnabled = javascriptJitEnabled ++ components.core.engine.settings.javascriptJitTrustedPrincipalsEnabled = javascriptJitEnabled + + Toast.makeText( + context, @@ -79,12 +68,12 @@ index 115535816e..3cf53db9cc 100644 + R.string.pref_key_wasm_enabled, + ) + -+ wasmEnabledPreference.setOnPreferenceChangeListener { preference, newValue -> ++ wasmEnabledPreference.setOnPreferenceChangeListener { preference, wasmEnabled -> + val settings = preference.context.settings() + val components = preference.context.components + -+ settings.wasmEnabled = newValue as Boolean -+ components.core.engine.settings.wasmEnabled = newValue ++ settings.wasmEnabled = wasmEnabled as Boolean ++ components.core.engine.settings.wasmEnabled = wasmEnabled + + true + } @@ -92,7 +81,7 @@ index 115535816e..3cf53db9cc 100644 setupPreferences() } -@@ -113,4 +189,8 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { +@@ -113,4 +178,8 @@ class SiteSettingsFragment : PreferenceFragmentCompat() { ) } } diff --git a/patches/js-settings.patch b/patches/js-settings.patch index 580938e4..21766c96 100644 --- a/patches/js-settings.patch +++ b/patches/js-settings.patch @@ -177,7 +177,7 @@ index db66cbe503..fc0414915f 100644 override var webFontsEnabled: Boolean = true, override var automaticFontSizeAdjustment: Boolean = true, 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..b03d803fef 100644 +index 9a9487a930..1740c44da1 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 @@ -143,6 +143,15 @@ class Core( @@ -185,22 +185,22 @@ index 9a9487a930..b03d803fef 100644 val engine: Engine by lazyMonitored { val defaultSettings = DefaultSettings( + javascriptEnabled = context.settings().javascriptEnabled, -+ javascriptJitBaselineEnabled = context.settings().javascriptJitBaselineEnabled, -+ javascriptJitBaselineWasmEnabled = context.settings().javascriptJitBaselineWasmEnabled, -+ javascriptJitHintsEnabled = context.settings().javascriptJitHintsEnabled, -+ javascriptJitIonEnabled = context.settings().javascriptJitIonEnabled, -+ javascriptJitMainProcessEnabled = context.settings().javascriptJitMainProcessEnabled, -+ javascriptJitNativeRegexpEnabled = context.settings().javascriptJitNativeRegexpEnabled, -+ javascriptJitTrustedPrincipalsEnabled = context.settings().javascriptJitTrustedPrincipalsEnabled, ++ javascriptJitBaselineEnabled = context.settings().javascriptJitEnabled, ++ javascriptJitBaselineWasmEnabled = context.settings().javascriptJitEnabled, ++ javascriptJitHintsEnabled = context.settings().javascriptJitEnabled, ++ javascriptJitIonEnabled = context.settings().javascriptJitEnabled, ++ javascriptJitMainProcessEnabled = context.settings().javascriptJitEnabled, ++ javascriptJitNativeRegexpEnabled = context.settings().javascriptJitEnabled, ++ javascriptJitTrustedPrincipalsEnabled = context.settings().javascriptJitEnabled, + wasmEnabled = context.settings().wasmEnabled, requestInterceptor = requestInterceptor, remoteDebuggingEnabled = context.settings().isRemoteDebuggingEnabled && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M, 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..511b113886 100644 +index 8e271198b0..ba1cb2b8f5 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 -@@ -1354,6 +1354,35 @@ class Settings(private val appContext: Context) : PreferencesHolder { +@@ -1354,6 +1354,21 @@ class Settings(private val appContext: Context) : PreferencesHolder { } } @@ -214,25 +214,11 @@ index 8e271198b0..511b113886 100644 + default = false, + ) + -+ var javascriptJitBaselineEnabled = javascriptJitEnabled -+ -+ var javascriptJitBaselineWasmEnabled = javascriptJitEnabled -+ -+ var javascriptJitHintsEnabled = javascriptJitEnabled -+ -+ var javascriptJitIonEnabled = javascriptJitEnabled -+ -+ var javascriptJitMainProcessEnabled = javascriptJitEnabled -+ -+ var javascriptJitNativeRegexpEnabled = javascriptJitEnabled -+ -+ var javascriptJitTrustedPrincipalsEnabled = javascriptJitEnabled -+ + var wasmEnabled by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_wasm_enabled), + default = true, + ) -+ ++ var shouldShowVoiceSearch by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_show_voice_search), default = true, diff --git a/patches/safe-browsing.patch b/patches/safe-browsing.patch index e5f34fdc..1e456372 100644 --- a/patches/safe-browsing.patch +++ b/patches/safe-browsing.patch @@ -84,7 +84,7 @@ index db66cbe503..8eb6fdec9d 100644 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..f901801a96 100644 +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( @@ -92,12 +92,12 @@ index 9a9487a930..f901801a96 100644 cookieBannerHandlingMode = context.settings().getCookieBannerHandling(), cookieBannerHandlingModePrivateBrowsing = context.settings().getCookieBannerHandlingPrivateMode(), + safeBrowsingEnabled = context.settings().safeBrowsingEnabled, -+ safeBrowsingPhishingEnabled = context.settings().safeBrowsingPhishingEnabled, ++ 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..743185b9ef 100644 +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() { @@ -108,7 +108,7 @@ index ad6678f234..743185b9ef 100644 setupInstallAddonFromFilePreference(requireContext().settings()) setLinkSharingPreference() setupAmoCollectionOverridePreference(requireContext().settings()) -@@ -789,6 +790,37 @@ class SettingsFragment : PreferenceFragmentCompat() { +@@ -789,6 +790,36 @@ class SettingsFragment : PreferenceFragmentCompat() { } } @@ -118,15 +118,14 @@ index ad6678f234..743185b9ef 100644 + R.string.pref_key_safe_browsing_enabled, + ) + -+ safeBrowsingEnabledPreference.setOnPreferenceChangeListener { preference, shouldEnable -> ++ safeBrowsingEnabledPreference.setOnPreferenceChangeListener { preference, safeBrowsingEnabled -> + val settings = preference.context.settings() + val components = preference.context.components + -+ settings.safeBrowsingEnabled = shouldEnable -+ components.core.engine.settings.safeBrowsingEnabled = shouldEnable -+ -+ settings.safeBrowsingPhishingEnabled = shouldEnable -+ components.core.engine.settings.safeBrowsingPhishingEnabled = shouldEnable ++ settings.safeBrowsingEnabled = safeBrowsingEnabled ++ ++ components.core.engine.settings.safeBrowsingEnabled = safeBrowsingEnabled ++ components.core.engine.settings.safeBrowsingPhishingEnabled = safeBrowsingEnabled + + Toast.makeText( + context, @@ -142,15 +141,15 @@ index ad6678f234..743185b9ef 100644 + true + } + } -+ ++ @VisibleForTesting internal fun setupInstallAddonFromFilePreference(settings: Settings) { with(requirePreference(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..b6d118ef12 100644 +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,13 @@ class Settings(private val appContext: Context) : PreferencesHolder { +@@ -786,6 +786,11 @@ class Settings(private val appContext: Context) : PreferencesHolder { val queryParameterStrippingStripList: String get() = queryParameterStrippingSection[QUERY_PARAMETER_STRIPPING_STRIP_LIST].orEmpty() @@ -159,8 +158,6 @@ index 8e271198b0..b6d118ef12 100644 + appContext.getPreferenceKey(R.string.pref_key_safe_browsing_enabled), + default = true, + ) -+ -+ var safeBrowsingPhishingEnabled = safeBrowsingEnabled /** * Declared as a function for performance purposes. This could be declared as a variable using