Loading browser/app/profile/001-base-profile.js +2 −0 Original line number Diff line number Diff line Loading @@ -441,6 +441,8 @@ pref("privacy.resistFingerprinting.letterboxing", true); pref("privacy.resistFingerprinting.letterboxing.vcenter", true); // tor-browser#41917: Letterboxing gradient background pref("privacy.resistFingerprinting.letterboxing.gradient", true); // tor-browser#41918: Should we reuse last window sizes if letterboxing is enabled pref("privacy.resistFingerprinting.letterboxing.rememberSize", false); // Enforce Network Information API as disabled pref("dom.netinfo.enabled", false); pref("network.http.referer.defaultPolicy", 2); // Bug 32948: Make referer behavior consistent regardless of private browing mode status Loading browser/components/BrowserGlue.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -1874,6 +1874,11 @@ BrowserGlue.prototype = { return; } // We don't want to mess up with RFP new window / letterboxing machinery. if (Services.prefs.getBoolPref("privacy.resistFingerprinting", false)) { return; } let store = Services.xulStore; let getValue = attr => store.getValue(AppConstants.BROWSER_CHROME_URL, "main-window", attr); Loading dom/base/nsContentUtils.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2754,6 +2754,18 @@ void nsContentUtils::CalcRoundedWindowSizeForResistingFingerprinting( *aOutputHeight = resultHeight; } bool nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting() { return !( Preferences::GetBool("privacy.resistFingerprinting.letterboxing", false) && // We want to round window size at least once in the browser's life time: // AppWindow::ForceRoundedDimensions() will set this preference to true. Preferences::GetBool( "privacy.resistFingerprinting.letterboxing.didForceSize", false) && Preferences::GetBool( "privacy.resistFingerprinting.letterboxing.rememberSize", false)); } bool nsContentUtils::ThreadsafeIsCallerChrome() { return NS_IsMainThread() ? IsCallerChrome() : IsCurrentThreadRunningChromeWorker(); Loading dom/base/nsContentUtils.h +4 −0 Original line number Diff line number Diff line Loading @@ -407,6 +407,10 @@ class nsContentUtils { bool aSetOuterWidth, bool aSetOuterHeight, int32_t* aOutputWidth, int32_t* aOutputHeight); // Tell if we actually want to round size of new windows for RFP, // depending on letterboxing status and user's preference. static bool ShouldRoundWindowSizeForResistingFingerprinting(); /** * Returns the parent node of aChild crossing document boundaries, but skips * any cross-process parent frames and continues with the nearest in-process Loading toolkit/components/resistfingerprinting/RFPHelper.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; const kPrefLetterboxingDidForceSize = "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; Loading Loading @@ -142,6 +144,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: Loading @@ -149,6 +152,8 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); // fall-through case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); Loading Loading
browser/app/profile/001-base-profile.js +2 −0 Original line number Diff line number Diff line Loading @@ -441,6 +441,8 @@ pref("privacy.resistFingerprinting.letterboxing", true); pref("privacy.resistFingerprinting.letterboxing.vcenter", true); // tor-browser#41917: Letterboxing gradient background pref("privacy.resistFingerprinting.letterboxing.gradient", true); // tor-browser#41918: Should we reuse last window sizes if letterboxing is enabled pref("privacy.resistFingerprinting.letterboxing.rememberSize", false); // Enforce Network Information API as disabled pref("dom.netinfo.enabled", false); pref("network.http.referer.defaultPolicy", 2); // Bug 32948: Make referer behavior consistent regardless of private browing mode status Loading
browser/components/BrowserGlue.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -1874,6 +1874,11 @@ BrowserGlue.prototype = { return; } // We don't want to mess up with RFP new window / letterboxing machinery. if (Services.prefs.getBoolPref("privacy.resistFingerprinting", false)) { return; } let store = Services.xulStore; let getValue = attr => store.getValue(AppConstants.BROWSER_CHROME_URL, "main-window", attr); Loading
dom/base/nsContentUtils.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2754,6 +2754,18 @@ void nsContentUtils::CalcRoundedWindowSizeForResistingFingerprinting( *aOutputHeight = resultHeight; } bool nsContentUtils::ShouldRoundWindowSizeForResistingFingerprinting() { return !( Preferences::GetBool("privacy.resistFingerprinting.letterboxing", false) && // We want to round window size at least once in the browser's life time: // AppWindow::ForceRoundedDimensions() will set this preference to true. Preferences::GetBool( "privacy.resistFingerprinting.letterboxing.didForceSize", false) && Preferences::GetBool( "privacy.resistFingerprinting.letterboxing.rememberSize", false)); } bool nsContentUtils::ThreadsafeIsCallerChrome() { return NS_IsMainThread() ? IsCallerChrome() : IsCurrentThreadRunningChromeWorker(); Loading
dom/base/nsContentUtils.h +4 −0 Original line number Diff line number Diff line Loading @@ -407,6 +407,10 @@ class nsContentUtils { bool aSetOuterWidth, bool aSetOuterHeight, int32_t* aOutputWidth, int32_t* aOutputHeight); // Tell if we actually want to round size of new windows for RFP, // depending on letterboxing status and user's preference. static bool ShouldRoundWindowSizeForResistingFingerprinting(); /** * Returns the parent node of aChild crossing document boundaries, but skips * any cross-process parent frames and continues with the nearest in-process Loading
toolkit/components/resistfingerprinting/RFPHelper.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; const kPrefLetterboxingDidForceSize = "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; Loading Loading @@ -142,6 +144,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: Loading @@ -149,6 +152,8 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); // fall-through case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); Loading