Files
IronFox/patches/ironfox-content-settings.patch
2025-05-04 00:06:52 -04:00

141 lines
6.4 KiB
Diff

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..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
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.PhoneFeature
import org.mozilla.fenix.settings.requirePreference
+import android.os.Handler
+import android.os.Looper
+import android.widget.Toast
+import kotlin.system.exitProcess
/**
* Screen for managing settings related to site permissions and content defaults.
@@ -44,6 +48,67 @@ class SiteSettingsFragment : PreferenceFragmentCompat() {
override fun onResume() {
super.onResume()
showToolbar(getString(R.string.preferences_site_settings))
+
+ val javascriptEnabledPreference = requirePreference<SwitchPreference>(
+ R.string.pref_key_javascript_enabled,
+ )
+
+ javascriptEnabledPreference.setOnPreferenceChangeListener { preference, javascriptEnabled ->
+ val settings = preference.context.settings()
+ val components = preference.context.components
+
+ settings.javascriptEnabled = javascriptEnabled as Boolean
+ components.core.engine.settings.javascriptEnabled = javascriptEnabled
+
+ true
+ }
+
+ val javascriptJitEnabledPreference = requirePreference<SwitchPreference>(
+ R.string.pref_key_jit_enabled,
+ )
+
+ javascriptJitEnabledPreference.setOnPreferenceChangeListener { preference, javascriptJitEnabled ->
+ val settings = preference.context.settings()
+ val components = preference.context.components
+
+ settings.javascriptJitEnabled = javascriptJitEnabled as Boolean
+
+ 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,
+ getString(R.string.quit_application),
+ Toast.LENGTH_LONG,
+ ).show()
+ Handler(Looper.getMainLooper()).postDelayed(
+ {
+ exitProcess(0)
+ },
+ JIT_OVERRIDE_EXIT_DELAY,
+ )
+ true
+ }
+
+ val wasmEnabledPreference = requirePreference<SwitchPreference>(
+ R.string.pref_key_wasm_enabled,
+ )
+
+ wasmEnabledPreference.setOnPreferenceChangeListener { preference, wasmEnabled ->
+ val settings = preference.context.settings()
+ val components = preference.context.components
+
+ settings.wasmEnabled = wasmEnabled as Boolean
+ components.core.engine.settings.wasmEnabled = wasmEnabled
+
+ true
+ }
+
setupPreferences()
}
@@ -113,4 +178,8 @@ class SiteSettingsFragment : PreferenceFragmentCompat() {
)
}
}
+
+ companion object {
+ private const val JIT_OVERRIDE_EXIT_DELAY = 2000L
+ }
}
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..e5b56bda69 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
@@ -441,6 +441,10 @@
<string name="pref_key_app_cold_start_count" translatable="false">pref_key_app_cold_start_count</string>
<string name="pref_key_app_is_onboarding_set_as_default_displayed" translatable="false">pref_key_app_is_onboarding_set_as_default_displayed</string>
+ <!-- Content Settings -->
+ <string name="pref_key_javascript_enabled" translatable="false">pref_key_javascript_enabled</string>
+ <string name="pref_key_jit_enabled" translatable="false">pref_key_jit_enabled</string>
+ <string name="pref_key_wasm_enabled" translatable="false">pref_key_wasm_enabled</string>
<string name="pref_key_desktop_browsing" translatable="false">pref_key_desktop_browsing</string>
<!-- Crash reporting -->
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..25e429567d 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,28 @@
android:title="@string/preference_feature_desktop_mode_default"
app:iconSpaceReserved="false" />
+ <SwitchPreference
+ android:icon="@drawable/mozac_ic_lock_24"
+ android:defaultValue="true"
+ android:key="@string/pref_key_javascript_enabled"
+ android:title="@string/preference_javascript_enabled"
+ app:iconSpaceReserved="false" />
+
+ <SwitchPreference
+ android:icon="@drawable/mozac_ic_lock_24"
+ android:defaultValue="false"
+ android:key="@string/pref_key_jit_enabled"
+ android:summary="@string/restart_required_summary"
+ android:title="@string/preference_jit_enabled"
+ app:iconSpaceReserved="false" />
+
+ <SwitchPreference
+ android:icon="@drawable/mozac_ic_lock_24"
+ android:defaultValue="true"
+ android:key="@string/pref_key_wasm_enabled"
+ android:title="@string/preference_wasm_enabled"
+ app:iconSpaceReserved="false" />
+
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory