Loading browser/app/profile/001-base-profile.js +2 −0 Original line number Diff line number Diff line Loading @@ -377,6 +377,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); // tor-browser#33282: new windows start at 1400x900 when there's enough screen space, otherwise down by 200x100 blocks pref("privacy.window.maxInnerWidth", 1400); pref("privacy.window.maxInnerHeight", 900); Loading browser/components/BrowserGlue.sys.mjs +7 −0 Original line number Diff line number Diff line Loading @@ -1680,6 +1680,13 @@ 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 @@ -2663,6 +2663,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 @@ -406,6 +406,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 +4 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; const kPrefLetterboxingDidForceSize = "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; Loading Loading @@ -141,6 +143,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: Loading @@ -148,6 +151,7 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); 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 @@ -377,6 +377,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); // tor-browser#33282: new windows start at 1400x900 when there's enough screen space, otherwise down by 200x100 blocks pref("privacy.window.maxInnerWidth", 1400); pref("privacy.window.maxInnerHeight", 900); Loading
browser/components/BrowserGlue.sys.mjs +7 −0 Original line number Diff line number Diff line Loading @@ -1680,6 +1680,13 @@ 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 @@ -2663,6 +2663,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 @@ -406,6 +406,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 +4 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; const kPrefLetterboxingDidForceSize = "privacy.resistFingerprinting.letterboxing.didForceSize"; const kTopicDOMWindowOpened = "domwindowopened"; Loading Loading @@ -141,6 +143,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: Loading @@ -148,6 +151,7 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); Loading