Loading browser/app/profile/001-base-profile.js +2 −0 Original line number Diff line number Diff line Loading @@ -450,6 +450,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#43402: Avoid a resize from the skeleton to the newwin size. // Should be fixed in ESR-140 with Bug 1448423. pref("browser.startup.blankWindow", false); Loading browser/components/BrowserGlue.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -1915,6 +1915,11 @@ BrowserGlue.prototype = { return false; } // We don't want to mess up with RFP new window / letterboxing machinery. if (Services.prefs.getBoolPref("privacy.resistFingerprinting", false)) { return false; } let width = getValue("width"); let height = getValue("height"); Loading dom/base/nsContentUtils.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2715,6 +2715,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 @@ -411,6 +411,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 +11 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; const kPrefLetterboxingDidForceSize = "privacy.resistFingerprinting.letterboxing.didForceSize"; const kPrefLetterboxingRememberSize = "privacy.resistFingerprinting.letterboxing.rememberSize"; const kTopicDOMWindowOpened = "domwindowopened"; Loading Loading @@ -143,6 +147,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: Loading @@ -150,6 +155,8 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); // fall-through case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); Loading Loading @@ -743,7 +750,10 @@ class _RFPHelper { } _fixRounding(aWindow) { if (!this.rfpEnabled) { if ( !this.rfpEnabled || Services.prefs.getBoolPref(kPrefLetterboxingRememberSize, false) ) { return; } Loading Loading
browser/app/profile/001-base-profile.js +2 −0 Original line number Diff line number Diff line Loading @@ -450,6 +450,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#43402: Avoid a resize from the skeleton to the newwin size. // Should be fixed in ESR-140 with Bug 1448423. pref("browser.startup.blankWindow", false); Loading
browser/components/BrowserGlue.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -1915,6 +1915,11 @@ BrowserGlue.prototype = { return false; } // We don't want to mess up with RFP new window / letterboxing machinery. if (Services.prefs.getBoolPref("privacy.resistFingerprinting", false)) { return false; } let width = getValue("width"); let height = getValue("height"); Loading
dom/base/nsContentUtils.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2715,6 +2715,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 @@ -411,6 +411,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 +11 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ const kPrefLetterboxingVcenter = "privacy.resistFingerprinting.letterboxing.vcenter"; const kPrefLetterboxingGradient = "privacy.resistFingerprinting.letterboxing.gradient"; const kPrefLetterboxingDidForceSize = "privacy.resistFingerprinting.letterboxing.didForceSize"; const kPrefLetterboxingRememberSize = "privacy.resistFingerprinting.letterboxing.rememberSize"; const kTopicDOMWindowOpened = "domwindowopened"; Loading Loading @@ -143,6 +147,7 @@ class _RFPHelper { _handlePrefChanged(data) { switch (data) { case kPrefResistFingerprinting: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); this._handleResistFingerprintingChanged(); break; case kPrefSpoofEnglish: Loading @@ -150,6 +155,8 @@ class _RFPHelper { this._handleSpoofEnglishChanged(); break; case kPrefLetterboxing: Services.prefs.clearUserPref(kPrefLetterboxingDidForceSize); // fall-through case kPrefLetterboxingVcenter: case kPrefLetterboxingGradient: this._handleLetterboxingPrefChanged(); Loading Loading @@ -743,7 +750,10 @@ class _RFPHelper { } _fixRounding(aWindow) { if (!this.rfpEnabled) { if ( !this.rfpEnabled || Services.prefs.getBoolPref(kPrefLetterboxingRememberSize, false) ) { return; } Loading