mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-01-16 01:48:27 -05:00
ironfox-oss/IronFox!92 ____ ## Changes - [Added a separate toggle in settings to enable/disable JIT for **extensions**](48a42e213a) when JIT is otherwise disabled globally *(**Disabled** by default)*, located at `Settings` -> `IronFox` -> `IronFox settings` -> `Security` -> **`Enable JavaScript Just-in-time Compilation (JIT) for extensions`**. - [Added support for natively enabling/disabling WebGL per-site](5e1acb19a6) via FPP overrides. **It is now recommended to disable the uBlock Origin `Block WebGL` lists** *(The `Block WebGL` lists will be removed from the uBlock Origin config entirely in the near future, but we're keeping them for now to ex. give users time to update)*. See [Notes](#notes) below for details, such as how you can manually allow desired websites to use WebGL. - [Added a toggle in settings to enable or disable our default WebGL overrides](c9298799ee) *(**Enabled** by default)*, located at `Settings` -> `IronFox` -> `IronFox settings` -> `Privacy` -> **`Enable WebGL overrides from IronFox`**. When WebGL is enabled, this setting enables WebGL by default for certain websites, to reduce breakage/unexpected behavior. Note that this list is **NOT** fetched/updated remotely. - [Added a toggle in settings to enable or disable spoofing the timezone to `UTC-0`](c8cb5064e4) *(**Disabled** by default)*, located at `Settings` -> `IronFox` -> `IronFox settings` -> `Privacy` -> **`Spoof timezone to UTC-0`**. - [Added a toggle in settings to enable or disable our default timezone overrides](c8cb5064e4) *(**Enabled** by default)*, located at `Settings` -> `IronFox` -> `IronFox settings` -> `Privacy` -> **`Enable timezone spoofing overrides from IronFox`**. When timezone spoofing is enabled, this setting disables timezone spoofing by default for certain websites, to reduce breakage/unexpected behavior. Note that this list is **NOT** fetched/updated remotely. - [Added a toggle in settings to enable or disable *Mozilla's* default fingerprinting protection overrides](64e3706be8) to reduce website breakage *(**Enabled** by default)*, located at `Settings` -> `IronFox` -> `IronFox settings` -> `Privacy` -> **`Enable fingerprinting protection overrides from Mozilla`**. Note that this list **IS** fetched/updated remotely. - [Added a toggle in settings to enable or disable *our* default fingerprinting protection overrides](64e3706be8) to reduce website breakage *(**Enabled** by default)*, located at `Settings` -> `IronFox` -> `IronFox settings` -> `Privacy` -> **`Enable fingerprinting protection overrides from IronFox`**. This toggle does **not** disable fingerprinting protection overrides that we set to **harden** protection for certain websites. Note that this list is **NOT** fetched/updated remotely. - [Implemented](522770b2dc) [Phoenix's extension blocklist](https://codeberg.org/celenity/Phoenix/src/branch/pages/build/policies/blocklist.json) to block malicious/phishing/sketchy extensions. - [Locked Gecko preferences controlled by UI settings](bc9df5c52c) *(See [details](https://gitlab.com/ironfox-oss/IronFox/-/blob/dev/docs/FAQ.md#why-are-certain-preferences-locked))*. - [Prevented the JIT toggle from controlling `javascript.options.main_process_disable_jit`](8171a4da48), as this pref is not required for JIT to function, and is preferable to leave on - even when JIT is enabled, to improve security. - Updated to Firefox [`144.0`](https://firefox.com/firefox/android/144.0/releasenotes/). - Updated microG to [`v0.3.10.250932`](https://github.com/microg/GmsCore/releases/tag/v0.3.10.250932). - Updated Phoenix to [`2025.10.12.1`](https://codeberg.org/celenity/Phoenix/releases/tag/2025.10.12.1). - [Other minor tweaks, adjustments, and enhancements](https://gitlab.com/ironfox-oss/IronFox/-/merge_requests/92/diffs). ## Notes You can manually allow websites to use WebGL with the `privacy.fingerprintingProtection.granularOverrides` preference at `about:config`. For instance, if I want to allow **`example.com`** to use WebGL, I would set the value of `privacy.fingerprintingProtection.granularOverrides` to: ```sh [{"firstPartyDomain":"example.com","overrides":"-DisableWebGL"}] ``` If I *also* wanted to allow `example2.com`, I'd set the value to: ```sh [{"firstPartyDomain":"example.com","overrides":"-DisableWebGL"},{"firstPartyDomain":"example2.com","overrides":"-DisableWebGL"}] ``` **[Please report websites that require WebGL to us if possible](https://gitlab.com/ironfox-oss/IronFox/-/issues)**, so that we can investigate and potentially add them to the default WebGL overrides list. MR-author: celenity <celenity@celenity.dev> Co-authored-by: Weblate <hosted@weblate.org> Co-authored-by: Akash Yadav <itsaky01@gmail.com> Approved-by: celenity <celenity@celenity.dev> Merged-by: celenity <celenity@celenity.dev>
236 lines
10 KiB
Diff
236 lines
10 KiB
Diff
diff --git a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
|
|
index 20d615e..ddaa6e1 100644
|
|
--- a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
|
|
+++ b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
|
|
@@ -159,12 +159,12 @@ enum class KeyRegenerationEventReason {
|
|
|
|
fun recordKeyRegenerationEvent(reason: KeyRegenerationEventReason) {
|
|
// Avoid the deprecation warning when calling `record()` without the optional EventExtras param
|
|
- @Suppress("DEPRECATION")
|
|
+/* @Suppress("DEPRECATION")
|
|
when (reason) {
|
|
KeyRegenerationEventReason.Lost -> LoginsStoreMetrics.keyRegeneratedLost.record()
|
|
KeyRegenerationEventReason.Corrupt -> LoginsStoreMetrics.keyRegeneratedCorrupt.record()
|
|
KeyRegenerationEventReason.Other -> LoginsStoreMetrics.keyRegeneratedOther.record()
|
|
- }
|
|
+ }*/
|
|
}
|
|
|
|
/**
|
|
@@ -177,14 +177,14 @@ fun recordKeyRegenerationEvent(reason: KeyRegenerationEventReason) {
|
|
* This is a convenience wrapper to measure the two in one shot.
|
|
*/
|
|
class LoginsStoreCounterMetrics(
|
|
- val count: CounterMetricType,
|
|
- val errCount: LabeledMetricType<CounterMetricType>,
|
|
+// val count: CounterMetricType,
|
|
+// val errCount: LabeledMetricType<CounterMetricType>,
|
|
) {
|
|
inline fun <U> measure(callback: () -> U): U {
|
|
- return measureIgnoring({ false }, callback)
|
|
+ return callback()
|
|
}
|
|
|
|
- @Suppress("ComplexMethod", "TooGenericExceptionCaught")
|
|
+/* @Suppress("ComplexMethod", "TooGenericExceptionCaught")
|
|
inline fun <U> measureIgnoring(
|
|
shouldIgnore: (Exception) -> Boolean,
|
|
callback: () -> U,
|
|
@@ -215,5 +215,5 @@ class LoginsStoreCounterMetrics(
|
|
}
|
|
throw e
|
|
}
|
|
- }
|
|
+ }*/
|
|
}
|
|
diff --git a/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt b/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt
|
|
index f77d82a..40bcadd 100644
|
|
--- a/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt
|
|
+++ b/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt
|
|
@@ -26,10 +26,10 @@ import kotlinx.coroutines.runBlocking
|
|
import kotlinx.coroutines.withContext
|
|
import mozilla.appservices.remotesettings.RemoteSettingsConfig
|
|
import mozilla.appservices.remotesettings.RemoteSettingsServer
|
|
-import mozilla.telemetry.glean.Glean
|
|
+// import mozilla.telemetry.glean.Glean
|
|
import org.json.JSONObject
|
|
-import org.mozilla.experiments.nimbus.GleanMetrics.NimbusEvents
|
|
-import org.mozilla.experiments.nimbus.GleanMetrics.NimbusHealth
|
|
+// import org.mozilla.experiments.nimbus.GleanMetrics.NimbusEvents
|
|
+// import org.mozilla.experiments.nimbus.GleanMetrics.NimbusHealth
|
|
import org.mozilla.experiments.nimbus.internal.AppContext
|
|
import org.mozilla.experiments.nimbus.internal.AvailableExperiment
|
|
import org.mozilla.experiments.nimbus.internal.EnrolledExperiment
|
|
@@ -93,7 +93,7 @@ open class Nimbus(
|
|
|
|
private val metricsHandler = object : MetricsHandler {
|
|
override fun recordEnrollmentStatuses(enrollmentStatusExtras: List<EnrollmentStatusExtraDef>) {
|
|
- for (extra in enrollmentStatusExtras) {
|
|
+/* for (extra in enrollmentStatusExtras) {
|
|
NimbusEvents.enrollmentStatus.record(
|
|
NimbusEvents.EnrollmentStatusExtra(
|
|
branch = extra.branch,
|
|
@@ -104,38 +104,38 @@ open class Nimbus(
|
|
conflictSlug = extra.conflictSlug,
|
|
),
|
|
)
|
|
- }
|
|
+ }*/
|
|
}
|
|
|
|
override fun recordFeatureActivation(event: FeatureExposureExtraDef) {
|
|
- NimbusEvents.activation.record(
|
|
+/* NimbusEvents.activation.record(
|
|
NimbusEvents.ActivationExtra(
|
|
experiment = event.slug,
|
|
branch = event.branch,
|
|
featureId = event.featureId,
|
|
),
|
|
- )
|
|
+ )*/
|
|
}
|
|
|
|
override fun recordFeatureExposure(event: FeatureExposureExtraDef) {
|
|
- NimbusEvents.exposure.record(
|
|
+/* NimbusEvents.exposure.record(
|
|
NimbusEvents.ExposureExtra(
|
|
experiment = event.slug,
|
|
branch = event.branch,
|
|
featureId = event.featureId,
|
|
),
|
|
- )
|
|
+ )*/
|
|
}
|
|
|
|
override fun recordMalformedFeatureConfig(event: MalformedFeatureConfigExtraDef) {
|
|
- NimbusEvents.malformedFeature.record(
|
|
+/* NimbusEvents.malformedFeature.record(
|
|
NimbusEvents.MalformedFeatureExtra(
|
|
experiment = event.slug,
|
|
branch = event.branch,
|
|
featureId = event.featureId,
|
|
partId = event.part,
|
|
),
|
|
- )
|
|
+ )*/
|
|
}
|
|
}
|
|
|
|
@@ -221,11 +221,11 @@ open class Nimbus(
|
|
try {
|
|
nimbusClient.getFeatureConfigVariables(featureId)?.let { JSONObject(it) }
|
|
} catch (e: NimbusException.DatabaseNotReady) {
|
|
- NimbusHealth.cacheNotReadyForFeature.record(
|
|
+/* NimbusHealth.cacheNotReadyForFeature.record(
|
|
NimbusHealth.CacheNotReadyForFeatureExtra(
|
|
featureId = featureId,
|
|
),
|
|
- )
|
|
+ )*/
|
|
null
|
|
} catch (e: Throwable) {
|
|
reportError("getFeatureConfigVariablesJson", e)
|
|
@@ -301,9 +301,9 @@ open class Nimbus(
|
|
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
|
internal fun fetchExperimentsOnThisThread() = withCatchAll("fetchExperiments") {
|
|
try {
|
|
- NimbusHealth.fetchExperimentsTime.measure {
|
|
- nimbusClient.fetchExperiments()
|
|
- }
|
|
+ nimbusClient.fetchExperiments()
|
|
+// nimbusClient.fetchExperiments()
|
|
+// }
|
|
updateObserver {
|
|
it.onExperimentsFetched()
|
|
}
|
|
@@ -338,7 +338,7 @@ open class Nimbus(
|
|
val time = measureTimeMillis {
|
|
events = nimbusClient.applyPendingExperiments()
|
|
}
|
|
- NimbusHealth.applyPendingExperimentsTime.accumulateSingleSample(time)
|
|
+// NimbusHealth.applyPendingExperimentsTime.accumulateSingleSample(time)
|
|
recordExperimentTelemetryEvents(events!!)
|
|
// Get the experiments to record in telemetry
|
|
postEnrolmentCalculation()
|
|
@@ -534,19 +534,19 @@ open class Nimbus(
|
|
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
|
internal fun recordExperimentTelemetry(experiments: List<EnrolledExperiment>) {
|
|
// Call Glean.setExperimentActive() for each active experiment.
|
|
- experiments.forEach { experiment ->
|
|
+/* experiments.forEach { experiment ->
|
|
// For now, we will just record the experiment id and the branch id. Once we can call
|
|
// Glean from Rust, this will move to the nimbus-sdk Rust core.
|
|
Glean.setExperimentActive(
|
|
experiment.slug,
|
|
experiment.branchSlug,
|
|
)
|
|
- }
|
|
+ }*/
|
|
}
|
|
|
|
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
|
internal fun recordExperimentTelemetryEvents(enrollmentChangeEvents: List<EnrollmentChangeEvent>) {
|
|
- enrollmentChangeEvents.forEach { event ->
|
|
+/* enrollmentChangeEvents.forEach { event ->
|
|
when (event.change) {
|
|
EnrollmentChangeEventType.ENROLLMENT -> {
|
|
NimbusEvents.enrollment.record(
|
|
@@ -594,7 +594,7 @@ open class Nimbus(
|
|
)
|
|
}
|
|
}
|
|
- }
|
|
+ }*/
|
|
}
|
|
|
|
// The exposure event should be recorded when the expected treatment (or no-treatment, such as
|
|
diff --git a/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt b/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
|
|
index 7d69d6a..f73c2a0 100644
|
|
--- a/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
|
|
+++ b/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
|
|
@@ -349,7 +349,7 @@ class PlacesWriterConnection internal constructor(conn: UniffiPlacesConnection,
|
|
|
|
@Suppress("MagicNumber")
|
|
override fun runMaintenance(dbSizeLimit: UInt) {
|
|
- val pruneMetrics = PlacesManagerMetrics.runMaintenanceTime.measure {
|
|
+/* val pruneMetrics = PlacesManagerMetrics.runMaintenanceTime.measure {
|
|
val pruneMetrics = PlacesManagerMetrics.runMaintenancePruneTime.measure {
|
|
this.conn.runMaintenancePrune(dbSizeLimit, 12U)
|
|
}
|
|
@@ -367,7 +367,7 @@ class PlacesWriterConnection internal constructor(conn: UniffiPlacesConnection,
|
|
}
|
|
pruneMetrics
|
|
}
|
|
- PlacesManagerMetrics.dbSizeAfterMaintenance.accumulateSamples(listOf(pruneMetrics.dbSizeAfter.toLong() / 1024))
|
|
+ PlacesManagerMetrics.dbSizeAfterMaintenance.accumulateSamples(listOf(pruneMetrics.dbSizeAfter.toLong() / 1024))*/
|
|
}
|
|
|
|
override fun deleteEverything() {
|
|
@@ -932,13 +932,13 @@ data class HistoryMetadataKey(
|
|
* This is a convenience wrapper to measure the two in one shot.
|
|
*/
|
|
class PlacesManagerCounterMetrics(
|
|
- val count: CounterMetricType,
|
|
- val errCount: LabeledMetricType<CounterMetricType>,
|
|
+// val count: CounterMetricType,
|
|
+// val errCount: LabeledMetricType<CounterMetricType>,
|
|
) {
|
|
- @Suppress("ComplexMethod", "TooGenericExceptionCaught")
|
|
+// @Suppress("ComplexMethod", "TooGenericExceptionCaught")
|
|
inline fun <U> measure(callback: () -> U): U {
|
|
- count.add()
|
|
- try {
|
|
+ return callback()
|
|
+/* try {
|
|
return callback()
|
|
} catch (e: Exception) {
|
|
when (e) {
|
|
@@ -965,6 +965,6 @@ class PlacesManagerCounterMetrics(
|
|
}
|
|
}
|
|
throw e
|
|
- }
|
|
+ }*/
|
|
}
|
|
}
|