Pier Angelo Vendrame pushed to branch base-browser-115.4.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
2d2fd4cb
by Pier Angelo Vendrame at 2023-11-16T13:36:51+01:00
-
c6af08e3
by Pier Angelo Vendrame at 2023-11-16T13:36:52+01:00
4 changed files:
- browser/app/profile/001-base-profile.js
- browser/app/profile/firefox.js
- browser/base/content/tabbrowser.js
- browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js
Changes:
... | ... | @@ -86,6 +86,12 @@ pref("browser.sessionstore.resume_from_crash", false); |
86 | 86 | // Disable capturing thumbnails (tor-browser#41595)
|
87 | 87 | // Also not needed in PBM at the moment.
|
88 | 88 | pref("browser.pagethumbnails.capturing_disabled", true);
|
89 | +// tor-browser#41988: Remove page titles from window titles to prevent possible
|
|
90 | +// disk leaks, e.g., in system logs.
|
|
91 | +// For example, it happened that GNOME shell logged the window name that caused
|
|
92 | +// JS errors/unexpected conditions for unrelated issues.
|
|
93 | +pref("privacy.exposeContentTitleInWindow", false);
|
|
94 | +pref("privacy.exposeContentTitleInWindow.pbm", false);
|
|
89 | 95 | |
90 | 96 | // Empty clipboard content from private windows on exit (tor-browser#42154)
|
91 | 97 | pref("browser.privatebrowsing.preserveClipboard", false);
|
... | ... | @@ -968,7 +968,7 @@ pref("privacy.panicButton.enabled", true); |
968 | 968 | // Time until temporary permissions expire, in ms
|
969 | 969 | pref("privacy.temporary_permission_expire_time_ms", 3600000);
|
970 | 970 | |
971 | -// Enables protection mechanism against password spoofing for cross domain auh requests
|
|
971 | +// Enables protection mechanism against password spoofing for cross domain auth requests
|
|
972 | 972 | // See bug 791594
|
973 | 973 | pref("privacy.authPromptSpoofingProtection", true);
|
974 | 974 | |
... | ... | @@ -2104,6 +2104,12 @@ pref("privacy.webrtc.sharedTabWarning", false); |
2104 | 2104 | // before navigating to the actual meeting room page. Doesn't survive tab close.
|
2105 | 2105 | pref("privacy.webrtc.deviceGracePeriodTimeoutMs", 3600000);
|
2106 | 2106 | |
2107 | +// Enable including the content in the window title.
|
|
2108 | +// PBM users might want to disable this to avoid a possible source of disk
|
|
2109 | +// leaks.
|
|
2110 | +pref("privacy.exposeContentTitleInWindow", true);
|
|
2111 | +pref("privacy.exposeContentTitleInWindow.pbm", true);
|
|
2112 | + |
|
2107 | 2113 | // Start the browser in e10s mode
|
2108 | 2114 | pref("browser.tabs.remote.autostart", true);
|
2109 | 2115 | pref("browser.tabs.remote.desktopbehavior", true);
|
... | ... | @@ -102,6 +102,18 @@ |
102 | 102 | true
|
103 | 103 | );
|
104 | 104 | });
|
105 | + XPCOMUtils.defineLazyPreferenceGetter(
|
|
106 | + this,
|
|
107 | + "_shouldExposeContentTitle",
|
|
108 | + "privacy.exposeContentTitleInWindow",
|
|
109 | + true
|
|
110 | + );
|
|
111 | + XPCOMUtils.defineLazyPreferenceGetter(
|
|
112 | + this,
|
|
113 | + "_shouldExposeContentTitlePbm",
|
|
114 | + "privacy.exposeContentTitleInWindow.pbm",
|
|
115 | + true
|
|
116 | + );
|
|
105 | 117 | |
106 | 118 | if (AppConstants.MOZ_CRASHREPORTER) {
|
107 | 119 | ChromeUtils.defineModuleGetter(
|
... | ... | @@ -1072,6 +1084,19 @@ |
1072 | 1084 | getWindowTitleForBrowser(aBrowser) {
|
1073 | 1085 | let docElement = document.documentElement;
|
1074 | 1086 | let title = "";
|
1087 | + let dataSuffix =
|
|
1088 | + docElement.getAttribute("privatebrowsingmode") == "temporary"
|
|
1089 | + ? "Private"
|
|
1090 | + : "Default";
|
|
1091 | + let defaultTitle = docElement.dataset["title" + dataSuffix];
|
|
1092 | + |
|
1093 | + if (
|
|
1094 | + !this._shouldExposeContentTitle ||
|
|
1095 | + (PrivateBrowsingUtils.isWindowPrivate(window) &&
|
|
1096 | + !this._shouldExposeContentTitlePbm)
|
|
1097 | + ) {
|
|
1098 | + return defaultTitle;
|
|
1099 | + }
|
|
1075 | 1100 | |
1076 | 1101 | // If location bar is hidden and the URL type supports a host,
|
1077 | 1102 | // add the scheme and host to the title to prevent spoofing.
|
... | ... | @@ -1109,10 +1134,6 @@ |
1109 | 1134 | title += tab.getAttribute("label").replace(/\0/g, "");
|
1110 | 1135 | }
|
1111 | 1136 | |
1112 | - let dataSuffix =
|
|
1113 | - docElement.getAttribute("privatebrowsingmode") == "temporary"
|
|
1114 | - ? "Private"
|
|
1115 | - : "Default";
|
|
1116 | 1137 | if (title) {
|
1117 | 1138 | // We're using a function rather than just using `title` as the
|
1118 | 1139 | // new substring to avoid `$$`, `$'` etc. having a special
|
... | ... | @@ -1125,7 +1146,7 @@ |
1125 | 1146 | );
|
1126 | 1147 | }
|
1127 | 1148 | |
1128 | - return docElement.dataset["title" + dataSuffix];
|
|
1149 | + return defaultTitle;
|
|
1129 | 1150 | },
|
1130 | 1151 | |
1131 | 1152 | updateTitlebar() {
|
... | ... | @@ -107,4 +107,34 @@ add_task(async function test() { |
107 | 107 | true,
|
108 | 108 | pb_about_pb_title
|
109 | 109 | );
|
110 | + |
|
111 | + await SpecialPowers.pushPrefEnv({
|
|
112 | + set: [["privacy.exposeContentTitleInWindow.pbm", false]],
|
|
113 | + });
|
|
114 | + await testTabTitle(await openWin(false), testPageURL, false, page_with_title);
|
|
115 | + await testTabTitle(
|
|
116 | + await openWin(true),
|
|
117 | + testPageURL,
|
|
118 | + true,
|
|
119 | + pb_page_without_title
|
|
120 | + );
|
|
121 | + await SpecialPowers.pushPrefEnv({
|
|
122 | + set: [
|
|
123 | + ["privacy.exposeContentTitleInWindow", false],
|
|
124 | + ["privacy.exposeContentTitleInWindow.pbm", true],
|
|
125 | + ],
|
|
126 | + });
|
|
127 | + await testTabTitle(
|
|
128 | + await openWin(false),
|
|
129 | + testPageURL,
|
|
130 | + false,
|
|
131 | + page_without_title
|
|
132 | + );
|
|
133 | + // The generic preference set to false is intended to override the PBM one
|
|
134 | + await testTabTitle(
|
|
135 | + await openWin(true),
|
|
136 | + testPageURL,
|
|
137 | + true,
|
|
138 | + pb_page_without_title
|
|
139 | + );
|
|
110 | 140 | }); |