commit 9875ad826552dc5386dc38b6548ef65cbcc0321d
parent 4958c48cef9558cf04518d6444a4cb856601253a
Author: hackademix <giorgio@maone.net>
Date: Mon, 11 Sep 2023 23:48:07 +0200
BB 42084: Ensure English spoofing works even if preferences are set out of order.
Diffstat:
1 file changed, 7 insertions(+), 0 deletions(-)
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.sys.mjs b/toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
@@ -74,6 +74,9 @@ class _RFPHelper {
// Add RFP and Letterboxing observers if prefs are enabled
this._handleResistFingerprintingChanged();
this._handleLetterboxingPrefChanged();
+
+ // Synchronize language preferences if accidentally messed up (tor-browser#42084)
+ this._handleSpoofEnglishChanged();
}
uninit() {
@@ -131,6 +134,7 @@ class _RFPHelper {
this._handleResistFingerprintingChanged();
break;
case kPrefSpoofEnglish:
+ case "intl.accept_languages":
this._handleSpoofEnglishChanged();
break;
case kPrefLetterboxing:
@@ -174,6 +178,7 @@ class _RFPHelper {
}
_handleSpoofEnglishChanged() {
+ Services.prefs.removeObserver("intl.accept_languages", this);
switch (Services.prefs.getIntPref(kPrefSpoofEnglish)) {
case 0: // will prompt
// This should only happen when turning privacy.resistFingerprinting off.
@@ -186,6 +191,8 @@ class _RFPHelper {
break;
case 2: // spoof
Services.prefs.setCharPref("intl.accept_languages", "en-US, en");
+ // Ensure spoofing works if preferences are set out of order
+ Services.prefs.addObserver("intl.accept_languages", this);
break;
default:
break;