tbb-commits
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 18691 discussions

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
by ma1 (@ma1) 26 Mar '24
by ma1 (@ma1) 26 Mar '24
26 Mar '24
ma1 pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
8e8ac7a1 by Nika Layzell at 2024-03-26T18:23:53+01:00
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Differential Revision: https://phabricator.services.mozilla.com/D205377
- - - - -
1 changed file:
- browser/components/sessionstore/SessionStore.sys.mjs
Changes:
=====================================
browser/components/sessionstore/SessionStore.sys.mjs
=====================================
@@ -1422,6 +1422,13 @@ var SessionStoreInternal = {
* and thus enables communication with OOP tabs.
*/
receiveMessage(aMessage) {
+ if (Services.appinfo.sessionHistoryInParent) {
+ throw new Error(
+ `received unexpected message '${aMessage.name}' with ` +
+ `sessionHistoryInParent enabled`
+ );
+ }
+
// If we got here, that means we're dealing with a frame message
// manager message, so the target will be a <xul:browser>.
var browser = aMessage.target;
@@ -1600,14 +1607,14 @@ var SessionStoreInternal = {
// internal data about the window.
aWindow.__SSi = this._generateWindowID();
- let mm = aWindow.getGroupMessageManager("browsers");
- MESSAGES.forEach(msg => {
- let listenWhenClosed = CLOSED_MESSAGES.has(msg);
- mm.addMessageListener(msg, this, listenWhenClosed);
- });
-
- // Load the frame script after registering listeners.
if (!Services.appinfo.sessionHistoryInParent) {
+ let mm = aWindow.getGroupMessageManager("browsers");
+ MESSAGES.forEach(msg => {
+ let listenWhenClosed = CLOSED_MESSAGES.has(msg);
+ mm.addMessageListener(msg, this, listenWhenClosed);
+ });
+
+ // Load the frame script after registering listeners.
mm.loadFrameScript(
"chrome://browser/content/content-sessionStore.js",
true,
@@ -2083,8 +2090,10 @@ var SessionStoreInternal = {
// Cache the window state until it is completely gone.
DyingWindowCache.set(aWindow, winData);
- let mm = aWindow.getGroupMessageManager("browsers");
- MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));
+ if (!Services.appinfo.sessionHistoryInParent) {
+ let mm = aWindow.getGroupMessageManager("browsers");
+ MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));
+ }
this._saveableClosedWindowData.delete(winData);
delete aWindow.__SSi;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e8ac7a…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e8ac7a…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] Bug 42472: Spoof timezone in XSLT.
by Pier Angelo Vendrame (@pierov) 26 Mar '24
by Pier Angelo Vendrame (@pierov) 26 Mar '24
26 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
a18ee3be by Pier Angelo Vendrame at 2024-03-26T18:21:50+01:00
Bug 42472: Spoof timezone in XSLT.
- - - - -
1 changed file:
- dom/xslt/xslt/txEXSLTFunctions.cpp
Changes:
=====================================
dom/xslt/xslt/txEXSLTFunctions.cpp
=====================================
@@ -591,7 +591,14 @@ nsresult txEXSLTFunctionCall::evaluate(txIEvalContext* aContext,
// http://exslt.org/date/functions/date-time/
PRExplodedTime prtime;
- PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &prtime);
+ PR_ExplodeTime(
+ PR_Now(),
+ // We are not allowed to access the Document when evaluating this, so
+ // fall back to the general function.
+ nsContentUtils::ShouldResistFingerprinting(RFPTarget::Unknown)
+ ? PR_GMTParameters
+ : PR_LocalTimeParameters,
+ &prtime);
int32_t offset =
(prtime.tm_params.tp_gmt_offset + prtime.tm_params.tp_dst_offset) /
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a18…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a18…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 42472: Spoof timezone in XSLT.
by Pier Angelo Vendrame (@pierov) 26 Mar '24
by Pier Angelo Vendrame (@pierov) 26 Mar '24
26 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
d81946dd by Pier Angelo Vendrame at 2024-03-26T18:21:17+01:00
Bug 42472: Spoof timezone in XSLT.
- - - - -
1 changed file:
- dom/xslt/xslt/txEXSLTFunctions.cpp
Changes:
=====================================
dom/xslt/xslt/txEXSLTFunctions.cpp
=====================================
@@ -591,7 +591,14 @@ nsresult txEXSLTFunctionCall::evaluate(txIEvalContext* aContext,
// http://exslt.org/date/functions/date-time/
PRExplodedTime prtime;
- PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &prtime);
+ PR_ExplodeTime(
+ PR_Now(),
+ // We are not allowed to access the Document when evaluating this, so
+ // fall back to the general function.
+ nsContentUtils::ShouldResistFingerprinting(RFPTarget::Unknown)
+ ? PR_GMTParameters
+ : PR_LocalTimeParameters,
+ &prtime);
int32_t offset =
(prtime.tm_params.tp_gmt_offset + prtime.tm_params.tp_dst_offset) /
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d81946d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d81946d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] Bug 42472: Spoof timezone in XSLT.
by Pier Angelo Vendrame (@pierov) 26 Mar '24
by Pier Angelo Vendrame (@pierov) 26 Mar '24
26 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
570b6c56 by Pier Angelo Vendrame at 2024-03-26T18:04:32+01:00
Bug 42472: Spoof timezone in XSLT.
- - - - -
1 changed file:
- dom/xslt/xslt/txEXSLTFunctions.cpp
Changes:
=====================================
dom/xslt/xslt/txEXSLTFunctions.cpp
=====================================
@@ -591,7 +591,14 @@ nsresult txEXSLTFunctionCall::evaluate(txIEvalContext* aContext,
// http://exslt.org/date/functions/date-time/
PRExplodedTime prtime;
- PR_ExplodeTime(PR_Now(), PR_LocalTimeParameters, &prtime);
+ PR_ExplodeTime(
+ PR_Now(),
+ // We are not allowed to access the Document when evaluating this, so
+ // fall back to the general function.
+ nsContentUtils::ShouldResistFingerprinting(RFPTarget::Unknown)
+ ? PR_GMTParameters
+ : PR_LocalTimeParameters,
+ &prtime);
int32_t offset =
(prtime.tm_params.tp_gmt_offset + prtime.tm_params.tp_dst_offset) /
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/570b6c5…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/570b6c5…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] 3 commits: Revert "fixup! Tor Browser localization migration scripts."
by richard (@richard) 25 Mar '24
by richard (@richard) 25 Mar '24
25 Mar '24
richard pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
e32712bc by Richard Pospesel at 2024-03-25T22:19:40+00:00
Revert "fixup! Tor Browser localization migration scripts."
This reverts commit a8282d9ca507994cf21025f22c6ba3e13d5e3973.
- - - - -
edaaba1d by Henry Wilkes at 2024-03-25T22:25:35+00:00
fixup! Bug 40925: Implemented the Security Level component
Bug 42214: Migrate security level strings to Fluent.
- - - - -
a166803d by Henry Wilkes at 2024-03-25T22:27:49+00:00
fixup! Base Browser strings
Bug 42214: Migrate security level strings to Fluent.
Also change some strings to be sentence case in English.
- - - - -
7 changed files:
- browser/components/preferences/preferences.xhtml
- browser/components/securitylevel/content/securityLevel.js
- browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
- browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- browser/locales/en-US/browser/base-browser.ftl
- browser/locales/jar.mn
- − tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
Changes:
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -58,6 +58,7 @@
<link rel="localization" href="security/certificates/certManager.ftl"/>
<link rel="localization" href="security/certificates/deviceManager.ftl"/>
<link rel="localization" href="toolkit/updates/history.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/mullvad-browser/preferences.ftl"/>
<link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/>
=====================================
browser/components/securitylevel/content/securityLevel.js
=====================================
@@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/SecurityLevel.jsm"
);
-XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => {
- let strings = {
- // Generic terms
- security_level: "Security Level",
- security_level_standard: "Standard",
- security_level_safer: "Safer",
- security_level_safest: "Safest",
- security_level_tooltip_standard: "Security Level: Standard",
- security_level_tooltip_safer: "Security Level: Safer",
- security_level_tooltip_safest: "Security Level: Safest",
- // Shown only for custom level
- security_level_custom: "Custom",
- security_level_restore: "Restore Defaults",
- security_level_learn_more: "Learn more",
- // Panel
- security_level_open_settings: "Settings…",
- security_level_standard_summary:
- "All browser and website features are enabled.",
- security_level_safer_summary:
- "Disables website features that are often dangerous, causing some sites to lose functionality.",
- security_level_safest_summary:
- "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.",
- security_level_custom_heading: "Custom security level configured",
- security_level_custom_summary:
- "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.",
- // Security level section in about:preferences#privacy
- security_level_overview:
- "Disable certain web features that can be used to attack your security and anonymity.",
- security_level_list_safer: "At the safer setting:",
- security_level_list_safest: "At the safest setting:",
- // Strings for descriptions
- security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.",
- security_level_js_disabled:
- "JavaScript is disabled by default on all sites.",
- security_level_limit_typography:
- "Some fonts and math symbols are disabled.",
- security_level_limit_typography_svg:
- "Some fonts, icons, math symbols, and images are disabled.",
- security_level_limit_media:
- "Audio and video (HTML5 media), and WebGL are click-to-play.",
- };
- let bundle = null;
- try {
- bundle = Services.strings.createBundle(
- "chrome://browser/locale/securityLevel.properties"
- );
- } catch (e) {
- console.warn("Could not load the Security Level strings");
- }
- if (bundle) {
- for (const key of Object.keys(strings)) {
- try {
- strings[key] = bundle.GetStringFromName(key);
- } catch (e) {}
- }
- }
- return strings;
-});
-
/*
Security Level Button Code
@@ -100,12 +41,30 @@ var SecurityLevelButton = {
if (!level) {
return;
}
- const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : "";
- this._button.setAttribute("level", `${level}${customStr}`);
- this._button.setAttribute(
- "tooltiptext",
- SecurityLevelStrings[`security_level_tooltip_${level}`]
- );
+ const custom = SecurityLevelPrefs.securityCustom;
+ this._button.setAttribute("level", custom ? `${level}_custom` : level);
+
+ let l10nIdLevel;
+ switch (level) {
+ case "standard":
+ l10nIdLevel = "security-level-toolbar-button-standard";
+ break;
+ case "safer":
+ l10nIdLevel = "security-level-toolbar-button-safer";
+ break;
+ case "safest":
+ l10nIdLevel = "security-level-toolbar-button-safest";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+ if (custom) {
+ // Don't distinguish between the different levels when in the custom
+ // state. We just want to emphasise that it is custom rather than any
+ // specific level.
+ l10nIdLevel = "security-level-toolbar-button-custom";
+ }
+ document.l10n.setAttributes(this._button, l10nIdLevel);
},
/**
@@ -159,7 +118,6 @@ var SecurityLevelButton = {
window.gNavToolbox.palette.querySelector("#security-level-button");
// Set a label to be be used as the accessible name, and to be shown in the
// overflow menu and during customization.
- this._button.setAttribute("label", SecurityLevelStrings.security_level);
this._button.addEventListener("command", () => this.openPopup());
// set the initial class based off of the current pref
this._configUIFromPrefs();
@@ -213,21 +171,12 @@ var SecurityLevelPanel = {
settingsButton: document.getElementById("securityLevel-settings"),
};
- document.getElementById("securityLevel-header").textContent =
- SecurityLevelStrings.security_level;
- this._elements.customName.textContent =
- SecurityLevelStrings.security_level_custom;
const learnMoreEl = document.getElementById("securityLevel-learnMore");
- learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more;
learnMoreEl.addEventListener("click", event => {
window.openTrustedLinkIn(learnMoreEl.href, "tab");
this.hide();
event.preventDefault();
});
- this._elements.restoreDefaultsButton.textContent =
- SecurityLevelStrings.security_level_restore;
- this._elements.settingsButton.textContent =
- SecurityLevelStrings.security_level_open_settings;
this._elements.restoreDefaultsButton.addEventListener("command", () => {
this.restoreDefaults();
@@ -268,11 +217,30 @@ var SecurityLevelPanel = {
// Descriptions change based on security level
this._elements.background.setAttribute("level", level);
- this._elements.levelName.textContent =
- SecurityLevelStrings[`security_level_${level}`];
- this._elements.summary.textContent = custom
- ? SecurityLevelStrings.security_level_custom_summary
- : SecurityLevelStrings[`security_level_${level}_summary`];
+ let l10nIdLevel;
+ let l10nIdSummary;
+ switch (level) {
+ case "standard":
+ l10nIdLevel = "security-level-panel-level-standard";
+ l10nIdSummary = "security-level-summary-standard";
+ break;
+ case "safer":
+ l10nIdLevel = "security-level-panel-level-safer";
+ l10nIdSummary = "security-level-summary-safer";
+ break;
+ case "safest":
+ l10nIdLevel = "security-level-panel-level-safest";
+ l10nIdSummary = "security-level-summary-safest";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+ if (custom) {
+ l10nIdSummary = "security-level-summary-custom";
+ }
+
+ document.l10n.setAttributes(this._elements.levelName, l10nIdLevel);
+ document.l10n.setAttributes(this._elements.summary, l10nIdSummary);
},
/**
@@ -358,25 +326,13 @@ var SecurityLevelPreferences = {
this._customNotification = document.getElementById(
"securityLevel-customNotification"
);
- this._radiogroup = document.getElementById("securityLevel-radiogroup");
-
- document.querySelector("#securityLevel-groupbox h2").textContent =
- SecurityLevelStrings.security_level;
- document.getElementById("securityLevel-overview").textContent =
- SecurityLevelStrings.security_level_overview;
document
- .getElementById("securityLevel-learnMore")
- .setAttribute("value", SecurityLevelStrings.security_level_learn_more);
-
- document.getElementById("securityLevel-customHeading").textContent =
- SecurityLevelStrings.security_level_custom_heading;
- document.getElementById("securityLevel-customDescription").textContent =
- SecurityLevelStrings.security_level_custom_summary;
- const restoreDefaultsButton = document.getElementById(
- "securityLevel-restoreDefaults"
- );
- restoreDefaultsButton.textContent =
- SecurityLevelStrings.security_level_restore;
+ .getElementById("securityLevel-restoreDefaults")
+ .addEventListener("command", () => {
+ SecurityLevelPrefs.securityCustom = false;
+ });
+
+ this._radiogroup = document.getElementById("securityLevel-radiogroup");
this._radioOptions = Array.from(
this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
@@ -384,46 +340,7 @@ var SecurityLevelPreferences = {
return { container, radio: container.querySelector("radio") };
}
);
- const descListItemsMap = {
- safer: [
- SecurityLevelStrings.security_level_js_https_only,
- SecurityLevelStrings.security_level_limit_typography,
- SecurityLevelStrings.security_level_limit_media,
- ],
- safest: [
- SecurityLevelStrings.security_level_js_disabled,
- SecurityLevelStrings.security_level_limit_typography_svg,
- SecurityLevelStrings.security_level_limit_media,
- ],
- };
- for (const { container, radio } of this._radioOptions) {
- const level = radio.value;
- radio.setAttribute(
- "label",
- SecurityLevelStrings[`security_level_${level}`]
- );
- container.querySelector(".summary").textContent =
- SecurityLevelStrings[`security_level_${level}_summary`];
- const descListItems = descListItemsMap[level];
- if (!descListItems) {
- continue;
- }
- const descrList = container.querySelector(
- ".securityLevel-descriptionList"
- );
- // TODO: Add the elements in securityLevelPreferences.inc.xhtml again
- // when we switch to Fluent
- for (const text of descListItems) {
- let elem = document.createXULElement("description");
- elem.textContent = text;
- elem.className = "indent";
- descrList.append(elem);
- }
- }
- restoreDefaultsButton.addEventListener("command", () => {
- SecurityLevelPrefs.securityCustom = false;
- });
this._radiogroup.addEventListener("select", () => {
SecurityLevelPrefs.securityLevel = this._radiogroup.value;
});
=====================================
browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
=====================================
@@ -7,20 +7,35 @@
level="top"
class="cui-widget-panel panel-no-padding">
<box class="panel-header">
- <html:h1 id="securityLevel-header"></html:h1>
+ <html:h1
+ id="securityLevel-header"
+ data-l10n-id="security-level-panel-heading"
+ ></html:h1>
</box>
<toolbarseparator id="securityLevel-separator"></toolbarseparator>
<vbox id="securityLevel-background" class="panel-subview-body">
<html:p id="securityLevel-subheading">
<html:span id="securityLevel-level"></html:span>
- <html:span id="securityLevel-custom"></html:span>
+ <html:span
+ id="securityLevel-custom"
+ data-l10n-id="security-level-panel-custom-badge"
+ ></html:span>
</html:p>
<html:p id="securityLevel-summary"></html:p>
- <html:a id="securityLevel-learnMore" href="https://mullvad.net/en/browser/hard-facts#security-levels">
- </html:a>
+ <html:a
+ id="securityLevel-learnMore"
+ data-l10n-id="security-level-panel-learn-more-link"
+ href="https://mullvad.net/en/browser/hard-facts#security-levels"
+ ></html:a>
</vbox>
<hbox class="panel-footer">
- <button id="securityLevel-settings"/>
- <button id="securityLevel-restoreDefaults"/>
+ <button
+ id="securityLevel-settings"
+ data-l10n-id="security-level-panel-open-settings-button"
+ />
+ <button
+ id="securityLevel-restoreDefaults"
+ data-l10n-id="security-level-restore-defaults-button"
+ />
</hbox>
</panel>
=====================================
browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
=====================================
@@ -2,36 +2,63 @@
data-category="panePrivacy"
data-subcategory="securitylevel"
hidden="true">
- <label><html:h2></html:h2></label>
+ <label>
+ <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2>
+ </label>
<vbox flex="1">
<description flex="1">
- <html:span id="securityLevel-overview" class="tail-with-learn-more">
- </html:span>
- <label id="securityLevel-learnMore"
- class="learnMore text-link"
- is="text-link"
- href="https://mullvad.net/en/browser/hard-facts#security-levels"/>
+ <html:span
+ id="securityLevel-overview"
+ class="tail-with-learn-more"
+ data-l10n-id="security-level-preferences-overview"
+ ></html:span>
+ <label
+ id="securityLevel-learnMore"
+ class="learnMore text-link"
+ is="text-link"
+ data-l10n-id="security-level-preferences-learn-more-link"
+ href="https://mullvad.net/en/browser/hard-facts#security-levels"
+ />
</description>
- <hbox id="securityLevel-customNotification"
- class="info-box-container"
- flex="1">
+ <hbox
+ id="securityLevel-customNotification"
+ class="info-box-container"
+ flex="1"
+ >
<hbox class="info-icon-container">
<image class="info-icon securityLevel-custom-warning-icon"/>
</hbox>
<vbox flex="1">
- <label id="securityLevel-customHeading"/>
- <description id="securityLevel-customDescription" flex="1"/>
+ <label
+ id="securityLevel-customHeading"
+ data-l10n-id="security-level-preferences-custom-heading"
+ />
+ <description
+ id="securityLevel-customDescription"
+ data-l10n-id="security-level-summary-custom"
+ flex="1"
+ />
</vbox>
<hbox align="center">
- <button id="securityLevel-restoreDefaults"/>
+ <button
+ id="securityLevel-restoreDefaults"
+ data-l10n-id="security-level-restore-defaults-button"
+ />
</hbox>
</hbox>
<radiogroup id="securityLevel-radiogroup">
<vbox class="securityLevel-radio-option">
- <radio value="standard"
- aria-describedby="securityLevelSummary-standard"/>
+ <radio
+ value="standard"
+ data-l10n-id="security-level-preferences-level-standard"
+ aria-describedby="securityLevelSummary-standard"
+ />
<vbox id="securityLevelSummary-standard">
- <description class="summary indent" flex="1"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-standard"
+ />
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
@@ -40,19 +67,59 @@
- securityLevel-descriptionList is shown or hidden, its text content
- is included or excluded from the accessible description,
- respectively. -->
- <radio value="safer"
- aria-describedby="securityLevelSummary-safer"/>
+ <radio
+ value="safer"
+ data-l10n-id="security-level-preferences-level-safer"
+ aria-describedby="securityLevelSummary-safer"
+ />
<vbox id="securityLevelSummary-safer">
- <description class="summary indent" flex="1"/>
- <vbox class="securityLevel-descriptionList indent"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-safer"
+ />
+ <vbox class="securityLevel-descriptionList indent">
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-https-only-javascript"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-media"
+ />
+ </vbox>
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
- <radio value="safest"
- aria-describedby="securityLevelSummary-safest"/>
+ <radio
+ value="safest"
+ data-l10n-id="security-level-preferences-level-safest"
+ aria-describedby="securityLevelSummary-safest"
+ />
<vbox id="securityLevelSummary-safest">
- <description class="summary indent" flex="1"/>
- <vbox class="securityLevel-descriptionList indent"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-safest"
+ />
+ <vbox class="securityLevel-descriptionList indent">
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-disabled-javascript"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-media"
+ />
+ </vbox>
</vbox>
</vbox>
</radiogroup>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,6 +70,7 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+
## Preferences - Letterboxing.
# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
@@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled.
# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
letterboxing-enable-button =
.label = Enable Letterboxing
+
+## Security level toolbar button.
+## Uses sentence case in English (US).
+## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar.
+
+security-level-toolbar-button-standard =
+ .label = Security level
+ .tooltiptext = Security level: Standard
+security-level-toolbar-button-safer =
+ .label = Security level
+ .tooltiptext = Security level: Safer
+security-level-toolbar-button-safest =
+ .label = Security level
+ .tooltiptext = Security level: Safest
+# Used when the user is in some custom configuration that does not match a security level.
+security-level-toolbar-button-custom =
+ .label = Security level
+ .tooltiptext = Security level: Custom
+
+## Security level popup panel.
+
+# Uses sentence case in English (US).
+security-level-panel-heading = Security level
+
+security-level-panel-level-standard = Standard
+security-level-panel-level-safer = Safer
+security-level-panel-level-safest = Safest
+security-level-panel-learn-more-link = Learn more
+# Button to open security level settings.
+security-level-panel-open-settings-button = Settings…
+
+## Security level settings.
+
+security-level-preferences-heading = Security Level
+security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity.
+security-level-preferences-learn-more-link = Learn more
+security-level-preferences-level-standard =
+ .label = Standard
+security-level-preferences-level-safer =
+ .label = Safer
+security-level-preferences-level-safest =
+ .label = Safest
+
+## Security level summaries shown in security panel and settings.
+
+security-level-summary-standard = All browser and website features are enabled.
+security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality.
+security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
+
+## Security level feature bullet points.
+## Shown in the settings under the security level when it is selected.
+
+security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites.
+security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled.
+security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play.
+security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites.
+security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled.
+
+## Custom security level.
+## Some custom preferences configuration has placed the user outside one of the standard three levels.
+
+# Shown in the security level panel as an orange badge next to the expected level.
+security-level-panel-custom-badge = Custom
+# Shown in the security level settings in a warning box.
+security-level-preferences-custom-heading = Custom security level configured
+# Description of custom state and recommended action.
+# Shown in the security level panel and settings.
+security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
+# Button to undo custom changes to the security level and place the user in one of the standard security levels.
+# Shown in the security level panel and settings.
+security-level-restore-defaults-button = Restore defaults
=====================================
browser/locales/jar.mn
=====================================
@@ -32,5 +32,4 @@
locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
- locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42211-new-identity.py deleted
=====================================
@@ -1,48 +0,0 @@
-import fluent.syntax.ast as FTL
-from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
-from fluent.migrate.transforms import REPLACE
-
-
-def migrate(ctx):
- legacy_path = "newIdentity.properties"
-
- ctx.add_transforms(
- "base-browser.ftl",
- "base-browser.ftl",
- transforms_from(
- """
-menu-new-identity =
- .label = { COPY(path, "new_identity") }
- .accesskey = { COPY(path, "new_identity_menu_accesskey") }
-appmenuitem-new-identity =
- .label = { COPY(path, "new_identity_sentence_case") }
-toolbar-new-identity =
- .label = { COPY(path, "new_identity_sentence_case") }
- .tooltiptext = { toolbar-new-identity.label }
-
-new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
-new-identity-dialog-never-ask-checkbox =
- .label = { COPY(path, "new_identity_ask_again") }
-
-new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
-""",
- path=legacy_path,
- )
- + [
- # Replace "%S" with "{ -brand-short-name }" in confirm button.
- FTL.Message(
- id=FTL.Identifier("new-identity-dialog-confirm"),
- value=None,
- attributes=[
- FTL.Attribute(
- id=FTL.Identifier("label"),
- value=REPLACE(
- legacy_path,
- "new_identity_restart",
- {"%1$S": TERM_REFERENCE("brand-short-name")},
- ),
- ),
- ],
- ),
- ],
- )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/4d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/4d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] 3 commits: Revert "fixup! Tor Browser localization migration scripts."
by richard (@richard) 25 Mar '24
by richard (@richard) 25 Mar '24
25 Mar '24
richard pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
ba14a74d by Richard Pospesel at 2024-03-25T22:15:25+00:00
Revert "fixup! Tor Browser localization migration scripts."
This reverts commit 57b8a1d5daf53afed32a8b02aca2508eecfc9bd7.
- - - - -
c14810dd by Henry Wilkes at 2024-03-25T22:16:38+00:00
fixup! Bug 40925: Implemented the Security Level component
Bug 42214: Migrate security level strings to Fluent.
- - - - -
8f87ed96 by Henry Wilkes at 2024-03-25T22:17:23+00:00
fixup! Base Browser strings
Bug 42214: Migrate security level strings to Fluent.
Also change some strings to be sentence case in English.
- - - - -
7 changed files:
- browser/components/preferences/preferences.xhtml
- browser/components/securitylevel/content/securityLevel.js
- browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
- browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- browser/locales/en-US/browser/base-browser.ftl
- browser/locales/jar.mn
- − tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
Changes:
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -58,6 +58,7 @@
<link rel="localization" href="security/certificates/certManager.ftl"/>
<link rel="localization" href="security/certificates/deviceManager.ftl"/>
<link rel="localization" href="toolkit/updates/history.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/>
=====================================
browser/components/securitylevel/content/securityLevel.js
=====================================
@@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/SecurityLevel.jsm"
);
-XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => {
- let strings = {
- // Generic terms
- security_level: "Security Level",
- security_level_standard: "Standard",
- security_level_safer: "Safer",
- security_level_safest: "Safest",
- security_level_tooltip_standard: "Security Level: Standard",
- security_level_tooltip_safer: "Security Level: Safer",
- security_level_tooltip_safest: "Security Level: Safest",
- // Shown only for custom level
- security_level_custom: "Custom",
- security_level_restore: "Restore Defaults",
- security_level_learn_more: "Learn more",
- // Panel
- security_level_open_settings: "Settings…",
- security_level_standard_summary:
- "All browser and website features are enabled.",
- security_level_safer_summary:
- "Disables website features that are often dangerous, causing some sites to lose functionality.",
- security_level_safest_summary:
- "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.",
- security_level_custom_heading: "Custom security level configured",
- security_level_custom_summary:
- "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.",
- // Security level section in about:preferences#privacy
- security_level_overview:
- "Disable certain web features that can be used to attack your security and anonymity.",
- security_level_list_safer: "At the safer setting:",
- security_level_list_safest: "At the safest setting:",
- // Strings for descriptions
- security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.",
- security_level_js_disabled:
- "JavaScript is disabled by default on all sites.",
- security_level_limit_typography:
- "Some fonts and math symbols are disabled.",
- security_level_limit_typography_svg:
- "Some fonts, icons, math symbols, and images are disabled.",
- security_level_limit_media:
- "Audio and video (HTML5 media), and WebGL are click-to-play.",
- };
- let bundle = null;
- try {
- bundle = Services.strings.createBundle(
- "chrome://browser/locale/securityLevel.properties"
- );
- } catch (e) {
- console.warn("Could not load the Security Level strings");
- }
- if (bundle) {
- for (const key of Object.keys(strings)) {
- try {
- strings[key] = bundle.GetStringFromName(key);
- } catch (e) {}
- }
- }
- return strings;
-});
-
/*
Security Level Button Code
@@ -100,12 +41,30 @@ var SecurityLevelButton = {
if (!level) {
return;
}
- const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : "";
- this._button.setAttribute("level", `${level}${customStr}`);
- this._button.setAttribute(
- "tooltiptext",
- SecurityLevelStrings[`security_level_tooltip_${level}`]
- );
+ const custom = SecurityLevelPrefs.securityCustom;
+ this._button.setAttribute("level", custom ? `${level}_custom` : level);
+
+ let l10nIdLevel;
+ switch (level) {
+ case "standard":
+ l10nIdLevel = "security-level-toolbar-button-standard";
+ break;
+ case "safer":
+ l10nIdLevel = "security-level-toolbar-button-safer";
+ break;
+ case "safest":
+ l10nIdLevel = "security-level-toolbar-button-safest";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+ if (custom) {
+ // Don't distinguish between the different levels when in the custom
+ // state. We just want to emphasise that it is custom rather than any
+ // specific level.
+ l10nIdLevel = "security-level-toolbar-button-custom";
+ }
+ document.l10n.setAttributes(this._button, l10nIdLevel);
},
/**
@@ -159,7 +118,6 @@ var SecurityLevelButton = {
window.gNavToolbox.palette.querySelector("#security-level-button");
// Set a label to be be used as the accessible name, and to be shown in the
// overflow menu and during customization.
- this._button.setAttribute("label", SecurityLevelStrings.security_level);
this._button.addEventListener("command", () => this.openPopup());
// set the initial class based off of the current pref
this._configUIFromPrefs();
@@ -213,21 +171,12 @@ var SecurityLevelPanel = {
settingsButton: document.getElementById("securityLevel-settings"),
};
- document.getElementById("securityLevel-header").textContent =
- SecurityLevelStrings.security_level;
- this._elements.customName.textContent =
- SecurityLevelStrings.security_level_custom;
const learnMoreEl = document.getElementById("securityLevel-learnMore");
- learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more;
learnMoreEl.addEventListener("click", event => {
window.openTrustedLinkIn(learnMoreEl.href, "tab");
this.hide();
event.preventDefault();
});
- this._elements.restoreDefaultsButton.textContent =
- SecurityLevelStrings.security_level_restore;
- this._elements.settingsButton.textContent =
- SecurityLevelStrings.security_level_open_settings;
this._elements.restoreDefaultsButton.addEventListener("command", () => {
this.restoreDefaults();
@@ -268,11 +217,30 @@ var SecurityLevelPanel = {
// Descriptions change based on security level
this._elements.background.setAttribute("level", level);
- this._elements.levelName.textContent =
- SecurityLevelStrings[`security_level_${level}`];
- this._elements.summary.textContent = custom
- ? SecurityLevelStrings.security_level_custom_summary
- : SecurityLevelStrings[`security_level_${level}_summary`];
+ let l10nIdLevel;
+ let l10nIdSummary;
+ switch (level) {
+ case "standard":
+ l10nIdLevel = "security-level-panel-level-standard";
+ l10nIdSummary = "security-level-summary-standard";
+ break;
+ case "safer":
+ l10nIdLevel = "security-level-panel-level-safer";
+ l10nIdSummary = "security-level-summary-safer";
+ break;
+ case "safest":
+ l10nIdLevel = "security-level-panel-level-safest";
+ l10nIdSummary = "security-level-summary-safest";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+ if (custom) {
+ l10nIdSummary = "security-level-summary-custom";
+ }
+
+ document.l10n.setAttributes(this._elements.levelName, l10nIdLevel);
+ document.l10n.setAttributes(this._elements.summary, l10nIdSummary);
},
/**
@@ -358,25 +326,13 @@ var SecurityLevelPreferences = {
this._customNotification = document.getElementById(
"securityLevel-customNotification"
);
- this._radiogroup = document.getElementById("securityLevel-radiogroup");
-
- document.querySelector("#securityLevel-groupbox h2").textContent =
- SecurityLevelStrings.security_level;
- document.getElementById("securityLevel-overview").textContent =
- SecurityLevelStrings.security_level_overview;
document
- .getElementById("securityLevel-learnMore")
- .setAttribute("value", SecurityLevelStrings.security_level_learn_more);
-
- document.getElementById("securityLevel-customHeading").textContent =
- SecurityLevelStrings.security_level_custom_heading;
- document.getElementById("securityLevel-customDescription").textContent =
- SecurityLevelStrings.security_level_custom_summary;
- const restoreDefaultsButton = document.getElementById(
- "securityLevel-restoreDefaults"
- );
- restoreDefaultsButton.textContent =
- SecurityLevelStrings.security_level_restore;
+ .getElementById("securityLevel-restoreDefaults")
+ .addEventListener("command", () => {
+ SecurityLevelPrefs.securityCustom = false;
+ });
+
+ this._radiogroup = document.getElementById("securityLevel-radiogroup");
this._radioOptions = Array.from(
this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
@@ -384,46 +340,7 @@ var SecurityLevelPreferences = {
return { container, radio: container.querySelector("radio") };
}
);
- const descListItemsMap = {
- safer: [
- SecurityLevelStrings.security_level_js_https_only,
- SecurityLevelStrings.security_level_limit_typography,
- SecurityLevelStrings.security_level_limit_media,
- ],
- safest: [
- SecurityLevelStrings.security_level_js_disabled,
- SecurityLevelStrings.security_level_limit_typography_svg,
- SecurityLevelStrings.security_level_limit_media,
- ],
- };
- for (const { container, radio } of this._radioOptions) {
- const level = radio.value;
- radio.setAttribute(
- "label",
- SecurityLevelStrings[`security_level_${level}`]
- );
- container.querySelector(".summary").textContent =
- SecurityLevelStrings[`security_level_${level}_summary`];
- const descListItems = descListItemsMap[level];
- if (!descListItems) {
- continue;
- }
- const descrList = container.querySelector(
- ".securityLevel-descriptionList"
- );
- // TODO: Add the elements in securityLevelPreferences.inc.xhtml again
- // when we switch to Fluent
- for (const text of descListItems) {
- let elem = document.createXULElement("description");
- elem.textContent = text;
- elem.className = "indent";
- descrList.append(elem);
- }
- }
- restoreDefaultsButton.addEventListener("command", () => {
- SecurityLevelPrefs.securityCustom = false;
- });
this._radiogroup.addEventListener("select", () => {
SecurityLevelPrefs.securityLevel = this._radiogroup.value;
});
=====================================
browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
=====================================
@@ -7,20 +7,35 @@
level="top"
class="cui-widget-panel panel-no-padding">
<box class="panel-header">
- <html:h1 id="securityLevel-header"></html:h1>
+ <html:h1
+ id="securityLevel-header"
+ data-l10n-id="security-level-panel-heading"
+ ></html:h1>
</box>
<toolbarseparator id="securityLevel-separator"></toolbarseparator>
<vbox id="securityLevel-background" class="panel-subview-body">
<html:p id="securityLevel-subheading">
<html:span id="securityLevel-level"></html:span>
- <html:span id="securityLevel-custom"></html:span>
+ <html:span
+ id="securityLevel-custom"
+ data-l10n-id="security-level-panel-custom-badge"
+ ></html:span>
</html:p>
<html:p id="securityLevel-summary"></html:p>
- <html:a id="securityLevel-learnMore" href="about:manual#security-settings">
- </html:a>
+ <html:a
+ id="securityLevel-learnMore"
+ data-l10n-id="security-level-panel-learn-more-link"
+ href="about:manual#security-settings"
+ ></html:a>
</vbox>
<hbox class="panel-footer">
- <button id="securityLevel-settings"/>
- <button id="securityLevel-restoreDefaults"/>
+ <button
+ id="securityLevel-settings"
+ data-l10n-id="security-level-panel-open-settings-button"
+ />
+ <button
+ id="securityLevel-restoreDefaults"
+ data-l10n-id="security-level-restore-defaults-button"
+ />
</hbox>
</panel>
=====================================
browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
=====================================
@@ -2,37 +2,64 @@
data-category="panePrivacy"
data-subcategory="securitylevel"
hidden="true">
- <label><html:h2></html:h2></label>
+ <label>
+ <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2>
+ </label>
<vbox flex="1">
<description flex="1">
- <html:span id="securityLevel-overview" class="tail-with-learn-more">
- </html:span>
- <label id="securityLevel-learnMore"
- class="learnMore text-link"
- is="text-link"
- href="about:manual#security-settings"
- useoriginprincipal="true"/>
+ <html:span
+ id="securityLevel-overview"
+ class="tail-with-learn-more"
+ data-l10n-id="security-level-preferences-overview"
+ ></html:span>
+ <label
+ id="securityLevel-learnMore"
+ class="learnMore text-link"
+ is="text-link"
+ data-l10n-id="security-level-preferences-learn-more-link"
+ href="about:manual#security-settings"
+ useoriginprincipal="true"
+ />
</description>
- <hbox id="securityLevel-customNotification"
- class="info-box-container"
- flex="1">
+ <hbox
+ id="securityLevel-customNotification"
+ class="info-box-container"
+ flex="1"
+ >
<hbox class="info-icon-container">
<image class="info-icon securityLevel-custom-warning-icon"/>
</hbox>
<vbox flex="1">
- <label id="securityLevel-customHeading"/>
- <description id="securityLevel-customDescription" flex="1"/>
+ <label
+ id="securityLevel-customHeading"
+ data-l10n-id="security-level-preferences-custom-heading"
+ />
+ <description
+ id="securityLevel-customDescription"
+ data-l10n-id="security-level-summary-custom"
+ flex="1"
+ />
</vbox>
<hbox align="center">
- <button id="securityLevel-restoreDefaults"/>
+ <button
+ id="securityLevel-restoreDefaults"
+ data-l10n-id="security-level-restore-defaults-button"
+ />
</hbox>
</hbox>
<radiogroup id="securityLevel-radiogroup">
<vbox class="securityLevel-radio-option">
- <radio value="standard"
- aria-describedby="securityLevelSummary-standard"/>
+ <radio
+ value="standard"
+ data-l10n-id="security-level-preferences-level-standard"
+ aria-describedby="securityLevelSummary-standard"
+ />
<vbox id="securityLevelSummary-standard">
- <description class="summary indent" flex="1"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-standard"
+ />
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
@@ -41,19 +68,59 @@
- securityLevel-descriptionList is shown or hidden, its text content
- is included or excluded from the accessible description,
- respectively. -->
- <radio value="safer"
- aria-describedby="securityLevelSummary-safer"/>
+ <radio
+ value="safer"
+ data-l10n-id="security-level-preferences-level-safer"
+ aria-describedby="securityLevelSummary-safer"
+ />
<vbox id="securityLevelSummary-safer">
- <description class="summary indent" flex="1"/>
- <vbox class="securityLevel-descriptionList indent"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-safer"
+ />
+ <vbox class="securityLevel-descriptionList indent">
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-https-only-javascript"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-media"
+ />
+ </vbox>
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
- <radio value="safest"
- aria-describedby="securityLevelSummary-safest"/>
+ <radio
+ value="safest"
+ data-l10n-id="security-level-preferences-level-safest"
+ aria-describedby="securityLevelSummary-safest"
+ />
<vbox id="securityLevelSummary-safest">
- <description class="summary indent" flex="1"/>
- <vbox class="securityLevel-descriptionList indent"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-safest"
+ />
+ <vbox class="securityLevel-descriptionList indent">
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-disabled-javascript"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-media"
+ />
+ </vbox>
</vbox>
</vbox>
</radiogroup>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,6 +70,7 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+
## Preferences - Letterboxing.
# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
@@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled.
# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
letterboxing-enable-button =
.label = Enable Letterboxing
+
+## Security level toolbar button.
+## Uses sentence case in English (US).
+## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar.
+
+security-level-toolbar-button-standard =
+ .label = Security level
+ .tooltiptext = Security level: Standard
+security-level-toolbar-button-safer =
+ .label = Security level
+ .tooltiptext = Security level: Safer
+security-level-toolbar-button-safest =
+ .label = Security level
+ .tooltiptext = Security level: Safest
+# Used when the user is in some custom configuration that does not match a security level.
+security-level-toolbar-button-custom =
+ .label = Security level
+ .tooltiptext = Security level: Custom
+
+## Security level popup panel.
+
+# Uses sentence case in English (US).
+security-level-panel-heading = Security level
+
+security-level-panel-level-standard = Standard
+security-level-panel-level-safer = Safer
+security-level-panel-level-safest = Safest
+security-level-panel-learn-more-link = Learn more
+# Button to open security level settings.
+security-level-panel-open-settings-button = Settings…
+
+## Security level settings.
+
+security-level-preferences-heading = Security Level
+security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity.
+security-level-preferences-learn-more-link = Learn more
+security-level-preferences-level-standard =
+ .label = Standard
+security-level-preferences-level-safer =
+ .label = Safer
+security-level-preferences-level-safest =
+ .label = Safest
+
+## Security level summaries shown in security panel and settings.
+
+security-level-summary-standard = All browser and website features are enabled.
+security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality.
+security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
+
+## Security level feature bullet points.
+## Shown in the settings under the security level when it is selected.
+
+security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites.
+security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled.
+security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play.
+security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites.
+security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled.
+
+## Custom security level.
+## Some custom preferences configuration has placed the user outside one of the standard three levels.
+
+# Shown in the security level panel as an orange badge next to the expected level.
+security-level-panel-custom-badge = Custom
+# Shown in the security level settings in a warning box.
+security-level-preferences-custom-heading = Custom security level configured
+# Description of custom state and recommended action.
+# Shown in the security level panel and settings.
+security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
+# Button to undo custom changes to the security level and place the user in one of the standard security levels.
+# Shown in the security level panel and settings.
+security-level-restore-defaults-button = Restore defaults
=====================================
browser/locales/jar.mn
=====================================
@@ -32,5 +32,4 @@
locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
- locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42211-new-identity.py deleted
=====================================
@@ -1,48 +0,0 @@
-import fluent.syntax.ast as FTL
-from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
-from fluent.migrate.transforms import REPLACE
-
-
-def migrate(ctx):
- legacy_path = "newIdentity.properties"
-
- ctx.add_transforms(
- "base-browser.ftl",
- "base-browser.ftl",
- transforms_from(
- """
-menu-new-identity =
- .label = { COPY(path, "new_identity") }
- .accesskey = { COPY(path, "new_identity_menu_accesskey") }
-appmenuitem-new-identity =
- .label = { COPY(path, "new_identity_sentence_case") }
-toolbar-new-identity =
- .label = { COPY(path, "new_identity_sentence_case") }
- .tooltiptext = { toolbar-new-identity.label }
-
-new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
-new-identity-dialog-never-ask-checkbox =
- .label = { COPY(path, "new_identity_ask_again") }
-
-new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
-""",
- path=legacy_path,
- )
- + [
- # Replace "%S" with "{ -brand-short-name }" in confirm button.
- FTL.Message(
- id=FTL.Identifier("new-identity-dialog-confirm"),
- value=None,
- attributes=[
- FTL.Attribute(
- id=FTL.Identifier("label"),
- value=REPLACE(
- legacy_path,
- "new_identity_restart",
- {"%1$S": TERM_REFERENCE("brand-short-name")},
- ),
- ),
- ],
- ),
- ],
- )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d3f79d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d3f79d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 40925: Implemented the Security Level component
by richard (@richard) 25 Mar '24
by richard (@richard) 25 Mar '24
25 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
74db46f9 by Henry Wilkes at 2024-03-25T21:54:25+00:00
fixup! Bug 40925: Implemented the Security Level component
Bug 42214: Migrate security level strings to Fluent.
- - - - -
142836ed by Henry Wilkes at 2024-03-25T21:54:25+00:00
fixup! Base Browser strings
Bug 42214: Migrate security level strings to Fluent.
Also change some strings to be sentence case in English.
- - - - -
4338bda1 by Henry Wilkes at 2024-03-25T21:54:25+00:00
fixup! Tor Browser localization migration scripts.
Bug 42214: Migrate security level strings to Fluent.
- - - - -
7 changed files:
- browser/components/preferences/preferences.xhtml
- browser/components/securitylevel/content/securityLevel.js
- browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
- browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
- browser/locales/en-US/browser/base-browser.ftl
- browser/locales/jar.mn
- + tools/torbrowser/l10n/migrations/bug-42214-security-level.py
Changes:
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -60,6 +60,7 @@
<link rel="localization" href="security/certificates/certManager.ftl"/>
<link rel="localization" href="security/certificates/deviceManager.ftl"/>
<link rel="localization" href="toolkit/updates/history.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/tor-browser.ftl"/>
<link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/>
=====================================
browser/components/securitylevel/content/securityLevel.js
=====================================
@@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/SecurityLevel.jsm"
);
-XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => {
- let strings = {
- // Generic terms
- security_level: "Security Level",
- security_level_standard: "Standard",
- security_level_safer: "Safer",
- security_level_safest: "Safest",
- security_level_tooltip_standard: "Security Level: Standard",
- security_level_tooltip_safer: "Security Level: Safer",
- security_level_tooltip_safest: "Security Level: Safest",
- // Shown only for custom level
- security_level_custom: "Custom",
- security_level_restore: "Restore Defaults",
- security_level_learn_more: "Learn more",
- // Panel
- security_level_open_settings: "Settings…",
- security_level_standard_summary:
- "All browser and website features are enabled.",
- security_level_safer_summary:
- "Disables website features that are often dangerous, causing some sites to lose functionality.",
- security_level_safest_summary:
- "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.",
- security_level_custom_heading: "Custom security level configured",
- security_level_custom_summary:
- "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.",
- // Security level section in about:preferences#privacy
- security_level_overview:
- "Disable certain web features that can be used to attack your security and anonymity.",
- security_level_list_safer: "At the safer setting:",
- security_level_list_safest: "At the safest setting:",
- // Strings for descriptions
- security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.",
- security_level_js_disabled:
- "JavaScript is disabled by default on all sites.",
- security_level_limit_typography:
- "Some fonts and math symbols are disabled.",
- security_level_limit_typography_svg:
- "Some fonts, icons, math symbols, and images are disabled.",
- security_level_limit_media:
- "Audio and video (HTML5 media), and WebGL are click-to-play.",
- };
- let bundle = null;
- try {
- bundle = Services.strings.createBundle(
- "chrome://browser/locale/securityLevel.properties"
- );
- } catch (e) {
- console.warn("Could not load the Security Level strings");
- }
- if (bundle) {
- for (const key of Object.keys(strings)) {
- try {
- strings[key] = bundle.GetStringFromName(key);
- } catch (e) {}
- }
- }
- return strings;
-});
-
/*
Security Level Button Code
@@ -100,12 +41,30 @@ var SecurityLevelButton = {
if (!level) {
return;
}
- const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : "";
- this._button.setAttribute("level", `${level}${customStr}`);
- this._button.setAttribute(
- "tooltiptext",
- SecurityLevelStrings[`security_level_tooltip_${level}`]
- );
+ const custom = SecurityLevelPrefs.securityCustom;
+ this._button.setAttribute("level", custom ? `${level}_custom` : level);
+
+ let l10nIdLevel;
+ switch (level) {
+ case "standard":
+ l10nIdLevel = "security-level-toolbar-button-standard";
+ break;
+ case "safer":
+ l10nIdLevel = "security-level-toolbar-button-safer";
+ break;
+ case "safest":
+ l10nIdLevel = "security-level-toolbar-button-safest";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+ if (custom) {
+ // Don't distinguish between the different levels when in the custom
+ // state. We just want to emphasise that it is custom rather than any
+ // specific level.
+ l10nIdLevel = "security-level-toolbar-button-custom";
+ }
+ document.l10n.setAttributes(this._button, l10nIdLevel);
},
/**
@@ -159,7 +118,6 @@ var SecurityLevelButton = {
window.gNavToolbox.palette.querySelector("#security-level-button");
// Set a label to be be used as the accessible name, and to be shown in the
// overflow menu and during customization.
- this._button.setAttribute("label", SecurityLevelStrings.security_level);
this._button.addEventListener("command", () => this.openPopup());
// set the initial class based off of the current pref
this._configUIFromPrefs();
@@ -213,21 +171,12 @@ var SecurityLevelPanel = {
settingsButton: document.getElementById("securityLevel-settings"),
};
- document.getElementById("securityLevel-header").textContent =
- SecurityLevelStrings.security_level;
- this._elements.customName.textContent =
- SecurityLevelStrings.security_level_custom;
const learnMoreEl = document.getElementById("securityLevel-learnMore");
- learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more;
learnMoreEl.addEventListener("click", event => {
window.openTrustedLinkIn(learnMoreEl.href, "tab");
this.hide();
event.preventDefault();
});
- this._elements.restoreDefaultsButton.textContent =
- SecurityLevelStrings.security_level_restore;
- this._elements.settingsButton.textContent =
- SecurityLevelStrings.security_level_open_settings;
this._elements.restoreDefaultsButton.addEventListener("command", () => {
this.restoreDefaults();
@@ -268,11 +217,30 @@ var SecurityLevelPanel = {
// Descriptions change based on security level
this._elements.background.setAttribute("level", level);
- this._elements.levelName.textContent =
- SecurityLevelStrings[`security_level_${level}`];
- this._elements.summary.textContent = custom
- ? SecurityLevelStrings.security_level_custom_summary
- : SecurityLevelStrings[`security_level_${level}_summary`];
+ let l10nIdLevel;
+ let l10nIdSummary;
+ switch (level) {
+ case "standard":
+ l10nIdLevel = "security-level-panel-level-standard";
+ l10nIdSummary = "security-level-summary-standard";
+ break;
+ case "safer":
+ l10nIdLevel = "security-level-panel-level-safer";
+ l10nIdSummary = "security-level-summary-safer";
+ break;
+ case "safest":
+ l10nIdLevel = "security-level-panel-level-safest";
+ l10nIdSummary = "security-level-summary-safest";
+ break;
+ default:
+ throw Error(`Unhandled level: ${level}`);
+ }
+ if (custom) {
+ l10nIdSummary = "security-level-summary-custom";
+ }
+
+ document.l10n.setAttributes(this._elements.levelName, l10nIdLevel);
+ document.l10n.setAttributes(this._elements.summary, l10nIdSummary);
},
/**
@@ -358,25 +326,13 @@ var SecurityLevelPreferences = {
this._customNotification = document.getElementById(
"securityLevel-customNotification"
);
- this._radiogroup = document.getElementById("securityLevel-radiogroup");
-
- document.querySelector("#securityLevel-groupbox h2").textContent =
- SecurityLevelStrings.security_level;
- document.getElementById("securityLevel-overview").textContent =
- SecurityLevelStrings.security_level_overview;
document
- .getElementById("securityLevel-learnMore")
- .setAttribute("value", SecurityLevelStrings.security_level_learn_more);
-
- document.getElementById("securityLevel-customHeading").textContent =
- SecurityLevelStrings.security_level_custom_heading;
- document.getElementById("securityLevel-customDescription").textContent =
- SecurityLevelStrings.security_level_custom_summary;
- const restoreDefaultsButton = document.getElementById(
- "securityLevel-restoreDefaults"
- );
- restoreDefaultsButton.textContent =
- SecurityLevelStrings.security_level_restore;
+ .getElementById("securityLevel-restoreDefaults")
+ .addEventListener("command", () => {
+ SecurityLevelPrefs.securityCustom = false;
+ });
+
+ this._radiogroup = document.getElementById("securityLevel-radiogroup");
this._radioOptions = Array.from(
this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
@@ -384,46 +340,7 @@ var SecurityLevelPreferences = {
return { container, radio: container.querySelector("radio") };
}
);
- const descListItemsMap = {
- safer: [
- SecurityLevelStrings.security_level_js_https_only,
- SecurityLevelStrings.security_level_limit_typography,
- SecurityLevelStrings.security_level_limit_media,
- ],
- safest: [
- SecurityLevelStrings.security_level_js_disabled,
- SecurityLevelStrings.security_level_limit_typography_svg,
- SecurityLevelStrings.security_level_limit_media,
- ],
- };
- for (const { container, radio } of this._radioOptions) {
- const level = radio.value;
- radio.setAttribute(
- "label",
- SecurityLevelStrings[`security_level_${level}`]
- );
- container.querySelector(".summary").textContent =
- SecurityLevelStrings[`security_level_${level}_summary`];
- const descListItems = descListItemsMap[level];
- if (!descListItems) {
- continue;
- }
- const descrList = container.querySelector(
- ".securityLevel-descriptionList"
- );
- // TODO: Add the elements in securityLevelPreferences.inc.xhtml again
- // when we switch to Fluent
- for (const text of descListItems) {
- let elem = document.createXULElement("description");
- elem.textContent = text;
- elem.className = "indent";
- descrList.append(elem);
- }
- }
- restoreDefaultsButton.addEventListener("command", () => {
- SecurityLevelPrefs.securityCustom = false;
- });
this._radiogroup.addEventListener("select", () => {
SecurityLevelPrefs.securityLevel = this._radiogroup.value;
});
=====================================
browser/components/securitylevel/content/securityLevelPanel.inc.xhtml
=====================================
@@ -7,20 +7,35 @@
level="top"
class="cui-widget-panel panel-no-padding">
<box class="panel-header">
- <html:h1 id="securityLevel-header"></html:h1>
+ <html:h1
+ id="securityLevel-header"
+ data-l10n-id="security-level-panel-heading"
+ ></html:h1>
</box>
<toolbarseparator id="securityLevel-separator"></toolbarseparator>
<vbox id="securityLevel-background" class="panel-subview-body">
<html:p id="securityLevel-subheading">
<html:span id="securityLevel-level"></html:span>
- <html:span id="securityLevel-custom"></html:span>
+ <html:span
+ id="securityLevel-custom"
+ data-l10n-id="security-level-panel-custom-badge"
+ ></html:span>
</html:p>
<html:p id="securityLevel-summary"></html:p>
- <html:a id="securityLevel-learnMore" href="about:manual#security-settings">
- </html:a>
+ <html:a
+ id="securityLevel-learnMore"
+ data-l10n-id="security-level-panel-learn-more-link"
+ href="about:manual#security-settings"
+ ></html:a>
</vbox>
<hbox class="panel-footer">
- <button id="securityLevel-settings"/>
- <button id="securityLevel-restoreDefaults"/>
+ <button
+ id="securityLevel-settings"
+ data-l10n-id="security-level-panel-open-settings-button"
+ />
+ <button
+ id="securityLevel-restoreDefaults"
+ data-l10n-id="security-level-restore-defaults-button"
+ />
</hbox>
</panel>
=====================================
browser/components/securitylevel/content/securityLevelPreferences.inc.xhtml
=====================================
@@ -2,37 +2,64 @@
data-category="panePrivacy"
data-subcategory="securitylevel"
hidden="true">
- <label><html:h2></html:h2></label>
+ <label>
+ <html:h2 data-l10n-id="security-level-preferences-heading"></html:h2>
+ </label>
<vbox flex="1">
<description flex="1">
- <html:span id="securityLevel-overview" class="tail-with-learn-more">
- </html:span>
- <label id="securityLevel-learnMore"
- class="learnMore text-link"
- is="text-link"
- href="about:manual#security-settings"
- useoriginprincipal="true"/>
+ <html:span
+ id="securityLevel-overview"
+ class="tail-with-learn-more"
+ data-l10n-id="security-level-preferences-overview"
+ ></html:span>
+ <label
+ id="securityLevel-learnMore"
+ class="learnMore text-link"
+ is="text-link"
+ data-l10n-id="security-level-preferences-learn-more-link"
+ href="about:manual#security-settings"
+ useoriginprincipal="true"
+ />
</description>
- <hbox id="securityLevel-customNotification"
- class="info-box-container"
- flex="1">
+ <hbox
+ id="securityLevel-customNotification"
+ class="info-box-container"
+ flex="1"
+ >
<hbox class="info-icon-container">
<image class="info-icon securityLevel-custom-warning-icon"/>
</hbox>
<vbox flex="1">
- <label id="securityLevel-customHeading"/>
- <description id="securityLevel-customDescription" flex="1"/>
+ <label
+ id="securityLevel-customHeading"
+ data-l10n-id="security-level-preferences-custom-heading"
+ />
+ <description
+ id="securityLevel-customDescription"
+ data-l10n-id="security-level-summary-custom"
+ flex="1"
+ />
</vbox>
<hbox align="center">
- <button id="securityLevel-restoreDefaults"/>
+ <button
+ id="securityLevel-restoreDefaults"
+ data-l10n-id="security-level-restore-defaults-button"
+ />
</hbox>
</hbox>
<radiogroup id="securityLevel-radiogroup">
<vbox class="securityLevel-radio-option">
- <radio value="standard"
- aria-describedby="securityLevelSummary-standard"/>
+ <radio
+ value="standard"
+ data-l10n-id="security-level-preferences-level-standard"
+ aria-describedby="securityLevelSummary-standard"
+ />
<vbox id="securityLevelSummary-standard">
- <description class="summary indent" flex="1"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-standard"
+ />
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
@@ -41,19 +68,59 @@
- securityLevel-descriptionList is shown or hidden, its text content
- is included or excluded from the accessible description,
- respectively. -->
- <radio value="safer"
- aria-describedby="securityLevelSummary-safer"/>
+ <radio
+ value="safer"
+ data-l10n-id="security-level-preferences-level-safer"
+ aria-describedby="securityLevelSummary-safer"
+ />
<vbox id="securityLevelSummary-safer">
- <description class="summary indent" flex="1"/>
- <vbox class="securityLevel-descriptionList indent"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-safer"
+ />
+ <vbox class="securityLevel-descriptionList indent">
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-https-only-javascript"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-media"
+ />
+ </vbox>
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
- <radio value="safest"
- aria-describedby="securityLevelSummary-safest"/>
+ <radio
+ value="safest"
+ data-l10n-id="security-level-preferences-level-safest"
+ aria-describedby="securityLevelSummary-safest"
+ />
<vbox id="securityLevelSummary-safest">
- <description class="summary indent" flex="1"/>
- <vbox class="securityLevel-descriptionList indent"/>
+ <description
+ class="summary indent"
+ flex="1"
+ data-l10n-id="security-level-summary-safest"
+ />
+ <vbox class="securityLevel-descriptionList indent">
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-disabled-javascript"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images"
+ />
+ <description
+ class="indent"
+ data-l10n-id="security-level-preferences-bullet-limit-media"
+ />
+ </vbox>
</vbox>
</vbox>
</radiogroup>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,6 +70,7 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+
## Preferences - Letterboxing.
# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
@@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled.
# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
letterboxing-enable-button =
.label = Enable Letterboxing
+
+## Security level toolbar button.
+## Uses sentence case in English (US).
+## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar.
+
+security-level-toolbar-button-standard =
+ .label = Security level
+ .tooltiptext = Security level: Standard
+security-level-toolbar-button-safer =
+ .label = Security level
+ .tooltiptext = Security level: Safer
+security-level-toolbar-button-safest =
+ .label = Security level
+ .tooltiptext = Security level: Safest
+# Used when the user is in some custom configuration that does not match a security level.
+security-level-toolbar-button-custom =
+ .label = Security level
+ .tooltiptext = Security level: Custom
+
+## Security level popup panel.
+
+# Uses sentence case in English (US).
+security-level-panel-heading = Security level
+
+security-level-panel-level-standard = Standard
+security-level-panel-level-safer = Safer
+security-level-panel-level-safest = Safest
+security-level-panel-learn-more-link = Learn more
+# Button to open security level settings.
+security-level-panel-open-settings-button = Settings…
+
+## Security level settings.
+
+security-level-preferences-heading = Security Level
+security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity.
+security-level-preferences-learn-more-link = Learn more
+security-level-preferences-level-standard =
+ .label = Standard
+security-level-preferences-level-safer =
+ .label = Safer
+security-level-preferences-level-safest =
+ .label = Safest
+
+## Security level summaries shown in security panel and settings.
+
+security-level-summary-standard = All browser and website features are enabled.
+security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality.
+security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
+
+## Security level feature bullet points.
+## Shown in the settings under the security level when it is selected.
+
+security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites.
+security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled.
+security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play.
+security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites.
+security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled.
+
+## Custom security level.
+## Some custom preferences configuration has placed the user outside one of the standard three levels.
+
+# Shown in the security level panel as an orange badge next to the expected level.
+security-level-panel-custom-badge = Custom
+# Shown in the security level settings in a warning box.
+security-level-preferences-custom-heading = Custom security level configured
+# Description of custom state and recommended action.
+# Shown in the security level panel and settings.
+security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
+# Button to undo custom changes to the security level and place the user in one of the standard security levels.
+# Shown in the security level panel and settings.
+security-level-restore-defaults-button = Restore defaults
=====================================
browser/locales/jar.mn
=====================================
@@ -33,6 +33,5 @@
locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
- locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
locale/browser/cryptoSafetyPrompt.properties (%chrome/browser/cryptoSafetyPrompt.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42214-security-level.py
=====================================
@@ -0,0 +1,43 @@
+from fluent.migrate.helpers import transforms_from
+
+
+def migrate(ctx):
+ ctx.add_transforms(
+ "base-browser.ftl",
+ "base-browser.ftl",
+ transforms_from(
+ """
+security-level-panel-level-standard = { COPY(path, "security_level_standard") }
+security-level-panel-level-safer = { COPY(path, "security_level_safer") }
+security-level-panel-level-safest = { COPY(path, "security_level_safest") }
+security-level-panel-learn-more-link = { COPY(path, "security_level_learn_more") }
+security-level-panel-open-settings-button = { COPY(path, "security_level_open_settings") }
+
+security-level-preferences-heading = { COPY(path, "security_level") }
+security-level-preferences-overview = { COPY(path, "security_level_overview") }
+security-level-preferences-learn-more-link = { COPY(path, "security_level_learn_more") }
+security-level-preferences-level-standard =
+ .label = { COPY(path, "security_level_standard") }
+security-level-preferences-level-safer =
+ .label = { COPY(path, "security_level_safer") }
+security-level-preferences-level-safest =
+ .label = { COPY(path, "security_level_safest") }
+
+security-level-summary-standard = { COPY(path, "security_level_standard_summary") }
+security-level-summary-safer = { COPY(path, "security_level_safer_summary") }
+security-level-summary-safest = { COPY(path, "security_level_safest_summary") }
+
+
+security-level-preferences-bullet-https-only-javascript = { COPY(path, "security_level_js_https_only") }
+security-level-preferences-bullet-limit-font-and-symbols = { COPY(path, "security_level_limit_typography") }
+security-level-preferences-bullet-limit-media = { COPY(path, "security_level_limit_media") }
+security-level-preferences-bullet-disabled-javascript = { COPY(path, "security_level_js_disabled") }
+security-level-preferences-bullet-limit-font-and-symbols-and-images = { COPY(path, "security_level_limit_typography_svg") }
+
+security-level-panel-custom-badge = { COPY(path, "security_level_custom") }
+security-level-preferences-custom-heading = { COPY(path, "security_level_custom_heading") }
+security-level-summary-custom = { COPY(path, "security_level_custom_summary") }
+""",
+ path="securityLevel.properties",
+ ),
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/966b7f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/966b7f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 5 commits: fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
by richard (@richard) 25 Mar '24
by richard (@richard) 25 Mar '24
25 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
99d4a1de by Henry Wilkes at 2024-03-25T09:42:29+00:00
fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Bug 42209: Migrate tor circuit strings to Fluent.
- - - - -
56ce4cc1 by Henry Wilkes at 2024-03-25T09:42:30+00:00
fixup! Bug 41600: Add a tor circuit display panel.
Bug 42209: Migrate tor circuit strings to Fluent.
- - - - -
76f869d5 by Henry Wilkes at 2024-03-25T09:42:31+00:00
fixup! Tor Browser strings
Bug 42209: Migrate tor circuit strings to Fluent.
- - - - -
724dfc5f by Henry Wilkes at 2024-03-25T09:42:31+00:00
fixup! Add TorStrings module for localization
Bug 42209: Migrate tor circuit strings to Fluent.
- - - - -
966b7f30 by Henry Wilkes at 2024-03-25T09:42:32+00:00
fixup! Tor Browser localization migration scripts.
Bug 42209: Migrate tor circuit strings to Fluent.
- - - - -
11 changed files:
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/torcircuit/content/torCircuitPanel.css
- browser/components/torcircuit/content/torCircuitPanel.inc.xhtml
- browser/components/torcircuit/content/torCircuitPanel.js
- browser/locales/en-US/browser/tor-browser.ftl
- toolkit/torbutton/chrome/locale/en-US/torbutton.dtd
- toolkit/torbutton/chrome/locale/en-US/torbutton.properties
- tools/torbrowser/l10n/migrate.py
- + tools/torbrowser/l10n/migrations/bug-42209-tor-circuit.py
Changes:
=====================================
browser/base/content/appmenu-viewcache.inc.xhtml
=====================================
@@ -62,7 +62,7 @@
<toolbarbutton id="appMenuNewCircuit"
class="subviewbutton"
key="new-circuit-key"
- label="&torbutton.context_menu.new_circuit_sentence_case;"
+ data-l10n-id="appmenuitem-new-tor-circuit"
oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/>
<toolbarseparator/>
<toolbarbutton id="appMenu-bookmarks-button"
=====================================
browser/base/content/browser-menubar.inc
=====================================
@@ -32,9 +32,7 @@
<menuitem id="menu_newIdentity"
key="new-identity-key" data-l10n-id="menu-new-identity"/>
<menuitem id="menu_newCircuit"
- accesskey="&torbutton.context_menu.new_circuit_key;"
- key="new-circuit-key"
- label="&torbutton.context_menu.new_circuit;"
+ key="new-circuit-key" data-l10n-id="menu-new-tor-circuit"
oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/>
<menuseparator/>
<menuitem id="menu_openLocation"
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -198,7 +198,7 @@
role="button"
class="identity-box-button"
align="center"
- tooltiptext="&torbutton.circuit_display.title;"
+ data-l10n-id="tor-circuit-urlbar-button"
hidden="true">
<image id="tor-circuit-button-icon"/>
</box>
@@ -621,9 +621,8 @@
data-l10n-id="toolbar-new-identity"/>
<toolbarbutton id="new-circuit-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
- label="&torbutton.context_menu.new_circuit;"
- oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"
- tooltiptext="&torbutton.context_menu.new_circuit;"/>
+ data-l10n-id="toolbar-new-tor-circuit"
+ oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/>
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
observes="View:FullScreen"
=====================================
browser/components/torcircuit/content/torCircuitPanel.css
=====================================
@@ -120,6 +120,15 @@
background-repeat: no-repeat;
}
+.tor-circuit-node-item:not([hidden]) {
+ display: flex;
+ align-items: baseline;
+}
+
+.tor-circuit-node-item > * {
+ flex: 0 0 auto;
+}
+
@media (prefers-color-scheme: dark) {
.tor-circuit-node-item {
/* Light Gray 90 */
@@ -146,9 +155,9 @@
.tor-circuit-region-flag {
margin-inline-end: 0.5em;
height: 16px;
- vertical-align: sub;
+ align-self: center;
/* Don't occupy any vertical height. */
- margin-block-start: -16px;
+ margin-block: -8px;
}
.tor-circuit-region-flag.no-region-flag-src {
@@ -158,7 +167,7 @@
.tor-circuit-addresses {
font-size: smaller;
font-family: monospace;
- margin-inline-start: 0.25em;
+ margin-inline-start: 0.75em;
}
/* Footer buttons */
=====================================
browser/components/torcircuit/content/torCircuitPanel.inc.xhtml
=====================================
@@ -19,44 +19,67 @@
<vbox class="panel-header">
<html:h1 id="tor-circuit-heading"></html:h1>
<html:div id="tor-circuit-alias" hidden="hidden">
- <html:img src="chrome://browser/content/tor-circuit-redirect.svg"
- alt="" />
+ <html:img
+ src="chrome://browser/content/tor-circuit-redirect.svg"
+ alt=""
+ />
<html:p id="tor-circuit-alias-label">
- <html:a />
+ <html:a class="tor-circuit-alias-link" data-l10n-name="alias-link" />
</html:p>
</html:div>
</vbox>
<toolbarseparator/>
<vbox id="tor-circuit-panel-body" class="panel-subview-body">
- <html:p id="tor-circuit-node-list-name">&torbutton.circuit_display.title;</html:p>
+ <html:p
+ id="tor-circuit-node-list-name"
+ data-l10n-id="tor-circuit-panel-node-list-introduction"
+ ></html:p>
<html:ol id="tor-circuit-node-list">
- <html:li id="tor-circuit-start-item"
- class="tor-circuit-node-item">
- </html:li>
- <html:li id="tor-circuit-relays-item"
- class="tor-circuit-node-item tor-circuit-relays-item">
- </html:li>
- <html:li id="tor-circuit-end-item"
- class="tor-circuit-node-item">
- </html:li>
+ <html:li
+ id="tor-circuit-start-item"
+ class="tor-circuit-node-item"
+ data-l10n-id="tor-circuit-panel-node-browser"
+ ></html:li>
+ <html:li
+ id="tor-circuit-relays-item"
+ class="tor-circuit-node-item tor-circuit-relays-item"
+ data-l10n-id="tor-circuit-panel-node-onion-relays"
+ ></html:li>
+ <html:li
+ id="tor-circuit-end-item"
+ class="tor-circuit-node-item"
+ ></html:li>
</html:ol>
+ <html:template id="tor-circuit-node-item-template">
+ <html:li class="tor-circuit-node-item">
+ <html:img class="tor-circuit-region-flag" alt="" />
+ <html:span class="tor-circuit-node-name"></html:span>
+ <html:span class="tor-circuit-addresses"></html:span>
+ </html:li>
+ </html:template>
</vbox>
<toolbarseparator/>
<!-- NOTE: To fully benefit from the .subviewbutton styling, we need to use
- a xul:toolbarbutton rather than a html:button.
- By default, a xul:toolbarbutton is not focusable so we need to add
- tabindex. -->
- <toolbarbutton id="tor-circuit-new-circuit"
- class="subviewbutton panel-subview-footer-button tor-circuit-button"
- tabindex="0"
- aria-labelledby="tor-circuit-new-circuit-label"
- aria-describedby="tor-circuit-new-circuit-description">
+ <toolbarbutton
+ id="tor-circuit-new-circuit"
+ class="subviewbutton panel-subview-footer-button tor-circuit-button"
+ tabindex="0"
+ aria-labelledby="tor-circuit-new-circuit-label"
+ aria-describedby="tor-circuit-new-circuit-description"
+ >
<vbox align="start">
- <label id="tor-circuit-new-circuit-label"
- class="toolbarbutton-text"
- value="&torbutton.context_menu.new_circuit_sentence_case;"/>
- <label id="tor-circuit-new-circuit-description"
- class="tor-circuit-button-description"/>
+ <label
+ id="tor-circuit-new-circuit-label"
+ class="toolbarbutton-text"
+ data-l10n-id="tor-circuit-panel-new-button"
+ />
+ <label
+ id="tor-circuit-new-circuit-description"
+ class="tor-circuit-button-description"
+ />
</vbox>
</toolbarbutton>
</vbox>
=====================================
browser/components/torcircuit/content/torCircuitPanel.js
=====================================
@@ -34,6 +34,12 @@ var gTorCircuitPanel = {
* @type {bool}
*/
_isActive: false,
+ /**
+ * The template element for circuit nodes.
+ *
+ * @type {HTMLTemplateElement?}
+ */
+ _nodeItemTemplate: null,
/**
* The topic on which circuit changes are broadcast.
@@ -62,7 +68,6 @@ var gTorCircuitPanel = {
heading: document.getElementById("tor-circuit-heading"),
alias: document.getElementById("tor-circuit-alias"),
aliasLabel: document.getElementById("tor-circuit-alias-label"),
- aliasLink: document.querySelector("#tor-circuit-alias-label a"),
aliasMenu: document.getElementById("tor-circuit-panel-alias-menu"),
list: document.getElementById("tor-circuit-node-list"),
relaysItem: document.getElementById("tor-circuit-relays-item"),
@@ -73,30 +78,24 @@ var gTorCircuitPanel = {
};
this.toolbarButton = document.getElementById("tor-circuit-button");
- // TODO: These strings should be set in the HTML markup with fluent.
-
- // NOTE: There is already whitespace before and after the link from the
- // XHTML markup.
- const [aliasBefore, aliasAfter] = this._getString(
- "torbutton.circuit_display.connected-to-alias",
- // Placeholder is replaced with the same placeholder. This is a bit of a
- // hack since we want the inserted address to be the rich anchor
- // element already in the DOM, rather than a plain address.
- // We won't have to do this with fluent by using data-l10n-name on the
- // anchor element.
- ["%S"]
- ).split("%S");
- this._panelElements.aliasLabel.prepend(aliasBefore);
- this._panelElements.aliasLabel.append(aliasAfter);
-
- this._panelElements.aliasLink.addEventListener("click", event => {
+ // We add listeners for the .tor-circuit-alias-link.
+ // NOTE: We have to add the listeners to the parent element because the
+ // link (with data-l10n-name="alias-link") will be replaced with a new
+ // cloned instance every time the parent gets re-translated.
+ this._panelElements.aliasLabel.addEventListener("click", event => {
+ if (!this._aliasLink.contains(event.target)) {
+ return;
+ }
event.preventDefault();
if (event.button !== 0) {
return;
}
this._openAlias("tab");
});
- this._panelElements.aliasLink.addEventListener("contextmenu", event => {
+ this._panelElements.aliasLabel.addEventListener("contextmenu", event => {
+ if (!this._aliasLink.contains(event.target)) {
+ return;
+ }
event.preventDefault();
this._panelElements.aliasMenu.openPopupAtScreen(
event.screenX,
@@ -119,21 +118,15 @@ var gTorCircuitPanel = {
document
.getElementById("tor-circuit-panel-alias-menu-copy")
.addEventListener("command", () => {
- if (!this._panelElements.aliasLink.href) {
+ const alias = this._aliasLink?.href;
+ if (!alias) {
return;
}
Cc["@mozilla.org/widget/clipboardhelper;1"]
.getService(Ci.nsIClipboardHelper)
- .copyString(this._panelElements.aliasLink.href);
+ .copyString(alias);
});
- document.getElementById("tor-circuit-start-item").textContent =
- this._getString("torbutton.circuit_display.this_browser");
-
- this._panelElements.relaysItem.textContent = this._getString(
- "torbutton.circuit_display.onion-site-relays"
- );
-
// Button is a xul:toolbarbutton, so we use "command" rather than "click".
document
.getElementById("tor-circuit-new-circuit")
@@ -176,6 +169,13 @@ var gTorCircuitPanel = {
this.show();
});
+ this._nodeItemTemplate = document.getElementById(
+ "tor-circuit-node-item-template"
+ );
+ // Prepare the unknown region name for the current locale.
+ // NOTE: We expect this to complete before the first call to _updateBody.
+ this._localeChanged();
+
this._locationListener = {
onLocationChange: (webProgress, request, locationURI, flags) => {
if (
@@ -194,6 +194,7 @@ var gTorCircuitPanel = {
// Get notifications for circuit changes.
Services.obs.addObserver(this, this.TOR_CIRCUIT_TOPIC);
+ Services.obs.addObserver(this, "intl:app-locales-changed");
},
/**
@@ -203,15 +204,21 @@ var gTorCircuitPanel = {
this._isActive = false;
gBrowser.removeProgressListener(this._locationListener);
Services.obs.removeObserver(this, this.TOR_CIRCUIT_TOPIC);
+ Services.obs.removeObserver(this, "intl:app-locales-changed");
},
/**
* Observe circuit changes.
*/
observe(subject, topic, data) {
- if (topic === this.TOR_CIRCUIT_TOPIC) {
- // TODO: Maybe check if we actually need to do something earlier.
- this._updateCurrentBrowser();
+ switch (topic) {
+ case this.TOR_CIRCUIT_TOPIC:
+ // TODO: Maybe check if we actually need to do something earlier.
+ this._updateCurrentBrowser();
+ break;
+ case "intl:app-locales-changed":
+ this._localeChanged();
+ break;
}
},
@@ -231,6 +238,19 @@ var gTorCircuitPanel = {
this.panel.hidePopup();
},
+ /**
+ * Get the current alias link instance.
+ *
+ * Note that this element instance may change whenever its parent element
+ * (#tor-circuit-alias-label) is re-translated. Attributes should be copied to
+ * the new instance.
+ */
+ get _aliasLink() {
+ return this._panelElements.aliasLabel.querySelector(
+ ".tor-circuit-alias-link"
+ );
+ },
+
/**
* Open the onion alias present in the alias link.
*
@@ -238,12 +258,13 @@ var gTorCircuitPanel = {
* window.
*/
_openAlias(where) {
- if (!this._panelElements.aliasLink.href) {
+ const url = this._aliasLink?.href;
+ if (!url) {
return;
}
// We hide the panel before opening the link.
this.hide();
- window.openWebLinkIn(this._panelElements.aliasLink.href, where);
+ window.openWebLinkIn(url, where);
},
/**
@@ -351,11 +372,6 @@ var gTorCircuitPanel = {
this.toolbarButton.hidden = false;
- if (this.panel.state !== "open" && this.panel.state !== "showing") {
- // Don't update the panel content if it is not open or about to open.
- return;
- }
-
this._updateCircuitPanel();
},
@@ -383,35 +399,15 @@ var gTorCircuitPanel = {
return alias;
},
- /**
- * Get a string from the properties bundle.
- *
- * @param {string} name - The string name.
- * @param {string[]} args - The arguments to pass to the string.
- *
- * @returns {string} The string.
- */
- _getString(name, args = []) {
- if (!this._stringBundle) {
- this._stringBundle = Services.strings.createBundle(
- "chrome://torbutton/locale/torbutton.properties"
- );
- }
- try {
- return this._stringBundle.formatStringFromName(name, args);
- } catch {}
- if (!this._fallbackStringBundle) {
- this._fallbackStringBundle = Services.strings.createBundle(
- "resource://torbutton/locale/en-US/torbutton.properties"
- );
- }
- return this._fallbackStringBundle.formatStringFromName(name, args);
- },
-
/**
* Updates the circuit display in the panel to show the current browser data.
*/
_updateCircuitPanel() {
+ if (this.panel.state !== "open" && this.panel.state !== "showing") {
+ // Don't update the panel content if it is not open or about to open.
+ return;
+ }
+
// NOTE: The _currentBrowserData.nodes data may be stale. In particular, the
// circuit may have expired already, or we're still waiting on the new
// circuit.
@@ -426,6 +422,9 @@ var gTorCircuitPanel = {
this.hide();
return;
}
+
+ this._log.debug("Updating circuit panel");
+
let domain = this._currentBrowserData.domain;
const onionAlias = this._getOnionAlias(domain);
@@ -447,24 +446,31 @@ var gTorCircuitPanel = {
* @param {string?} scheme - The scheme in use for the current domain.
*/
_updateHeading(domain, onionAlias, scheme) {
- this._panelElements.heading.textContent = this._getString(
- "torbutton.circuit_display.heading",
+ document.l10n.setAttributes(
+ this._panelElements.heading,
+ "tor-circuit-panel-heading",
// Only shorten the onion domain if it has no alias.
- [TorUIUtils.shortenOnionAddress(domain)]
+ { host: TorUIUtils.shortenOnionAddress(domain) }
);
if (onionAlias) {
- this._panelElements.aliasLink.textContent =
- TorUIUtils.shortenOnionAddress(onionAlias);
if (scheme === "http" || scheme === "https") {
// We assume the same scheme as the current page for the alias, which we
// expect to be either http or https.
// NOTE: The href property is partially presentational so that the link
// location appears on hover.
- this._panelElements.aliasLink.href = `${scheme}://${onionAlias}`;
+ // NOTE: The href attribute should be copied to any new instances of
+ // .tor-circuit-alias-link (with data-l10n-name="alias-link") when the
+ // parent _panelElements.aliasLabel gets re-translated.
+ this._aliasLink.href = `${scheme}://${onionAlias}`;
} else {
- this._panelElements.aliasLink.removeAttribute("href");
+ this._aliasLink.removeAttribute("href");
}
+ document.l10n.setAttributes(
+ this._panelElements.aliasLabel,
+ "tor-circuit-panel-alias",
+ { alias: TorUIUtils.shortenOnionAddress(onionAlias) }
+ );
this._showPanelElement(this._panelElements.alias, true);
} else {
this._showPanelElement(this._panelElements.alias, false);
@@ -485,20 +491,40 @@ var gTorCircuitPanel = {
* @param {string} domain - The domain to show for the last node.
*/
_updateBody(nodes, domain) {
- // Clean up old items.
- // NOTE: We do not expect focus within a removed node.
- for (const nodeItem of this._nodeItems) {
- nodeItem.remove();
- }
+ // NOTE: Rather than re-creating the <li> nodes from scratch, we prefer
+ // updating existing <li> nodes so that the display does not "flicker" in
+ // width as we wait for Fluent DOM to fill the nodes with text content. I.e.
+ // the existing node and text will remain in place, occupying the same
+ // width, up until it is replaced by Fluent DOM.
+ for (let index = 0; index < nodes.length; index++) {
+ if (index >= this._nodeItems.length) {
+ const newItem =
+ this._nodeItemTemplate.content.children[0].cloneNode(true);
+ const flagEl = newItem.querySelector(".tor-circuit-region-flag");
+ // Hide region flag whenever the flag src does not exist.
+ flagEl.addEventListener("error", () => {
+ flagEl.classList.add("no-region-flag-src");
+ flagEl.removeAttribute("src");
+ });
+ this._panelElements.list.insertBefore(
+ newItem,
+ this._panelElements.relaysItem
+ );
- this._nodeItems = nodes.map((nodeData, index) => {
- const nodeItem = this._createCircuitNodeItem(nodeData, index === 0);
- this._panelElements.list.insertBefore(
- nodeItem,
- this._panelElements.relaysItem
+ this._nodeItems.push(newItem);
+ }
+ this._updateCircuitNodeItem(
+ this._nodeItems[index],
+ nodes[index],
+ index === 0
);
- return nodeItem;
- });
+ }
+
+ // Remove excess items.
+ // NOTE: We do not expect focus within a removed node.
+ while (nodes.length < this._nodeItems.length) {
+ this._nodeItems.pop().remove();
+ }
this._showPanelElement(
this._panelElements.relaysItem,
@@ -511,40 +537,49 @@ var gTorCircuitPanel = {
// Button description text, depending on whether our first node was a
// bridge, or otherwise a guard.
- this._panelElements.newCircuitDescription.value = this._getString(
+ document.l10n.setAttributes(
+ this._panelElements.newCircuitDescription,
nodes[0].bridgeType === null
- ? "torbutton.circuit_display.new-circuit-guard-description"
- : "torbutton.circuit_display.new-circuit-bridge-description"
+ ? "tor-circuit-panel-new-button-description-guard"
+ : "tor-circuit-panel-new-button-description-bridge"
);
},
/**
- * Create a node item for the given circuit node data.
+ * Update a node item for the given circuit node data.
*
+ * @param {Element} nodeItem - The item to update.
* @param {NodeData} node - The circuit node data to create an item for.
* @param {bool} isCircuitStart - Whether this is the first node in the
* circuit.
*/
- _createCircuitNodeItem(node, isCircuitStart) {
- let nodeName;
- // We do not show a flag for bridge nodes.
- let regionCode = null;
+ _updateCircuitNodeItem(nodeItem, node, isCircuitStart) {
+ const nameEl = nodeItem.querySelector(".tor-circuit-node-name");
+ let flagSrc = null;
+
if (node.bridgeType === null) {
- regionCode = node.regionCode;
- if (!regionCode) {
- nodeName = this._getString("torbutton.circuit_display.unknown_region");
- } else {
- nodeName = Services.intl.getRegionDisplayNames(undefined, [
- regionCode,
- ])[0];
- }
+ const regionCode = node.regionCode;
+ flagSrc = this._regionFlagSrc(regionCode);
+
+ const regionName = regionCode
+ ? Services.intl.getRegionDisplayNames(undefined, [regionCode])[0]
+ : this._unknownRegionName;
+
if (isCircuitStart) {
- nodeName = this._getString(
- "torbutton.circuit_display.region-guard-node",
- [nodeName]
+ document.l10n.setAttributes(
+ nameEl,
+ "tor-circuit-panel-node-region-guard",
+ { region: regionName }
);
+ } else {
+ // Set the text content directly, rather than using Fluent.
+ nameEl.removeAttribute("data-l10n-id");
+ nameEl.removeAttribute("data-l10n-args");
+ nameEl.textContent = regionName;
}
} else {
+ // Do not show a flag for bridges.
+
let bridgeType = node.bridgeType;
if (bridgeType === "meek_lite") {
bridgeType = "meek";
@@ -552,55 +587,72 @@ var gTorCircuitPanel = {
bridgeType = "";
}
if (bridgeType) {
- nodeName = this._getString(
- "torbutton.circuit_display.tor_typed_bridge",
- [bridgeType]
+ document.l10n.setAttributes(
+ nameEl,
+ "tor-circuit-panel-node-typed-bridge",
+ { "bridge-type": bridgeType }
);
} else {
- nodeName = this._getString("torbutton.circuit_display.tor_bridge");
+ document.l10n.setAttributes(nameEl, "tor-circuit-panel-node-bridge");
}
}
- const nodeItem = document.createElement("li");
- nodeItem.classList.add("tor-circuit-node-item");
-
- const regionFlagEl = this._regionFlag(regionCode);
- if (regionFlagEl) {
- nodeItem.append(regionFlagEl);
+ const flagEl = nodeItem.querySelector(".tor-circuit-region-flag");
+ flagEl.classList.toggle("no-region-flag-src", !flagSrc);
+ if (flagSrc) {
+ flagEl.setAttribute("src", flagSrc);
+ } else {
+ flagEl.removeAttribute("src");
}
- // Add whitespace after name for the addresses.
- nodeItem.append(nodeName + " ");
-
- if (node.ipAddrs) {
- const addressesEl = document.createElement("span");
- addressesEl.classList.add("tor-circuit-addresses");
- let firstAddr = true;
- for (const ip of node.ipAddrs) {
- if (firstAddr) {
- firstAddr = false;
- } else {
- addressesEl.append(", ");
- }
- // We use a <code> element to give screen readers a hint that
- // punctuation is different for IP addresses.
- const ipEl = document.createElement("code");
- // TODO: Current HTML-aam 1.0 specs map the <code> element to the "code"
- // role.
- // However, mozilla-central commented out this mapping in
- // accessible/base/HTMLMarkupMap.h because the HTML-aam specs at the
- // time did not do this.
- // See hg.mozilla.org/mozilla-central/rev/51eebe7d6199#l2.12
- // For now we explicitly add the role="code", but once this is fixed
- // from mozilla-central we should remove this.
- ipEl.setAttribute("role", "code");
- ipEl.classList.add("tor-circuit-ip-address");
- ipEl.textContent = ip;
- addressesEl.append(ipEl);
+ const addressesEl = nodeItem.querySelector(".tor-circuit-addresses");
+ // Empty children.
+ addressesEl.replaceChildren();
+ let firstAddr = true;
+ for (const ip of node.ipAddrs) {
+ if (firstAddr) {
+ firstAddr = false;
+ } else {
+ addressesEl.append(", ");
}
- nodeItem.append(addressesEl);
+ const ipEl = document.createElement("code");
+ // TODO: Current HTML-aam 1.0 specs map the <code> element to the "code"
+ // role.
+ // However, mozilla-central commented out this mapping in
+ // accessible/base/HTMLMarkupMap.h because the HTML-aam specs at the
+ // time did not do this.
+ // See hg.mozilla.org/mozilla-central/rev/51eebe7d6199#l2.12
+ //
+ // This was updated in mozilla bug 1834931, for ESR 128
+ //
+ // For now we explicitly add the role="code", but once this is fixed
+ // from mozilla-central we should remove this.
+ ipEl.setAttribute("role", "code");
+ ipEl.classList.add("tor-circuit-ip-address");
+ ipEl.textContent = ip;
+ addressesEl.append(ipEl);
}
+ },
+
+ /**
+ * The string to use for unknown region names.
+ *
+ * Will be updated to match the current locale.
+ *
+ * @type {string}
+ */
+ _unknownRegionName: "Unknown region",
- return nodeItem;
+ /**
+ * Update the name for regions to match the current locale.
+ */
+ _localeChanged() {
+ document.l10n
+ .formatValue("tor-circuit-panel-node-unknown-region")
+ .then(name => {
+ this._unknownRegionName = name;
+ // Update the panel for the new region names, if it is shown.
+ this._updateCircuitPanel();
+ });
},
/**
@@ -609,9 +661,9 @@ var gTorCircuitPanel = {
* @param {string?} regionCode - The code to convert. It should be an upper
* case 2-letter BCP47 Region subtag to be converted into a flag.
*
- * @returns {HTMLImgElement?} The emoji flag img, or null if there is no flag.
+ * @returns {src?} The emoji flag img src, or null if there is no flag.
*/
- _regionFlag(regionCode) {
+ _regionFlagSrc(regionCode) {
if (!regionCode?.match(/^[A-Z]{2}$/)) {
return null;
}
@@ -624,20 +676,7 @@ var gTorCircuitPanel = {
.map(cp => cp.toString(16))
.join("-");
- const flagEl = document.createElement("img");
- // Decorative.
- flagEl.alt = "";
- flagEl.classList.add("tor-circuit-region-flag");
- // Remove self if there is no matching flag found.
- flagEl.addEventListener(
- "error",
- () => {
- flagEl.classList.add("no-region-flag-src");
- },
- { once: true }
- );
- flagEl.src = `chrome://browser/content/tor-circuit-flags/${flagName}.svg`;
- return flagEl;
+ return `chrome://browser/content/tor-circuit-flags/${flagName}.svg`;
},
/**
=====================================
browser/locales/en-US/browser/tor-browser.ftl
=====================================
@@ -326,3 +326,63 @@ about-dialog-browser-license-link = Licensing Information
# "Tor" and "The Onion Logo" are trademark names, so should not be translated (not including the quote marks, which can be localized).
# "The Tor Project, Inc." is an organisation name.
about-dialog-trademark-statement = “Tor” and “The Onion Logo” are registered trademarks of The Tor Project, Inc.
+
+## New tor circuit.
+
+# Shown in the File menu.
+# Uses title case for English (US).
+menu-new-tor-circuit =
+ .label = New Tor Circuit for this Site
+ .accesskey = C
+
+# Shown in the application menu (hamburger menu).
+# Uses sentence case for English (US).
+appmenuitem-new-tor-circuit =
+ .label = New Tor circuit for this site
+
+# Toolbar button to trigger a new circuit, available through toolbar customization.
+# Uses sentence case for English (US).
+# ".label" is the accessible name, and is visible in the overflow menu and when
+# customizing the toolbar.
+# ".tooltiptext" will be identical to the label.
+toolbar-new-tor-circuit =
+ .label = New Tor circuit for this site
+ .tooltiptext = { toolbar-new-tor-circuit.label }
+
+## Tor circuit URL bar button.
+
+# The tooltip also acts as the accessible name.
+tor-circuit-urlbar-button =
+ .tooltiptext = Tor Circuit
+
+## Tor circuit panel.
+
+# $host (String) - The host name shown in the URL bar, potentially shortened.
+tor-circuit-panel-heading = Circuit for { $host }
+# Shown when the current address is a ".tor.onion" alias.
+# $alias (String) - The alias onion address. This should be wrapped in '<a data-l10n-name="alias-link">' and '</a>', which will link to the corresponding address.
+tor-circuit-panel-alias = Connected to <a data-l10n-name="alias-link">{ $alias }</a>
+
+# Text just before the list of circuit nodes.
+tor-circuit-panel-node-list-introduction = Tor Circuit
+# First node in the list of circuit nodes. Refers to Tor Browser.
+tor-circuit-panel-node-browser = This browser
+# Represents a number of unknown relays that complete a connection to an ".onion" site.
+tor-circuit-panel-node-onion-relays = Onion site relays
+# Represents the bridge node used to connect to the Tor network.
+# $bridge-type (String) - The name for the type of bridge used: meek, obfs4, snowflake, etc.
+tor-circuit-panel-node-typed-bridge = Bridge: { $bridge-type }
+# Represents the bridge node used to connect to the Tor network when the bridge type is unknown.
+tor-circuit-panel-node-bridge = Bridge
+# Represents the initial guard node used for a tor circuit.
+# $region (String) - The region name for the guard node, already localized.
+tor-circuit-panel-node-region-guard = { $region } (guard)
+# Represents a circuit node with an unknown regional location.
+tor-circuit-panel-node-unknown-region = Unknown region
+
+# Uses sentence case for English (US).
+tor-circuit-panel-new-button = New Tor circuit for this site
+# Shown when the first node in the circuit is a guard node, rather than a bridge.
+tor-circuit-panel-new-button-description-guard = Your guard node may not change
+# Shown when the first node in the circuit is a bridge node.
+tor-circuit-panel-new-button-description-bridge = Your bridge may not change
=====================================
toolkit/torbutton/chrome/locale/en-US/torbutton.dtd
=====================================
@@ -3,12 +3,6 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
-<!ENTITY torbutton.context_menu.new_circuit_sentence_case "New Tor circuit for this site">
-<!ENTITY torbutton.context_menu.new_circuit_key "C">
-
-<!ENTITY torbutton.circuit_display.title "Tor Circuit">
-
<!-- Onion services strings. Strings are kept here for ease of translation. -->
<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
<!ENTITY torbutton.onionServices.authPrompt.persistCheckboxLabel "Remember this key">
=====================================
toolkit/torbutton/chrome/locale/en-US/torbutton.properties
=====================================
@@ -3,25 +3,6 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-# Circuit display
-# LOCALIZATION NOTE: %S will be the host name shown in the URL bar.
-torbutton.circuit_display.heading = Circuit for %S
-# LOCALIZATION NOTE: %S will be the alias onion address.
-torbutton.circuit_display.connected-to-alias = Connected to %S
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.onion-site-relays = Onion site relays
-# LOCALIZATION NOTE: %S will be the bridge type name (meek, obfs4, snowflake,
-# etc).
-torbutton.circuit_display.tor_typed_bridge = Bridge: %S
-# LOCALIZATION NOTE: Used when the bridge type is unknown.
-torbutton.circuit_display.tor_bridge = Bridge
-# LOCALIZATION NOTE: Used when a circuit node's regional location is unknown.
-torbutton.circuit_display.unknown_region = Unknown region
-# LOCALIZATION NOTE: %S will be the localized region name for the guard node.
-torbutton.circuit_display.region-guard-node = %S (guard)
-torbutton.circuit_display.new-circuit-guard-description = Your guard node may not change
-torbutton.circuit_display.new-circuit-bridge-description = Your bridge may not change
-
# Download pane warning
torbutton.download.warning.title = Be careful opening downloads
# %S will be a link to the Tails operating system website. With the content given by torbutton.download.warning.tails_brand_name
=====================================
tools/torbrowser/l10n/migrate.py
=====================================
@@ -253,16 +253,13 @@ class TorBrowserMigrationContext(MigrationContext):
if path not in self.localization_resources
)
- def tb_get_transformed(self, target_path, transform_id):
+ def tb_get_transform(self, target_path, transform_id):
"""
Find the transformation node with the given id for the given path.
-
- The node will be evaluated (converted to regular fluent.ast) before it
- is returned.
"""
for node in self.transforms[target_path]:
if node.id.name == transform_id:
- return self.evaluate(node)
+ return node
return None
def tb_get_reference_entry(self, target_path, entry_id):
@@ -330,6 +327,21 @@ class TorBrowserMigrator:
ctx = self._get_migration_context(locale, locale_dir)
+ # NOTE: We do not use the existing ctx.serialize_changeset method.
+ # The problem with this approach was that it would re-shuffle the order
+ # of already existing strings to match the en-US locale.
+ # But Weblate currently does not preserve the order of translated
+ # strings: https://github.com/WeblateOrg/weblate/issues/11134
+ # so this created extra noise in the diff.
+ # Instead, we just always append transformations to the end of the
+ # existing file.
+ # Moreover, it would inject group comments into the translated files,
+ # which Weblate does not handle well. Instead, we just do not add any
+ # comments.
+ #
+ # In case we want to use it again in the future, here is a reference
+ # to how it works:
+ #
# ctx.serialize_changeset expects a set of (path, identifier) of
# localization resources that can be used to evaluate the
# transformations.
@@ -344,76 +356,115 @@ class TorBrowserMigrator:
# one step, so we want to fill the changeset with all required
# (path, identifier) pairs found in the localization resources.
- # Choose the transforms that are required and available.
- changeset = set()
available_strings = ctx.tb_get_available_strings()
- for (target_path, transform_id), dep_set in ctx.dependencies.items():
- # ctx.dependencies is a dict of dependencies for all
- # transformations
- # { (target_path, transform_identifier): set(
- # (localization_path, string_identifier),
- # )}
- #
- # e.g. if we want to create a new fluent Message called
- # "new-string1", and it uses "oldString1" from "old-file1.dtd"
- # and "oldString2" from "old-file2.dtd". And "new-string2" using
- # "oldString3" from "old-file2.dtd", it would be
- # {
- # ("new-file.ftl", "new-string1"): set(
- # ("old-file1.dtd", "oldString1"),
- # ("old-file2.dtd", "oldString2"),
- # ),
- # ("new-file.ftl", "new-string2"): set(
- # ("old-file2.dtd", "oldString3"),
- # ),
- # }
- can_transform = True
- for dep in dep_set:
- path, string_id = dep
- if dep not in available_strings:
- can_transform = False
- self.logger.info(
- f"Skipping transform {target_path}:{transform_id} for "
- f"'{locale}' locale because it is missing the "
- f"string {path}:{string_id}."
- )
- break
- # Strings in legacy formats might have an entry in the file
- # that is just a copy of the en-US strings.
- # For these we want to check the weblate metadata to ensure
- # it is a translated string.
- if not path.endswith(
- ".ftl"
- ) and not self.weblate_metadata.is_translated(
- os.path.join("en-US", path),
- os.path.join(locale, path),
- string_id,
- ):
- can_transform = False
+ wrote_file = False
+ errors = []
+
+ for target_path, reference in ctx.reference_resources.items():
+ translated_ids = [
+ entry.id.name
+ for entry in ctx.target_resources[target_path].body
+ if isinstance(entry, (ast.Message, ast.Term))
+ # NOTE: We're assuming that the Message and Term ids do not
+ # conflict with each other.
+ ]
+ new_entries = []
+
+ # Apply transfomations in the order they appear in the reference
+ # (en-US) file.
+ for entry in reference.body:
+ if not isinstance(entry, (ast.Message, ast.Term)):
+ continue
+ transform_id = entry.id.name
+ transform = ctx.tb_get_transform(target_path, transform_id)
+ if not transform:
+ # No transformation for this reference entry.
+ continue
+
+ if transform_id in translated_ids:
self.logger.info(
- f"Skipping transform {target_path}:{transform_id} for "
- f"'{locale}' locale because the string "
- f"{path}:{string_id} has not been translated on "
- "weblate."
+ f"Skipping transform {target_path}:{transform_id} "
+ f"for '{locale}' locale because it already has a "
+ f"translation."
)
- break
- if can_transform:
- changeset.update(dep_set)
+ continue
- print("", file=sys.stderr)
- wrote_file = False
- errors = []
- for path, fluent in ctx.serialize_changeset(changeset).items():
- full_path = os.path.join(locale_dir, path)
+ # ctx.dependencies is a dict of dependencies for all
+ # transformations
+ # { (target_path, transform_identifier): set(
+ # (localization_path, string_identifier),
+ # )}
+ #
+ # e.g. if we want to create a new fluent Message called
+ # "new-string1", and it uses "oldString1" from "old-file1.dtd"
+ # and "oldString2" from "old-file2.dtd". And "new-string2" using
+ # "oldString3" from "old-file2.dtd", it would be
+ # {
+ # ("new-file.ftl", "new-string1"): set(
+ # ("old-file1.dtd", "oldString1"),
+ # ("old-file2.dtd", "oldString2"),
+ # ),
+ # ("new-file.ftl", "new-string2"): set(
+ # ("old-file2.dtd", "oldString3"),
+ # ),
+ # }
+ dep_set = ctx.dependencies[(target_path, transform_id)]
+ can_transform = True
+ for dep in dep_set:
+ path, string_id = dep
+ if dep not in available_strings:
+ can_transform = False
+ self.logger.info(
+ f"Skipping transform {target_path}:{transform_id} "
+ f"for '{locale}' locale because it is missing the "
+ f"string {path}:{string_id}."
+ )
+ break
+ # Strings in legacy formats might have an entry in the file
+ # that is just a copy of the en-US strings.
+ # For these we want to check the weblate metadata to ensure
+ # it is a translated string.
+ if not path.endswith(
+ ".ftl"
+ ) and not self.weblate_metadata.is_translated(
+ os.path.join("en-US", path),
+ os.path.join(locale, path),
+ string_id,
+ ):
+ can_transform = False
+ self.logger.info(
+ f"Skipping transform {target_path}:{transform_id} "
+ f"for '{locale}' locale because the string "
+ f"{path}:{string_id} has not been translated on "
+ "weblate."
+ )
+ break
+ if not can_transform:
+ continue
+
+ # Run the transformation.
+ new_entries.append(ctx.evaluate(transform))
+
+ if not new_entries:
+ continue
+
+ full_path = os.path.join(locale_dir, target_path)
+ print("", file=sys.stderr)
self.logger.info(f"Writing to {full_path}")
- with open(full_path, "w") as file:
- file.write(fluent)
- wrote_file = True
+ # For Fluent we can just serialize the transformations and append
+ # them to the end of the existing file.
+ resource = ast.Resource(new_entries)
+ with open(full_path, "a") as file:
+ file.write(serialize(resource))
+
+ with open(full_path, "r") as file:
+ full_content = file.read()
+ wrote_file = True
# Collect any fluent parsing errors from the newly written file.
errors.extend(
(full_path, message, line, sample)
- for message, line, sample in self._fluent_errors(fluent)
+ for message, line, sample in self._fluent_errors(full_content)
)
if not wrote_file:
@@ -547,7 +598,7 @@ class TorBrowserMigrator:
have_error = True
continue
- transformed = ctx.tb_get_transformed(target_path, transform_id)
+ transformed = ctx.evaluate(ctx.tb_get_transform(target_path, transform_id))
reference_entry = ctx.tb_get_reference_entry(target_path, transform_id)
if reference_entry is None:
self.logger.error(
=====================================
tools/torbrowser/l10n/migrations/bug-42209-tor-circuit.py
=====================================
@@ -0,0 +1,83 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import VARIABLE_REFERENCE, transforms_from
+from fluent.migrate.transforms import CONCAT, REPLACE
+
+
+def migrate(ctx):
+ legacy_dtd = "torbutton.dtd"
+ legacy_properties = "torbutton.properties"
+ ctx.add_transforms(
+ "tor-browser.ftl",
+ "tor-browser.ftl",
+ transforms_from(
+ """
+menu-new-tor-circuit =
+ .label = { COPY(dtd_path, "torbutton.context_menu.new_circuit") }
+ .accesskey = { COPY(dtd_path, "torbutton.context_menu.new_circuit_key") }
+appmenuitem-new-tor-circuit =
+ .label = { COPY(dtd_path, "torbutton.context_menu.new_circuit_sentence_case") }
+toolbar-new-tor-circuit =
+ .label = { COPY(dtd_path, "torbutton.context_menu.new_circuit_sentence_case") }
+ .tooltiptext = { toolbar-new-tor-circuit.label }
+
+tor-circuit-urlbar-button =
+ .tooltiptext = { COPY(dtd_path, "torbutton.circuit_display.title") }
+
+tor-circuit-panel-node-list-introduction = { COPY(dtd_path, "torbutton.circuit_display.title") }
+tor-circuit-panel-node-browser = { COPY(path, "torbutton.circuit_display.this_browser") }
+tor-circuit-panel-node-onion-relays = { COPY(path, "torbutton.circuit_display.onion-site-relays") }
+tor-circuit-panel-node-bridge = { COPY(path, "torbutton.circuit_display.tor_bridge") }
+tor-circuit-panel-node-unknown-region = { COPY(path, "torbutton.circuit_display.unknown_region") }
+
+tor-circuit-panel-new-button = { COPY(dtd_path, "torbutton.context_menu.new_circuit_sentence_case") }
+tor-circuit-panel-new-button-description-guard = { COPY(path, "torbutton.circuit_display.new-circuit-guard-description") }
+tor-circuit-panel-new-button-description-bridge = { COPY(path, "torbutton.circuit_display.new-circuit-bridge-description") }
+""",
+ dtd_path=legacy_dtd,
+ path=legacy_properties,
+ )
+ + [
+ # Replace "%S" with "{ $host }"
+ FTL.Message(
+ id=FTL.Identifier("tor-circuit-panel-heading"),
+ value=REPLACE(
+ legacy_properties,
+ "torbutton.circuit_display.heading",
+ {"%1$S": VARIABLE_REFERENCE("host")},
+ ),
+ ),
+ # Replace "%S" with "<a data-l10n-name="alias-link">{ $alias }</a>"
+ FTL.Message(
+ id=FTL.Identifier("tor-circuit-panel-alias"),
+ value=REPLACE(
+ legacy_properties,
+ "torbutton.circuit_display.connected-to-alias",
+ {
+ "%1$S": CONCAT(
+ FTL.TextElement('<a data-l10n-name="alias-link">'),
+ VARIABLE_REFERENCE("alias"),
+ FTL.TextElement("</a>"),
+ )
+ },
+ ),
+ ),
+ # Replace "%S" with "{ $region }"
+ FTL.Message(
+ id=FTL.Identifier("tor-circuit-panel-node-region-guard"),
+ value=REPLACE(
+ legacy_properties,
+ "torbutton.circuit_display.region-guard-node",
+ {"%1$S": VARIABLE_REFERENCE("region")},
+ ),
+ ),
+ # Replace "%S" with "{ $bridge-type }"
+ FTL.Message(
+ id=FTL.Identifier("tor-circuit-panel-node-typed-bridge"),
+ value=REPLACE(
+ legacy_properties,
+ "torbutton.circuit_display.tor_typed_bridge",
+ {"%1$S": VARIABLE_REFERENCE("bridge-type")},
+ ),
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/b7fc91…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/b7fc91…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser-update-responses][main] release: new version, 13.0.13
by richard (@richard) 22 Mar '24
by richard (@richard) 22 Mar '24
22 Mar '24
richard pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses
Commits:
dbce8663 by Richard Pospesel at 2024-03-22T17:31:33+00:00
release: new version, 13.0.13
- - - - -
29 changed files:
- update_1/release/.htaccess
- − update_1/release/13.0.10-13.0.12-linux-x86_64-ALL.xml
- − update_1/release/13.0.10-13.0.12-macos-ALL.xml
- − update_1/release/13.0.10-13.0.12-windows-x86_64-ALL.xml
- + update_1/release/13.0.10-13.0.13-linux-x86_64-ALL.xml
- + update_1/release/13.0.10-13.0.13-macos-ALL.xml
- + update_1/release/13.0.10-13.0.13-windows-x86_64-ALL.xml
- + update_1/release/13.0.12-13.0.13-linux-x86_64-ALL.xml
- + update_1/release/13.0.12-13.0.13-macos-ALL.xml
- + update_1/release/13.0.12-13.0.13-windows-x86_64-ALL.xml
- − update_1/release/13.0.12-linux-x86_64-ALL.xml
- − update_1/release/13.0.12-macos-ALL.xml
- − update_1/release/13.0.12-windows-x86_64-ALL.xml
- + update_1/release/13.0.13-linux-x86_64-ALL.xml
- + update_1/release/13.0.13-macos-ALL.xml
- + update_1/release/13.0.13-windows-x86_64-ALL.xml
- − update_1/release/13.0.7-13.0.12-linux-x86_64-ALL.xml
- − update_1/release/13.0.7-13.0.12-macos-ALL.xml
- − update_1/release/13.0.7-13.0.12-windows-x86_64-ALL.xml
- − update_1/release/13.0.9-13.0.12-linux-x86_64-ALL.xml
- − update_1/release/13.0.9-13.0.12-macos-ALL.xml
- − update_1/release/13.0.9-13.0.12-windows-x86_64-ALL.xml
- + update_1/release/13.0.9-13.0.13-linux-x86_64-ALL.xml
- + update_1/release/13.0.9-13.0.13-macos-ALL.xml
- + update_1/release/13.0.9-13.0.13-windows-x86_64-ALL.xml
- update_1/release/download-linux-x86_64.json
- update_1/release/download-macos.json
- update_1/release/download-windows-x86_64.json
- update_1/release/downloads.json
Changes:
=====================================
update_1/release/.htaccess
=====================================
@@ -1,22 +1,22 @@
RewriteEngine On
-RewriteRule ^[^/]+/13.0.12/ no-update.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.12-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.12-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.12-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.12-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/ 13.0.12-linux-x86_64-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/ 13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.10/ALL 13.0.10-13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.7/ALL 13.0.7-13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.9/ALL 13.0.9-13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.12-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/ 13.0.12-macos-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.10/ALL 13.0.10-13.0.12-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.7/ALL 13.0.7-13.0.12-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.9/ALL 13.0.9-13.0.12-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.12-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.12-windows-x86_64-ALL.xml [last]
+RewriteRule ^[^/]+/13.0.13/ no-update.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.13-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.12/ALL 13.0.12-13.0.13-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.13-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.13-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/ 13.0.13-linux-x86_64-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.12/ALL 13.0.12-13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/ 13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.10/ALL 13.0.10-13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.12/ALL 13.0.12-13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.9/ALL 13.0.9-13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.13-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/ 13.0.13-macos-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.10/ALL 13.0.10-13.0.13-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.12/ALL 13.0.12-13.0.13-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.9/ALL 13.0.9-13.0.13-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.13-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.13-windows-x86_64-ALL.xml [last]
=====================================
update_1/release/13.0.10-13.0.12-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="7ad00dc2b0acd1e4fe72797e0be720a5df5675580de689ff7dec0d032fee7c037ced1027ff5107e140d149537cc04d74a6b4bcff6f641e5037fcf580095ea84f" size="7848684" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.12-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.10-13.0…" hashFunction="SHA512" hashValue="4f8bcee04e7ddc9684f0f264b12a81dce94a179a7ceaa686427079021d18b17b5ac21d27d612abab50cd6f77560351e1edb8721f68b75b3e57185db65d7ae96f" size="12124599" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.12-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="72df0c72c97068315d781a017da91d6279d4026f94db5e5d58eb7a711f04509a659142d60fe335559afa713dc026f998cc1de6c8e6383ec4896888d607837b17" size="8560367" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.13-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="44124453ad5e941790fa865442479ec425373e148a23e7a0f90b494d9e32e623d99c91fbbe942bb3633016663347593962ce7c2a51a5a69eee30433302f42d19" size="7912308" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.13-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos--13.0.10-13.0…" hashFunction="SHA512" hashValue="9fa955c4ac58cb215cfb783284dca39fbbaab7dcebf9f58ca7e4884ffeb03c102abf97c07c7b7adf60c5d69180529afb48f1a9ca5237d42cb3866c7131a6d687" size="12184147" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.13-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="879e5c052f493485631911ae8b95dcd259c376a43d25ea5e502e2bf3db6e4e66162704d73d0597e85a1433c04fc1d464d64dd4da30b91ce9d77729729d0e931c" size="8623995" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.13-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="e23005d579adbfd1b3cd6b2ee19b7c5c861afa19169d8c6a9249b2ce71c676eac7f7abfa6c1f0d643f7c6372e1ed364657543c88de2bb570938e23629310c85e" size="186481" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.13-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos--13.0.12-13.0…" hashFunction="SHA512" hashValue="9c446838df3df621eb3d282f1d6ed5313eaf228f004ecada89b99e67075217556bf6cbd78f709a2f527719cbcfa394cd9266388ef782d6a1a2b69863380ebe8a" size="208530" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-13.0.13-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="0e958f81c03c334f01ec24727d8b7b203cccd36bc7ef11c97b1792e7b8c2296eb5f148c28bc3ba334b51012dcdb5d2830d7195fa6265e065dfbde1505549be52" size="189676" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.12-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.12-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.12-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.13-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.13-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.13-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.12-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="6fecc36a34bd3d38aa5c34d53bd6d71c6794d07287447f6f70b203f7d210ab485b7face9c7f831c5c526b5549cbf1458a074c146945219b5d8c6561bce2496ed" size="12369078" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.12-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.7-13.0.…" hashFunction="SHA512" hashValue="5dcb89d5f4565bb8513a20efaf84f25f6f85229181400ead93095783553a7ff57abea8643c4196ffc07f33f6c22b3d1d96f2f97a2c32f163397db9a711443629" size="17020253" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.12-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="e0cf078c426841dd4b80e3efbbc33c577a95ffd0af5ea64303989f265b274311725948ec6ffcd832867c7bf9cca51e76078a02aa107663dae22b58791d439c64" size="13174209" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.12-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="27584d28396169d940626225c8ea910b586995de8fcdf0df305585dd2ae62b4f96c8a84135c52cc10d501b3db35fdbdcae8aa96d78a1e89f5c62fe2195dba090" size="8755552" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.12-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.9-13.0.…" hashFunction="SHA512" hashValue="689f37db7be6488773db9e405f7742869cb0885135ab231690fd6b424f4c3a54aedd01f98547e5fffacffe11bd902f77bf3b80279ba2202d16732f221bc71dba" size="13343215" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.12-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="2c0d987c01caee4d38ed9fddfd7f34403f9c00aadf90dadc792a2e9bc062276d6253db468b25e3448a94163a22f94da18f34fafd32e2ca2efb78ac46bdaef286" size="9488151" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.13-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="04cad7d72b90b41fcca52e05cb4c5904d6516669a32772c498e0b0bb2803ce10e1458ff76d4acfd5a3d9146d8673b258a74c45ca978eb09ea7dcf37c1c2e5238" size="107414411" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="913d31600e2b0d20645927fe0549da5881859dc5990942780e3423df7265fabf343b40037a2b488d55fdaeb49f911d3212f61970affd55e43e8f441a489a65c9" size="8819028" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.13-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13_ALL.m…" hashFunction="SHA512" hashValue="7afaca7077a1f968705fcf1094d16a1b441befcbd2de342654ca78d6ba7cc631622493afd3e71984839283aa37abc66c92021dfee8ecdfd345019a549a220ffb" size="115471199" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos--13.0.9-13.0.…" hashFunction="SHA512" hashValue="aab41c685738d2288a7f5e33d83c7ef669460e981a6e9a454e81b8b0b5eef77a01babcb17cb7a071591edfae0a55357de79e5e54df4a07c51383f04e49a1d562" size="13403343" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.13-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.13" appVersion="13.0.13" platformVersion="115.9.1" buildID="20240322132912" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.13" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="c6aea6ab8c33c4c58bd3a5783db1c7ed4682706e09a239b6ac61b6e28f783ae785891b88374caecbeb49dd388853f090e09a0ff84540de69dcccc065fa6abdbe" size="89393168" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="6683305d0c690acd1ee2c5e5c10b430b9b2e93f4905a4cf51f883cf92096291f8373a836a283cdb6fbf60258556052c7308b35b63197e958ae83b7e0212231fa" size="9548715" type="partial"></patch></update></updates>
=====================================
update_1/release/download-linux-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.12"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.13-build1","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.13"}
\ No newline at end of file
=====================================
update_1/release/download-macos.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg.a…","version":"13.0.12"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg","git_tag":"mb-13.0.13-build1","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg.a…","version":"13.0.13"}
\ No newline at end of file
=====================================
update_1/release/download-windows-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","version":"13.0.12"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.13-build1","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…","version":"13.0.13"}
\ No newline at end of file
=====================================
update_1/release/downloads.json
=====================================
@@ -1 +1 @@
-{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.12-build1","version":"13.0.12"}
\ No newline at end of file
+{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-macos-13.0.13.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.13/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.13-build1","version":"13.0.13"}
\ No newline at end of file
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.0.13
by richard (@richard) 22 Mar '24
by richard (@richard) 22 Mar '24
22 Mar '24
richard pushed to branch main at The Tor Project / Applications / Tor Browser update responses
Commits:
95b50a78 by Richard Pospesel at 2024-03-22T17:02:09+00:00
release: new version, 13.0.13
- - - - -
30 changed files:
- update_3/release/.htaccess
- − update_3/release/13.0.10-13.0.12-linux-i686-ALL.xml
- − update_3/release/13.0.10-13.0.12-linux-x86_64-ALL.xml
- − update_3/release/13.0.10-13.0.12-macos-ALL.xml
- − update_3/release/13.0.10-13.0.12-windows-i686-ALL.xml
- − update_3/release/13.0.10-13.0.12-windows-x86_64-ALL.xml
- + update_3/release/13.0.10-13.0.13-linux-i686-ALL.xml
- + update_3/release/13.0.10-13.0.13-linux-x86_64-ALL.xml
- + update_3/release/13.0.10-13.0.13-macos-ALL.xml
- + update_3/release/13.0.10-13.0.13-windows-i686-ALL.xml
- + update_3/release/13.0.10-13.0.13-windows-x86_64-ALL.xml
- − update_3/release/13.0.11-13.0.12-linux-i686-ALL.xml
- − update_3/release/13.0.11-13.0.12-linux-x86_64-ALL.xml
- − update_3/release/13.0.11-13.0.12-macos-ALL.xml
- − update_3/release/13.0.11-13.0.12-windows-i686-ALL.xml
- − update_3/release/13.0.11-13.0.12-windows-x86_64-ALL.xml
- + update_3/release/13.0.11-13.0.13-linux-i686-ALL.xml
- + update_3/release/13.0.11-13.0.13-linux-x86_64-ALL.xml
- + update_3/release/13.0.11-13.0.13-macos-ALL.xml
- + update_3/release/13.0.11-13.0.13-windows-i686-ALL.xml
- + update_3/release/13.0.11-13.0.13-windows-x86_64-ALL.xml
- + update_3/release/13.0.12-13.0.13-linux-i686-ALL.xml
- + update_3/release/13.0.12-13.0.13-linux-x86_64-ALL.xml
- + update_3/release/13.0.12-13.0.13-macos-ALL.xml
- + update_3/release/13.0.12-13.0.13-windows-i686-ALL.xml
- + update_3/release/13.0.12-13.0.13-windows-x86_64-ALL.xml
- − update_3/release/13.0.12-linux-i686-ALL.xml
- − update_3/release/13.0.12-linux-x86_64-ALL.xml
- − update_3/release/13.0.12-macos-ALL.xml
- − update_3/release/13.0.12-windows-i686-ALL.xml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build] Pushed new tag mb-13.0.13-build1
by richard (@richard) 22 Mar '24
by richard (@richard) 22 Mar '24
22 Mar '24
richard pushed new tag mb-13.0.13-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/mb-…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.0.13-build1
by richard (@richard) 22 Mar '24
by richard (@richard) 22 Mar '24
22 Mar '24
richard pushed new tag tbb-13.0.13-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/tbb…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-115.9.1esr-13.0-1-build1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new tag mullvad-browser-115.9.1esr-13.0-1-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.1esr-13.0-1] 18 commits: MB 38: Mullvad Browser configuration
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed to branch mullvad-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Mullvad Browser
Commits:
e27339b2 by Pier Angelo Vendrame at 2024-03-22T13:30:37+01:00
MB 38: Mullvad Browser configuration
- - - - -
890fc86e by Pier Angelo Vendrame at 2024-03-22T13:30:38+01:00
MB 1: Mullvad Browser branding
See also:
mullvad-browser#5: Product name and directory customization
mullvad-browser#12: Create new branding directories and integrate Mullvad icons+branding
mullvad-browser#14: Remove Default Built-in bookmarks
mullvad-browser#35: Add custom PDF icons for Windows builds
mullvad-browser#48: Replace Mozilla copyright and legal trademarks in mullvadbrowser.exe metadata
mullvad-browser#51: Update trademark string
mullvad-browser#104: Update shipped dll metadata copyright/licensing info
mullvad-browser#107: Add alpha and nightly icons
- - - - -
8457cfe2 by Pier Angelo Vendrame at 2024-03-22T13:30:39+01:00
MB 20: Allow packaged-addons in PBM.
We install a few addons from the distribution directory, but they are
not automatically enabled for PBM mode.
This commit modifies the code that installs them to also add the PBM
permission to the known ones.
- - - - -
9ebfee4d by Pier Angelo Vendrame at 2024-03-22T13:30:40+01:00
MB 63: Customize some about pages for Mullvad Browser
Also:
mullvad-browser#57: Purge unneeded about: pages
- - - - -
c73a54ab by Pier Angelo Vendrame at 2024-03-22T14:07:02+01:00
MB 37: Customization for the about dialog
- - - - -
0643bbdd by Henry Wilkes at 2024-03-22T14:07:03+01:00
MB 39: Add home page about:mullvad-browser
- - - - -
6e0a04f3 by hackademix at 2024-03-22T14:07:05+01:00
MB 97: Remove UI cues to install new extensions.
- - - - -
5d3323fe by hackademix at 2024-03-22T14:07:06+01:00
MB 47: uBlock Origin customization
- - - - -
e6a2e35b by Pier Angelo Vendrame at 2024-03-22T14:07:08+01:00
MB 21: Disable the password manager
This commit disables the about:login page and removes the "Login and
Password" section of about:preferences.
We do not do anything to the real password manager of Firefox, that is
in toolkit: it contains C++ parts that make it difficult to actually
prevent it from being built..
Finally, we modify the the function that opens about:login to report an
error in the console so that we can quickly get a backtrace to the code
that tries to use it.
- - - - -
58d1dbda by Pier Angelo Vendrame at 2024-03-22T14:07:09+01:00
MB 87: Disable the default browser box on Windows and Linux
Windows and Linux will be distributed only as portable apps at the
beginning, so they should not be settable as default browsers.
We will need to improve the logic once we decide to ship system-wide
installers, too.
- - - - -
a055020f by Pier Angelo Vendrame at 2024-03-22T14:07:10+01:00
MB 112: Updater customization for Mullvad Browser
MB 71: Set the updater base URL to Mullvad domain
- - - - -
233c5e02 by Nicolas Vigier at 2024-03-22T14:07:12+01:00
MB 79: Add Mullvad Browser MAR signing keys
MB 256: Add mullvad-browser nightly mar signing key
- - - - -
f424d0a6 by Pier Angelo Vendrame at 2024-03-22T14:07:14+01:00
MB 34: Hide unsafe and unwanted preferences UI
about:preferences allow to override some of our defaults, that could
be fingeprintable or have some other unwanted consequences.
- - - - -
f0d45502 by Pier Angelo Vendrame at 2024-03-22T14:07:15+01:00
MB 160: Disable the cookie exceptions button
Besides disabling the "Delete on close checkbox", disable also the
"Manage Exceptions" button when always using PBM.
- - - - -
31171acd by hackademix at 2024-03-22T14:07:16+01:00
MB 163: prevent uBlock Origin from being uninstalled/disabled
- - - - -
1f741e74 by Richard Pospesel at 2024-03-22T14:07:17+01:00
MB 188: Customize Gitlab Issue and Merge templates
- - - - -
a86d6ab2 by rui hildt at 2024-03-22T14:07:18+01:00
MB 213: Customize the search engines list
- - - - -
6cd85fb3 by hackademix at 2024-03-22T14:07:19+01:00
MB 214: Enable cross-tab identity leak protection in "quiet" mode
- - - - -
30 changed files:
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- .gitlab/merge_request_templates/default.md
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/module.ver
- browser/app/firefox.exe.manifest → browser/app/mullvadbrowser.exe.manifest
- + browser/app/profile/000-mullvad-browser.js
- browser/app/profile/001-base-profile.js
- browser/base/content/aboutDialog.xhtml
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-places.js
- browser/base/content/browser.js
- browser/base/content/default-bookmarks.html
- browser/base/content/nsContextMenu.js
- browser/base/content/overrides/app-license.html
- browser/base/content/pageinfo/pageInfo.xhtml
- browser/base/content/utilityOverlay.js
- browser/branding/branding-common.mozbuild
- + browser/branding/mb-alpha/VisualElements_150.png
- + browser/branding/mb-alpha/VisualElements_70.png
- + browser/branding/mb-alpha/configure.sh
- + browser/branding/mb-alpha/content/about-logo.png
- + browser/branding/mb-alpha/content/about-logo.svg
- + browser/branding/mb-alpha/content/about-logo(a)2x.png
- + browser/branding/mb-alpha/content/about-wordmark.svg
- + browser/branding/mb-alpha/content/about.png
- + browser/branding/mb-alpha/content/aboutDialog.css
- + browser/branding/mb-alpha/content/firefox-wordmark.svg
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/9c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/9c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41108, 41109: Prepare Tor and Mullvad Browser Stable 13.0.13
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
49992f2b by Richard Pospesel at 2024-03-22T13:04:30+00:00
Bug 41108, 41109: Prepare Tor and Mullvad Browser Stable 13.0.13
- - - - -
5 changed files:
- projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
- projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
- projects/firefox/config
- projects/translation/config
- rbm.conf
Changes:
=====================================
projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
=====================================
@@ -1,3 +1,9 @@
+Mullvad Browser 13.0.13 - March 22 2024
+ * Windows + macOS + Linux
+ * Updated Firefox to 115.9.1esr
+ * Bug 42473: ESR 115.9.1 fixes [tor-browser]
+ * Bug 277: Rebase Mullvad Browser stable onto Firefox 115.9.1esr [mullvad-browser]
+
Mullvad Browser 13.0.12 - March 19 2024
* All Platforms
* Updated Firefox to 115.9.0esr
=====================================
projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
=====================================
@@ -1,3 +1,9 @@
+Tor Browser 13.0.13 - March 22 2024
+ * Windows + macOS + Linux
+ * Updated Firefox to 115.9.1esr
+ * Bug 42473: ESR 115.9.1 fixes [tor-browser]
+ * Bug 42474: Rebase stable browsers on 115.9.1 [tor-browser]
+
Tor Browser 13.0.12 - March 19 2024
* All Platforms
* Updated Snowflake to 2.9.2
=====================================
projects/firefox/config
=====================================
@@ -14,13 +14,11 @@ container:
use_container: 1
var:
- firefox_platform_version: 115.9.0
+ firefox_platform_version: 115.9.1
firefox_version: '[% c("var/firefox_platform_version") %]esr'
browser_series: '13.0'
browser_branch: '[% c("var/browser_series") %]-1'
- # update the mullvadbrowser specific override for 115.10.0
- # torbrowser had an extra firefox build tag
- browser_build: 3
+ browser_build: 1
branding_directory_prefix: 'tb'
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]'
@@ -104,7 +102,6 @@ targets:
mullvadbrowser:
git_url: https://gitlab.torproject.org/tpo/applications/mullvad-browser.git
var:
- browser_build: 2
branding_directory_prefix: 'mb'
gitlab_project: https://gitlab.torproject.org/tpo/applications/mullvad-browser
updater_url: 'https://cdn.mullvad.net/browser/update_responses/update_1/'
=====================================
projects/translation/config
=====================================
@@ -12,13 +12,13 @@ compress_tar: 'gz'
steps:
base-browser:
base-browser: '[% INCLUDE build %]'
- git_hash: a4d224e82808529e135259e04fb58fb39b90da2d
+ git_hash: 8e04ca3c5f440ed8f16b2069ae9565e4b044ec29
targets:
nightly:
git_hash: 'base-browser'
tor-browser:
tor-browser: '[% INCLUDE build %]'
- git_hash: e7aabc54138211e23bc60af1abe492c8bc68ce4b
+ git_hash: bf2fac60a6c41aa67b8147f22a638d498ac2dcdd
targets:
nightly:
git_hash: 'tor-browser'
@@ -32,7 +32,7 @@ steps:
fenix: '[% INCLUDE build %]'
# We need to bump the commit before releasing but just pointing to a branch
# might cause too much rebuidling of the Firefox part.
- git_hash: ef6bef5e373108c4e633998b517e4bc8c297770a
+ git_hash: c5d462fc3513f23fc74193c7a5c31027fc07672d
compress_tar: 'zst'
targets:
nightly:
=====================================
rbm.conf
=====================================
@@ -73,13 +73,13 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '13.0.12'
- torbrowser_build: 'build2'
+ torbrowser_version: '13.0.13'
+ torbrowser_build: 'build1'
torbrowser_incremental_from:
+ - '13.0.12'
- '[% IF c("var/tor-browser") %]13.0.11[% END %]'
- '13.0.10'
- - '13.0.9'
- - '[% IF c("var/mullvad-browser") %]13.0.7[% END %]'
+ - '[% IF c("var/mullvad-browser") %]13.0.9[% END %]'
updater_enabled: 1
build_mar: 1
mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]'
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/4…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag FIREFOX_115_9_1esr_BUILD1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new tag FIREFOX_115_9_1esr_BUILD1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/FIREF…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag base-browser-115.9.1esr-13.0-1-build1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new tag base-browser-115.9.1esr-13.0-1-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/base-…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new branch mullvad-browser-115.9.1esr-13.0-1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new branch mullvad-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag base-browser-115.9.1esr-13.0-1-build1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new tag base-browser-115.9.1esr-13.0-1-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.1esr-13.0-1] 102 commits: Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed to branch base-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
ca93d2e5 by Eitan Isaacson at 2024-03-22T08:49:48+01:00
Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D179737
- - - - -
9cc5705f by Pier Angelo Vendrame at 2024-03-22T08:49:50+01:00
Bug 1832523 - Allow using NSS to sign and verify MAR signatures. r=application-update-reviewers,glandium,bytesized
Allow using NSS for checking MAR signatures also in platforms where
OS-native APIs are used by default, i.e., macOS and Windows.
Differential Revision: https://phabricator.services.mozilla.com/D177743
- - - - -
ffe40a57 by Pier Angelo Vendrame at 2024-03-22T08:49:51+01:00
Bug 1849129: Prevent exceptions caused by extensions from interrupting the SearchService initialization. r=search-reviewers,Standard8
Differential Revision: https://phabricator.services.mozilla.com/D186456
- - - - -
1314d504 by Emilio Cobos Álvarez at 2024-03-22T08:49:53+01:00
Bug 1853731 - Use html:img for message-bar-icon. r=Gijs,dao,settings-reviewers,desktop-theme-reviewers,sfoster
Differential Revision: https://phabricator.services.mozilla.com/D188521
- - - - -
bdf3a57e by Pier Angelo Vendrame at 2024-03-22T08:49:54+01:00
Bug 1854117 - Sort the DLL blocklist flags. r=mossop,win-reviewers,gstoll
Differential Revision: https://phabricator.services.mozilla.com/D188716
- - - - -
1fe266f3 by Eden Chuang at 2024-03-22T08:49:56+01:00
Bug 1738426 - Ignoring status 206 and vary header checking for opaque response in Cache API. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D186431
- - - - -
f7b58930 by edgul at 2024-03-22T08:49:57+01:00
Bug 1802057 - Block the following characters from use in the cookie name in the cookie string: 0x3B (semi-colon), 0x3D (equals), and 0x7F (del) r=dveditz,cookie-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D182373
- - - - -
5cf6f906 by Kelsey Gilbert at 2024-03-22T08:49:58+01:00
Bug 1819497 - Don't race on static bool for initialization. r=gfx-reviewers,aosmond
We could do non-racy static init here (e.g. with a static initializer
self-calling-closure), but there doesn't seem to be a strong reason for
this. Let's just use a switch and get robustness from -Werror=switch.
Differential Revision: https://phabricator.services.mozilla.com/D188054
- - - - -
c7571f33 by Mark Banner at 2024-03-22T08:50:00+01:00
Bug 1845752. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D186676
- - - - -
6650443a by Bob Owen at 2024-03-22T08:50:01+01:00
Bug 1850072: Initialize RecordedDrawTargetCreation::mHasExistingData. r=jrmuizel
This also specializes ElementStreamFormat for bool.
Differential Revision: https://phabricator.services.mozilla.com/D187794
- - - - -
8c2fa737 by Malte Juergens at 2024-03-22T08:50:03+01:00
Bug 1850200 - Add delay to HTTPS-Only "Continue to HTTPS Site" button r=freddyb
Differential Revision: https://phabricator.services.mozilla.com/D187887
- - - - -
b103ef2a by Andreas Pehrson at 2024-03-22T08:50:04+01:00
Bug 1851803 - Introduce SourceMediaTrack::mDirectDisabledMode. r=karlt
Similar to MediaTrack::mDisabledMode, but this is for uses on the
SourceMediaTrack producer thread. It is still signaled via a control message
from the control thread to maintain order of operations, and is protected by the
SourceMediaTrack mutex.
Differential Revision: https://phabricator.services.mozilla.com/D187554
- - - - -
e2a64a6e by Pier Angelo Vendrame at 2024-03-22T08:50:06+01:00
Bug 1860020 - Remove the assertion on the value of toolkit.telemetry.enabled. r=KrisWright,chutten
Bug 1444275 introduced an assertion on the parent process to check that
the value of toolkit.telemetry.enabled is the expected one.
However, this expected value could be different from the one set and
locked e.g. in some forks. Therefore, the assertion prevented debug
builds from working in these cases.
Differential Revision: https://phabricator.services.mozilla.com/D195080
- - - - -
2ac7c710 by Kagami Sascha Rosylight at 2024-03-22T08:50:08+01:00
Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame
Per /etc/fonts.xml, there are now only two `<family lang="ko">` nodes there:
* OneUISansKRVF series
* SECCJK series (but no KR postfix anymore?)
This patch uses One UI Sans KR VF as the replacement as this is newer and is a variable font (tested with https://codepen.io/SaschaNaz/pen/ExrdYXJ)
Differential Revision: https://phabricator.services.mozilla.com/D195078
- - - - -
09a9671b by Pier Angelo Vendrame at 2024-03-22T08:50:09+01:00
Bug 1875306 - Localize numbers in the underflow and overflow error messages. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D198965
- - - - -
0c2ead72 by Pier Angelo Vendrame at 2024-03-22T08:50:10+01:00
Bug 1875313 - Use en-US as a fallback when spoof English is enabled in ICUUtils. r=timhuang,tjr
Differential Revision: https://phabricator.services.mozilla.com/D198967
- - - - -
8cc62d80 by Pier Angelo Vendrame at 2024-03-22T08:50:12+01:00
Bug 1880988 - Apply spoof English to the default detail summary. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D202203
- - - - -
2983031b by Tom Ritter at 2024-03-22T12:33:11+01:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
9b867626 by Henry Wilkes at 2024-03-22T12:33:12+01:00
Bug 41454: Move focus after calling openPreferences for a sub-category.
Temporary fix until mozilla bug 1799153 gets a patch upstream.
- - - - -
9daf151b by hackademix at 2024-03-22T12:33:13+01:00
Bug 42194: Fix blank net error page on failed DNS resolution with active proxy.
- - - - -
c7a639d2 by Henry Wilkes at 2024-03-22T12:33:15+01:00
Bug 41483: Remove the firefox override for appstrings.properties
Remove this patch after upstream bugzilla bug 1790187
- - - - -
31293944 by Pier Angelo Vendrame at 2024-03-22T12:33:16+01:00
Bug 41116: Normalize system fonts.
System fonts are an enormous fingerprinting vector.
Even with font allow lists and with our custom configuration on Linux,
which counter metrics measurements, getComputedStyle leaks several
details.
This patch counters both these kinds of attacks.
- - - - -
886c5c23 by Marco Simonelli at 2024-03-22T12:33:17+01:00
Bug 41459: WebRTC fails to build under mingw (Part 1)
- properly define NOMINMAX for just MSVC builds
- - - - -
79a532f4 by Marco Simonelli at 2024-03-22T12:33:19+01:00
Bug 41459: WebRTC fails to build under mingw (Part 2)
- fixes required to build third_party/libwebrtc
- - - - -
f4ef19b0 by Marco Simonelli at 2024-03-22T12:33:20+01:00
Bug 41459: WebRTC fails to build under mingw (Part 3)
- fixes required to build third_party/sipcc
- - - - -
f149c1c6 by Marco Simonelli at 2024-03-22T12:33:21+01:00
Bug 41459: WebRTC fails to build under mingw (Part 4)
- fixes requried to build netwerk/sctp
- - - - -
155378a2 by Marco Simonelli at 2024-03-22T12:33:22+01:00
Bug 41459: WebRTC fails to build under mingw (Part 5)
- fixes required to build dom/media/webrtc
- - - - -
a1c9566b by Marco Simonelli at 2024-03-22T12:33:24+01:00
Bug 41459: WebRTC fails to build under mingw (Part 6)
- fixes required to build dom/media/systemservices
- - - - -
5411e5e0 by hackademix at 2024-03-22T12:33:25+01:00
Bug 41854: Allow overriding download spam protection.
- - - - -
2af70f2e by Gaba at 2024-03-22T12:33:26+01:00
Adding issue and merge request templates
- - - - -
646325d7 by Pier Angelo Vendrame at 2024-03-22T12:33:27+01:00
Base Browser's .mozconfigs.
Bug 17858: Cannot create incremental MARs for hardened builds.
Define HOST_CFLAGS, etc. to avoid compiling programs such as mbsdiff
(which is part of mar-tools and is not distributed to end-users) with
ASan.
Bug 21849: Don't allow SSL key logging.
Bug 25741 - TBA: Disable features at compile-time
Define MOZ_ANDROID_NETWORK_STATE and MOZ_ANDROID_LOCATION
Bug 27623 - Export MOZILLA_OFFICIAL during desktop builds
This fixes a problem where some preferences had the wrong default value.
Also see bug 27472 where we made a similar fix for Android.
Bug 29859: Disable HLS support for now
Bug 30463: Explicitly disable MOZ_TELEMETRY_REPORTING
Bug 32493: Disable MOZ_SERVICES_HEALTHREPORT
Bug 33734: Set MOZ_NORMANDY to False
Bug 33851: Omit Parental Controls.
Bug 40252: Add --enable-rust-simd to our tor-browser mozconfig files
Bug 41584: Move some configuration options to base-browser level
- - - - -
024f12f2 by Pier Angelo Vendrame at 2024-03-22T12:33:28+01:00
Tweaks to the build system
Bug 40857: Modified the fat .aar creation file
This is a workaround to build fat .aars with the compiling enviornment
disabled.
Mozilla does not use a similar configuration, but either runs a Firefox
build and discards its output, or uses artifacts build.
We might switch to artifact builds too, and drop this patch, or write a
better one to upstream. But until then we need this patch.
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1763770.
Bug 41458: Prevent `mach package-multi-locale` from actually creating a package
macOS builds need some files to be moved around with
./mach package-multi-locale to create multi-locale packages.
The required command isn't exposed through any other mach command.
So, we patch package-multi-locale both to prevent it from failing when
doing official builds and to detect any future changes on it.
- - - - -
60a243b6 by Pier Angelo Vendrame at 2024-03-22T12:33:29+01:00
Bug 41108: Remove privileged macOS installation from 102
- - - - -
41b84eee by Dan Ballard at 2024-03-22T12:33:30+01:00
Bug 41149: Re-enable DLL injection protection in all builds not just nightlies
- - - - -
27191447 by Matthew Finkel at 2024-03-22T12:33:30+01:00
Bug 24796: Comment out excess permissions from GeckoView
The GeckoView AndroidManifest.xml is not preprocessed unlike Fennec's
manifest, so we can't use the ifdef preprocessor guards around the
permissions we do not want. Commenting the permissions is the
next-best-thing.
- - - - -
f397e52d by Matthew Finkel at 2024-03-22T12:33:31+01:00
Bug 28125: Prevent non-Necko network connections
- - - - -
7b8e6175 by Mike Perry at 2024-03-22T12:33:32+01:00
Bug 12974: Disable NTLM and Negotiate HTTP Auth
The Mozilla bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1046421,
https://bugzilla.mozilla.org/show_bug.cgi?id=1261591, tor-browser#27602
- - - - -
6a98ad8b by Alex Catarineu at 2024-03-22T12:33:33+01:00
Bug 40166: Disable security.certerrors.mitm.auto_enable_enterprise_roots
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1768899
- - - - -
30d8d912 by Georg Koppen at 2024-03-22T12:33:34+01:00
Bug 16285: Exclude ClearKey system for now
In the past the ClearKey system had not been compiled when specifying
--disable-eme. But that changed and it is even bundled nowadays (see:
Mozilla's bug 1300654). We don't want to ship it right now as the use
case for it is not really visible while the code had security
vulnerabilities in the past.
- - - - -
0503a022 by Kathy Brade at 2024-03-22T12:33:35+01:00
Bug 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
- - - - -
98697634 by Kathy Brade at 2024-03-22T12:33:36+01:00
Bug 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
Hide elements on about:logins that mention sync, "Firefox LockWise", and
Mozilla's LockWise mobile apps.
Disable the "Create New Login" button when security.nocertdb is true.
- - - - -
90fd4ccb by Alex Catarineu at 2024-03-22T12:33:37+01:00
Bug 41457: Remove Mozilla permissions
Bug 40025: Remove Mozilla add-on install permissions
- - - - -
4841a061 by Kathy Brade at 2024-03-22T12:33:38+01:00
Bug 40002: Remove about:ion
Firefox Ion (previously Firefox Pioneer) is an opt-in program in which people
volunteer to participate in studies that collect detailed, sensitive data about
how they use their browser.
Bug 41662: Disable about:sync-logs
Even though we disable sync by default with
`identity.fxaccounts.enabled`, this about: page is still avilable.
We could throw an exception on the constructor of the related
component, but it would result only in an error in the console, without
a visible "this address does not look right" error page.
If we fix the issues with MOZ_SERVICES_SYNC, we can restore the
component.
- - - - -
7e948a27 by Arthur Edelstein at 2024-03-22T12:33:38+01:00
Bug 26353: Prevent speculative connect that violated FPI.
Connections were observed in the catch-all circuit when
the user entered an https or http URL in the URL bar, or
typed a search term.
- - - - -
900b3f30 by Alex Catarineu at 2024-03-22T12:33:39+01:00
Bug 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
Avoid creating instance for 'anti-tracking-url-decoration'.
If prefs are disabling their usage, avoid creating instances for
'cert-revocations' and 'intermediates'.
Do not ship JSON dumps for collections we do not expect to need. For
the ones in the 'main' bucket, this prevents them from being synced
unnecessarily (the code in remote-settings does so for collections
in the main bucket for which a dump or local data exists). For the
collections in the other buckets, we just save some size by not
shipping their dumps.
We also clear the collections database on the v2 -> v3 migration.
- - - - -
8ddd9fcf by cypherpunks1 at 2024-03-22T12:33:40+01:00
Bug 41092: Add a RemoteSettings JSON dump for query-stripping
- - - - -
be671e49 by Pier Angelo Vendrame at 2024-03-22T12:33:41+01:00
Bug 41635: Disable the Normandy component
Do not include Normandy at all whenever MOZ_NORMANDY is False.
- - - - -
1ecbf133 by Georg Koppen at 2024-03-22T12:33:42+01:00
Bug 30541: Disable WebGL readPixel() for web content
Related Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1428034
- - - - -
4e39417a by Alex Catarineu at 2024-03-22T12:33:43+01:00
Bug 28369: Stop shipping pingsender executable
- - - - -
3e4da69f by cypherpunks1 at 2024-03-22T12:33:44+01:00
Bug 41568: Disable LaterRun
- - - - -
ed367481 by cypherpunks1 at 2024-03-22T12:33:45+01:00
Bug 40717: Hide Windows SSO in settings
- - - - -
38b40866 by Pier Angelo Vendrame at 2024-03-22T12:33:46+01:00
Bug 41599: Always return an empty string as network ID
Firefox computes an internal network ID used to detect network changes
and act consequently (e.g., to improve WebSocket UX).
However, there are a few ways to get this internal network ID, so we
patch them out, to be sure any new code will not be able to use them and
possibly link users.
We also sent a patch to Mozilla to seed the internal network ID, to
prevent any accidental leak in the future.
Upstream: https://bugzilla.mozilla.org/show_bug.cgi?id=1817756
- - - - -
c447fe01 by cypherpunks1 at 2024-03-22T12:33:47+01:00
Bug 40175: Add origin attributes to about:reader top-level requests
- - - - -
d87638e0 by Richard Pospesel at 2024-03-22T12:33:48+01:00
Bug 41327: Disable UrlbarProviderInterventions
- - - - -
bb3d5434 by Richard Pospesel at 2024-03-22T12:33:49+01:00
Bug 42037: Disable about:firefoxview page
- - - - -
c5ba531f by Mike Perry at 2024-03-22T12:33:49+01:00
Firefox preference overrides.
This hack directly includes our preference changes in omni.ja.
Bug 18292: Staged updates fail on Windows
Temporarily disable staged updates on Windows.
Bug 18297: Use separate Noto JP,KR,SC,TC fonts
Bug 23404: Add Noto Sans Buginese to the macOS whitelist
Bug 23745: Set dom.indexedDB.enabled = true
Bug 13575: Disable randomised Firefox HTTP cache decay user tests.
(Fernando Fernandez Mancera <ffmancera(a)riseup.net>)
Bug 17252: Enable session identifiers with FPI
Session tickets and session identifiers were isolated
by OriginAttributes, so we can re-enable them by
allowing the default value (true) of
"security.ssl.disable_session_identifiers".
The pref "security.enable_tls_session_tickets" is obsolete
(removed in https://bugzilla.mozilla.org/917049)
Bug 14952: Enable http/2 and AltSvc
In Firefox, SPDY/HTTP2 now uses Origin Attributes for
isolation of connections, push streams, origin frames, etc.
That means we get first-party isolation provided
"privacy.firstparty.isolate" is true. So in this patch, we
stop overriding "network.http.spdy.enabled" and
"network.http.spdy.enabled.http2".
Alternate Services also use Origin Attributes for isolation.
So we stop overriding
"network.http.altsvc.enabled" and "network.http.altsvc.oe"
as well.
(All 4 of the abovementioned "network.http.*" prefs adopt
Firefox 60ESR's default value of true.)
However, we want to disable HTTP/2 push for now, so we
set "network.http.spdy.allow-push" to false.
"network.http.spdy.enabled.http2draft" was removed in Bug 1132357.
"network.http.sped.enabled.v2" was removed in Bug 912550.
"network.http.sped.enabled.v3" was removed in Bug 1097944.
"network.http.sped.enabled.v3-1" was removed in Bug 1248197.
Bug 26114: addons.mozilla.org is not special
* Don't expose navigator.mozAddonManager on any site
* Don't block NoScript from modifying addons.mozilla.org or other sites
Enable ReaderView mode again (#27281).
Bug 29916: Make sure enterprise policies are disabled
Bug 2874: Block Components.interfaces from content
Bug 26146: Spoof HTTP User-Agent header for desktop platforms
In Tor Browser 8.0, the OS was revealed in both the HTTP User-Agent
header and to JavaScript code via navigator.userAgent. To avoid
leaking the OS inside each HTTP request (which many web servers
log), always use the Windows 7 OS value in the desktop User-Agent
header. We continue to allow access to the actual OS via JavaScript,
since doing so improves compatibility with web applications such
as GitHub and Google Docs.
Bug 12885: Windows Jump Lists fail for Tor Browser
Jumplist entries are stored in a binary file in:
%APPDATA%\\Microsoft\Windows\Recent\CustomDestinations\
and has a name in the form
[a-f0-9]+.customDestinations-ms
The hex at the front is unique per app, and is ultimately derived from
something called the 'App User Model ID' (AUMID) via some unknown
hashing method. The AUMID is provided as a key when programmatically
creating, updating, and deleting a jumplist. The default behaviour in
firefox is for the installer to define an AUMID for an app, and save it
in the registry so that the jumplist data can be removed by the
uninstaller.
However, the Tor Browser does not set this (or any other) regkey during
installation, so this codepath fails and the app's AUMID is left
undefined. As a result the app's AUMID ends up being defined by
windows, but unknowable by Tor Browser. This unknown AUMID is used to
create and modify the jumplist, but the delete API requires that we
provide the app's AUMID explicitly. Since we don't know what the AUMID
is (since the expected regkey where it is normally stored does not
exist) jumplist deletion will fail and we will leave behind a mostly
empty customDestinations-ms file. The name of the file is derived from
the binary path, so an enterprising person could reverse engineer how
that hex name is calculated, and generate the name for Tor Browser's
default Desktop installation path to determine whether a person had
used Tor Browser in the past.
The 'taskbar.grouping.useprofile' option that is enabled by this patch
works around this AUMID problem by having firefox.exe create it's own
AUMID based on the profile path (rather than looking for a regkey). This
way, if a user goes in and enables and disables jumplist entries, the
backing store is properly deleted.
Unfortunately, all windows users currently have this file lurking in
the above mentioned directory and this patch will not remove it since it
was created with an unknown AUMID. However, another patch could be
written which goes to that directory and deletes any item containing the
'Tor Browser' string. See bug 28996.
Bug 30845: Make sure default themes and other internal extensions are enabled
Bug 28896: Enable extensions in private browsing by default
Bug 31065: Explicitly allow proxying localhost
Bug 31598: Enable letterboxing
Disable Presentation API everywhere
Bug 21549 - Use Firefox's WASM default pref. It is disabled at safer
security levels.
Bug 32321: Disable Mozilla's MitM pings
Bug 19890: Disable installation of system addons
By setting the URL to "" we make sure that already installed system
addons get deleted as well.
Bug 22548: Firefox downgrades VP9 videos to VP8.
On systems where H.264 is not available or no HWA, VP9 is preferred. But in Tor
Browser 7.0 all youtube videos are degraded to VP8.
This behaviour can be turned off by setting media.benchmark.vp9.threshold to 0.
All clients will get better experience and lower traffic, beause TBB doesn't
use "Use hardware acceleration when available".
Bug 25741 - TBA: Add mobile-override of 000-tor-browser prefs
Bug 16441: Suppress "Reset Tor Browser" prompt.
Bug 29120: Use the in-memory media cache and increase its maximum size.
Bug 33697: use old search config based on list.json
Bug 33855: Ensure that site-specific browser mode is disabled.
Bug 30682: Disable Intermediate CA Preloading.
Bug 40061: Omit the Windows default browser agent from the build
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40408: Disallow SVG Context Paint in all web content
Bug 40308: Disable network partitioning until we evaluate dFPI
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40383: Disable dom.enable_event_timing
Bug 40423: Disable http/3
Bug 40177: Update prefs for Fx91esr
Bug 40700: Disable addons and features recommendations
Bug 40682: Disable network.proxy.allow_bypass
Bug 40736: Disable third-party cookies in PBM
Bug 19850: Enabled HTTPS-Only by default
Bug 40912: Hide the screenshot menu
Bug 41292: Disable moreFromMozilla in preferences page
Bug 40057: Ensure the CSS4 system colors are not a fingerprinting vector
Bug 24686: Set network.http.tailing.enabled to true
Bug 40183: Disable TLS ciphersuites using SHA-1
Bug 40783: Review 000-tor-browser.js and 001-base-profile.js for 102
We reviewed all the preferences we set for 102, and remove a few old
ones. See the description of that issue to see all the preferences we
believed were still valid for 102, and some brief description for the
reasons to keep them.
- - - - -
ba154172 by Richard Pospesel at 2024-03-22T12:33:51+01:00
Bug 41659: Add canonical color definitions to base-browser
- - - - -
aa794b04 by Pier Angelo Vendrame at 2024-03-22T12:33:51+01:00
Bug 41043: Hardcode the UI font on Linux
The mechanism to choose the UI font does not play well with our
fontconfig configuration. As a result, the final criterion to choose
the font for the UI was its version.
Since we hardcode Arimo as a default sans-serif on preferences, we use
it also for the UI. FontConfig will fall back to some other font for
scripts Arimo does not cover as expected (we tested with Japanese).
- - - - -
042a5658 by Alex Catarineu at 2024-03-22T12:33:52+01:00
Bug 30605: Honor privacy.spoof_english in Android
This checks `privacy.spoof_english` whenever `setLocales` is
called from Fenix side and sets `intl.accept_languages`
accordingly.
Bug 40198: Expose privacy.spoof_english pref in GeckoView
- - - - -
567e7875 by Alex Catarineu at 2024-03-22T12:33:54+01:00
Bug 40199: Avoid using system locale for intl.accept_languages in GeckoView
- - - - -
38f16545 by Alex Catarineu at 2024-03-22T12:33:55+01:00
Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware
- - - - -
4332b811 by Alex Catarineu at 2024-03-22T12:33:56+01:00
Bug 26345: Hide tracking protection UI
- - - - -
6a3a2c91 by Pier Angelo Vendrame at 2024-03-22T12:33:57+01:00
Bug 9173: Change the default Firefox profile directory to be relative.
This commit makes Firefox look for the default profile directory in a
directory relative to the binary path.
The directory can be specified through the --with-relative-data-dir.
This is relative to the same directory as the firefox main binary for
Linux and Windows.
On macOS, we remove Contents/MacOS from it.
Or, in other words, the directory is relative to the application
bundle.
This behavior can be overriden at runtime, by placing a file called
system-install adjacent to the firefox main binary (also on macOS).
- - - - -
8f7dc599 by Alex Catarineu at 2024-03-22T12:33:58+01:00
Bug 27604: Fix addon issues when moving the profile directory
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1429838
- - - - -
97cc98ad by Mike Perry at 2024-03-22T12:34:00+01:00
Bug 13028: Prevent potential proxy bypass cases.
It looks like these cases should only be invoked in the NSS command line
tools, and not the browser, but I decided to patch them anyway because there
literally is a maze of network function pointers being passed around, and it's
very hard to tell if some random code might not pass in the proper proxied
versions of the networking code here by accident.
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1433509
- - - - -
8a77ae3f by Igor Oliveira at 2024-03-22T12:34:01+01:00
Bug 23104: Add a default line height compensation
Many fonts have issues with their vertical metrics. they
are used to influence the height of ascenders and depth
of descenders. Gecko uses it to calculate the line height
(font height + ascender + descender), however because of
that idiosyncratic behavior across multiple operating
systems, it can be used to identify the user's OS.
The solution proposed in the patch uses a default factor
to be multiplied with the font size, simulating the concept
of ascender and descender. This way all operating
systems will have the same line height.
- - - - -
a98102f3 by Pier Angelo Vendrame at 2024-03-22T12:34:02+01:00
Bug 40309: Avoid using regional OS locales
Avoid regional OS locales if the pref
`intl.regional_prefs.use_os_locales` is false but RFP is enabled.
- - - - -
7ddc6cb0 by Matthew Finkel at 2024-03-22T12:34:03+01:00
Bug 40432: Prevent probing installed applications
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1711084
- - - - -
dd8db331 by cypherpunks1 at 2024-03-22T12:34:04+01:00
Bug 33955: When copying an image only copy the image contents to the clipboard
- - - - -
ca9fb977 by cypherpunks1 at 2024-03-22T12:34:05+01:00
Bug 41791: Omit the source URL when copying page contents to the clipboard
- - - - -
9fa540fa by hackademix at 2024-03-22T12:34:06+01:00
Bug 42288: Allow language spoofing in status messages.
- - - - -
ee547660 by Pier Angelo Vendrame at 2024-03-22T12:34:07+01:00
Base Browser strings
This commit adds all the strings needed by following Base Browser
patches.
- - - - -
efda290f by hackademix at 2024-03-22T12:34:08+01:00
Bug 41434: Letterboxing, preemptively apply margins in a global CSS rule to mitigate race conditions on newly created windows and tabs.
- - - - -
7df53efd by hackademix at 2024-03-22T12:34:09+01:00
Bug 41434: Letterboxing, improve logging.
- - - - -
d8e11b30 by hackademix at 2024-03-22T12:34:09+01:00
Bug 31064: Letterboxing, exempt browser extensions.
- - - - -
60db46ee by hackademix at 2024-03-22T12:34:10+01:00
Bug 32411: Letterboxing, exempt view-source: URIs.
- - - - -
4a6ea119 by hackademix at 2024-03-22T12:34:11+01:00
Bug 32308: use direct browser sizing for letterboxing.
Bug 30556: align letterboxing with 200x100 new win width stepping
- - - - -
5d560062 by hackademix at 2024-03-22T12:34:12+01:00
Bug 41631: Prevent weird initial window dimensions caused by subpixel computations
- - - - -
dd4f5ca8 by Pier Angelo Vendrame at 2024-03-22T12:34:13+01:00
Bug 41369: Improve Firefox language settings for multi-lingual packages
Change the language selector to be sorted by language code, rather than
name, and to display the language code to the user.
Bug 41372: Handle Japanese as a special case in preferences on macOS
Japanese is treated in a special way on macOS. However, seeing the
Japanese language tag could be confusing for users, and moreover the
language name is not localized correctly like other langs.
Bug 41378: Tell users that they can change their language at the first start
With multi-lingual builds, Tor Browser matches the user's system
language, but some users might want to change it.
So, we tell them that it is possible, but only once.
- - - - -
3cbb0ce1 by p13dz at 2024-03-22T12:34:15+01:00
Bug 40283: Workaround for the file upload bug
- - - - -
73a05acb by Arthur Edelstein at 2024-03-22T12:34:16+01:00
Bug 18905: Hide unwanted items from help menu
Bug 25660: Remove the "New Private Window" option
- - - - -
6cc794f6 by cypherpunks1 at 2024-03-22T12:34:16+01:00
Bug 41740: Change the RFP value of devicePixelRatio to 2
- - - - -
66add4d2 by Pier Angelo Vendrame at 2024-03-22T12:34:18+01:00
Bug 41739: Remove "Website appearance" from about:preferences.
It is ignored because of RFP and it is confusing for users.
- - - - -
173e40cb by cypherpunks1 at 2024-03-22T12:34:19+01:00
Bug 41881: Don't persist custom network requests on private windows
- - - - -
ffdb6e08 by hackademix at 2024-03-22T12:34:20+01:00
Bug 42019: Empty browser's clipboard on browser shutdown
- - - - -
a102e065 by hackademix at 2024-03-22T12:34:21+01:00
Bug 42084: Ensure English spoofing works even if preferences are set out of order.
- - - - -
f25db113 by Pier Angelo Vendrame at 2024-03-22T12:34:22+01:00
Bug 42376: Pass the locale list when constructing l10n in datetimebox
The datetime input is inconsistent with other inputs when using spoof
English: its placeholder is not translated, unlike the default values
and texts of all the other inputs.
- - - - -
00d92cbc by Pier Angelo Vendrame at 2024-03-22T12:34:23+01:00
Bug 41603: Customize the creation of MOZ_SOURCE_URL
MOZ_SOURCE_URL is created by combining MOZ_SOURCE_REPO and
MOZ_SOURCE_CHANGESET.
But the code takes for granted that it refers to a Hg instance, so it
combines them as `$MOZ_SOURCE_REPO/rev/$MOZ_SOURCE_CHANGESET`.
With this commit, we change this logic to combine them to create a URL
that is valid for GitLab.
$MOZ_SOURCE_CHANGESET needs to be a commit hash, not a branch or a tag.
If that is needed, we could use /-/tree/, instead of /-/commit/.
- - - - -
7631fec9 by Henry Wilkes at 2024-03-22T12:34:24+01:00
Bug 31575: Disable Firefox Home (Activity Stream)
Treat about:blank as the default home page and new tab page.
Avoid loading AboutNewTab in BrowserGlue.sys.mjs in order
to avoid several network requests that we do not need.
Bug 41624: Disable about:pocket-* pages.
Bug 40144: Redirect about:privatebrowsing to the user's home
- - - - -
a40294af by Kathy Brade at 2024-03-22T12:34:24+01:00
Bug 4234: Use the Firefox Update Process for Base Browser.
Windows: disable "runas" code path in updater (15201).
Windows: avoid writing to the registry (16236).
Also includes fixes for tickets 13047, 13301, 13356, 13594, 15406,
16014, 16909, 24476, and 25909.
Also fix bug 27221: purge the startup cache if the Base Browser
version changed (even if the Firefox version and build ID did
not change), e.g., after a minor Base Browser update.
Also fix 32616: Disable GetSecureOutputDirectoryPath() functionality.
Bug 26048: potentially confusing "restart to update" message
Within the update doorhanger, remove the misleading message that mentions
that windows will be restored after an update is applied, and replace the
"Restart and Restore" button label with an existing
"Restart to update Tor Browser" string.
Bug 28885: notify users that update is downloading
Add a "Downloading Base Browser update" item which appears in the
hamburger (app) menu while the update service is downloading a MAR
file. Before this change, the browser did not indicate to the user
that an update was in progress, which is especially confusing in
Tor Browser because downloads often take some time. If the user
clicks on the new menu item, the about dialog is opened to allow
the user to see download progress.
As part of this fix, the update service was changed to always show
update-related messages in the hamburger menu, even if the update
was started in the foreground via the about dialog or via the
"Check for Tor Browser Update" toolbar menu item. This change is
consistent with the Tor Browser goal of making sure users are
informed about the update process.
Removed #28885 parts of this patch which have been uplifted to Firefox.
- - - - -
1818e590 by Pier Angelo Vendrame at 2024-03-22T12:34:25+01:00
Bug 42061: Create an alpha update channel.
- - - - -
3306843a by Nicolas Vigier at 2024-03-22T12:34:26+01:00
Bug 41682: Add base-browser nightly mar signing key
- - - - -
6eae8796 by hackademix at 2024-03-22T12:34:27+01:00
Bug 41695: Warn on window maximization without letterboxing in RFPHelper module
- - - - -
73492950 by Pier Angelo Vendrame at 2024-03-22T12:34:28+01:00
Bug 41698: Reword the recommendation badges in about:addons
Firefox strings use { -brand-product-name }.
As a result, it seems that the fork is recommending extensions, whereas
AMO curators are doing that.
So, we replace the strings with custom ones that clarify that Mozilla is
recommending them.
We assign the strings with JS because our translation backend does not
support Fluent attributes, yet, but once it does, we should switch to
them, instead.
Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1825033
- - - - -
8ad563b8 by Alex Catarineu at 2024-03-22T12:34:29+01:00
Bug 40069: Add helpers for message passing with extensions
- - - - -
7c5992f1 by Matthew Finkel at 2024-03-22T12:34:30+01:00
Bug 41598: Prevent NoScript from being removed/disabled.
Bug 40253: Explicitly allow NoScript in Private Browsing mode.
- - - - -
9d643d1b by Henry Wilkes at 2024-03-22T12:34:31+01:00
Bug 41736: Hide NoScript extension's toolbar button by default.
This hides it from both the toolbar and the unified extensions panel.
We also hide the unified-extension-button if the panel would be empty:
not including the NoScript button when it is hidden. As a result, this
will be hidden by default until a user installs another extension (or
shows the NoScript button and unpins it).
- - - - -
0c837cec by hackademix at 2024-03-22T12:34:32+01:00
Bug 41834: Hide "Can't Be Removed - learn more" menu line for uninstallable add-ons
- - - - -
ba74c5d9 by Pier Angelo Vendrame at 2024-03-22T12:34:33+01:00
Bug 40925: Implemented the Security Level component
This component adds a new Security Level toolbar button which visually
indicates the current global security level via icon (as defined by the
extensions.torbutton.security_slider pref), a drop-down hanger with a
short description of the current security level, and a new section in
the about:preferences#privacy page where users can change their current
security level. In addition, the hanger and the preferences page will
show a visual warning when the user has modified prefs associated with
the security level and provide a one-click 'Restore Defaults' button to
get the user back on recommended settings.
Bug 40125: Expose Security Level pref in GeckoView
- - - - -
824aa2b2 by Pier Angelo Vendrame at 2024-03-22T12:34:34+01:00
Bug 40926: Implemented the New Identity feature
- - - - -
71180351 by Henry Wilkes at 2024-03-22T12:34:36+01:00
Bug 41736: Customize toolbar for base-browser.
- - - - -
9cd4e95a by Pier Angelo Vendrame at 2024-03-22T12:34:37+01:00
Bug 42027: Base Browser migration procedures.
This commit implmenents the the Base Browser's version of _migrateUI.
- - - - -
30 changed files:
- .eslintignore
- + .gitlab/issue_templates/bug.md
- + .gitlab/merge_request_templates/default.md
- accessible/android/SessionAccessibility.cpp
- accessible/android/SessionAccessibility.h
- accessible/ipc/DocAccessibleParent.cpp
- accessible/ipc/DocAccessibleParent.h
- accessible/ipc/moz.build
- − browser/actors/RFPHelperChild.sys.mjs
- − browser/actors/RFPHelperParent.sys.mjs
- browser/actors/moz.build
- browser/app/Makefile.in
- browser/app/macbuild/Contents/MacOS-files.in
- browser/app/moz.build
- browser/app/permissions
- + browser/app/profile/001-base-profile.js
- browser/app/profile/firefox.js
- browser/base/content/aboutDialog-appUpdater.js
- browser/base/content/aboutDialog.js
- browser/base/content/aboutDialog.xhtml
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-addons.js
- browser/base/content/browser-context.inc
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-safebrowsing.js
- browser/base/content/browser-sets.inc
- browser/base/content/browser-siteIdentity.js
- browser/base/content/browser.css
- browser/base/content/browser.js
- browser/base/content/browser.xhtml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/79bc6f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/79bc6f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.9.1esr-13.0-1-build1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new tag tor-browser-115.9.1esr-13.0-1-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.1esr-13.0-1] 148 commits: Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed to branch tor-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
ca93d2e5 by Eitan Isaacson at 2024-03-22T08:49:48+01:00
Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D179737
- - - - -
9cc5705f by Pier Angelo Vendrame at 2024-03-22T08:49:50+01:00
Bug 1832523 - Allow using NSS to sign and verify MAR signatures. r=application-update-reviewers,glandium,bytesized
Allow using NSS for checking MAR signatures also in platforms where
OS-native APIs are used by default, i.e., macOS and Windows.
Differential Revision: https://phabricator.services.mozilla.com/D177743
- - - - -
ffe40a57 by Pier Angelo Vendrame at 2024-03-22T08:49:51+01:00
Bug 1849129: Prevent exceptions caused by extensions from interrupting the SearchService initialization. r=search-reviewers,Standard8
Differential Revision: https://phabricator.services.mozilla.com/D186456
- - - - -
1314d504 by Emilio Cobos Álvarez at 2024-03-22T08:49:53+01:00
Bug 1853731 - Use html:img for message-bar-icon. r=Gijs,dao,settings-reviewers,desktop-theme-reviewers,sfoster
Differential Revision: https://phabricator.services.mozilla.com/D188521
- - - - -
bdf3a57e by Pier Angelo Vendrame at 2024-03-22T08:49:54+01:00
Bug 1854117 - Sort the DLL blocklist flags. r=mossop,win-reviewers,gstoll
Differential Revision: https://phabricator.services.mozilla.com/D188716
- - - - -
1fe266f3 by Eden Chuang at 2024-03-22T08:49:56+01:00
Bug 1738426 - Ignoring status 206 and vary header checking for opaque response in Cache API. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D186431
- - - - -
f7b58930 by edgul at 2024-03-22T08:49:57+01:00
Bug 1802057 - Block the following characters from use in the cookie name in the cookie string: 0x3B (semi-colon), 0x3D (equals), and 0x7F (del) r=dveditz,cookie-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D182373
- - - - -
5cf6f906 by Kelsey Gilbert at 2024-03-22T08:49:58+01:00
Bug 1819497 - Don't race on static bool for initialization. r=gfx-reviewers,aosmond
We could do non-racy static init here (e.g. with a static initializer
self-calling-closure), but there doesn't seem to be a strong reason for
this. Let's just use a switch and get robustness from -Werror=switch.
Differential Revision: https://phabricator.services.mozilla.com/D188054
- - - - -
c7571f33 by Mark Banner at 2024-03-22T08:50:00+01:00
Bug 1845752. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D186676
- - - - -
6650443a by Bob Owen at 2024-03-22T08:50:01+01:00
Bug 1850072: Initialize RecordedDrawTargetCreation::mHasExistingData. r=jrmuizel
This also specializes ElementStreamFormat for bool.
Differential Revision: https://phabricator.services.mozilla.com/D187794
- - - - -
8c2fa737 by Malte Juergens at 2024-03-22T08:50:03+01:00
Bug 1850200 - Add delay to HTTPS-Only "Continue to HTTPS Site" button r=freddyb
Differential Revision: https://phabricator.services.mozilla.com/D187887
- - - - -
b103ef2a by Andreas Pehrson at 2024-03-22T08:50:04+01:00
Bug 1851803 - Introduce SourceMediaTrack::mDirectDisabledMode. r=karlt
Similar to MediaTrack::mDisabledMode, but this is for uses on the
SourceMediaTrack producer thread. It is still signaled via a control message
from the control thread to maintain order of operations, and is protected by the
SourceMediaTrack mutex.
Differential Revision: https://phabricator.services.mozilla.com/D187554
- - - - -
e2a64a6e by Pier Angelo Vendrame at 2024-03-22T08:50:06+01:00
Bug 1860020 - Remove the assertion on the value of toolkit.telemetry.enabled. r=KrisWright,chutten
Bug 1444275 introduced an assertion on the parent process to check that
the value of toolkit.telemetry.enabled is the expected one.
However, this expected value could be different from the one set and
locked e.g. in some forks. Therefore, the assertion prevented debug
builds from working in these cases.
Differential Revision: https://phabricator.services.mozilla.com/D195080
- - - - -
2ac7c710 by Kagami Sascha Rosylight at 2024-03-22T08:50:08+01:00
Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame
Per /etc/fonts.xml, there are now only two `<family lang="ko">` nodes there:
* OneUISansKRVF series
* SECCJK series (but no KR postfix anymore?)
This patch uses One UI Sans KR VF as the replacement as this is newer and is a variable font (tested with https://codepen.io/SaschaNaz/pen/ExrdYXJ)
Differential Revision: https://phabricator.services.mozilla.com/D195078
- - - - -
09a9671b by Pier Angelo Vendrame at 2024-03-22T08:50:09+01:00
Bug 1875306 - Localize numbers in the underflow and overflow error messages. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D198965
- - - - -
0c2ead72 by Pier Angelo Vendrame at 2024-03-22T08:50:10+01:00
Bug 1875313 - Use en-US as a fallback when spoof English is enabled in ICUUtils. r=timhuang,tjr
Differential Revision: https://phabricator.services.mozilla.com/D198967
- - - - -
8cc62d80 by Pier Angelo Vendrame at 2024-03-22T08:50:12+01:00
Bug 1880988 - Apply spoof English to the default detail summary. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D202203
- - - - -
2983031b by Tom Ritter at 2024-03-22T12:33:11+01:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
9b867626 by Henry Wilkes at 2024-03-22T12:33:12+01:00
Bug 41454: Move focus after calling openPreferences for a sub-category.
Temporary fix until mozilla bug 1799153 gets a patch upstream.
- - - - -
9daf151b by hackademix at 2024-03-22T12:33:13+01:00
Bug 42194: Fix blank net error page on failed DNS resolution with active proxy.
- - - - -
c7a639d2 by Henry Wilkes at 2024-03-22T12:33:15+01:00
Bug 41483: Remove the firefox override for appstrings.properties
Remove this patch after upstream bugzilla bug 1790187
- - - - -
31293944 by Pier Angelo Vendrame at 2024-03-22T12:33:16+01:00
Bug 41116: Normalize system fonts.
System fonts are an enormous fingerprinting vector.
Even with font allow lists and with our custom configuration on Linux,
which counter metrics measurements, getComputedStyle leaks several
details.
This patch counters both these kinds of attacks.
- - - - -
886c5c23 by Marco Simonelli at 2024-03-22T12:33:17+01:00
Bug 41459: WebRTC fails to build under mingw (Part 1)
- properly define NOMINMAX for just MSVC builds
- - - - -
79a532f4 by Marco Simonelli at 2024-03-22T12:33:19+01:00
Bug 41459: WebRTC fails to build under mingw (Part 2)
- fixes required to build third_party/libwebrtc
- - - - -
f4ef19b0 by Marco Simonelli at 2024-03-22T12:33:20+01:00
Bug 41459: WebRTC fails to build under mingw (Part 3)
- fixes required to build third_party/sipcc
- - - - -
f149c1c6 by Marco Simonelli at 2024-03-22T12:33:21+01:00
Bug 41459: WebRTC fails to build under mingw (Part 4)
- fixes requried to build netwerk/sctp
- - - - -
155378a2 by Marco Simonelli at 2024-03-22T12:33:22+01:00
Bug 41459: WebRTC fails to build under mingw (Part 5)
- fixes required to build dom/media/webrtc
- - - - -
a1c9566b by Marco Simonelli at 2024-03-22T12:33:24+01:00
Bug 41459: WebRTC fails to build under mingw (Part 6)
- fixes required to build dom/media/systemservices
- - - - -
5411e5e0 by hackademix at 2024-03-22T12:33:25+01:00
Bug 41854: Allow overriding download spam protection.
- - - - -
2af70f2e by Gaba at 2024-03-22T12:33:26+01:00
Adding issue and merge request templates
- - - - -
646325d7 by Pier Angelo Vendrame at 2024-03-22T12:33:27+01:00
Base Browser's .mozconfigs.
Bug 17858: Cannot create incremental MARs for hardened builds.
Define HOST_CFLAGS, etc. to avoid compiling programs such as mbsdiff
(which is part of mar-tools and is not distributed to end-users) with
ASan.
Bug 21849: Don't allow SSL key logging.
Bug 25741 - TBA: Disable features at compile-time
Define MOZ_ANDROID_NETWORK_STATE and MOZ_ANDROID_LOCATION
Bug 27623 - Export MOZILLA_OFFICIAL during desktop builds
This fixes a problem where some preferences had the wrong default value.
Also see bug 27472 where we made a similar fix for Android.
Bug 29859: Disable HLS support for now
Bug 30463: Explicitly disable MOZ_TELEMETRY_REPORTING
Bug 32493: Disable MOZ_SERVICES_HEALTHREPORT
Bug 33734: Set MOZ_NORMANDY to False
Bug 33851: Omit Parental Controls.
Bug 40252: Add --enable-rust-simd to our tor-browser mozconfig files
Bug 41584: Move some configuration options to base-browser level
- - - - -
024f12f2 by Pier Angelo Vendrame at 2024-03-22T12:33:28+01:00
Tweaks to the build system
Bug 40857: Modified the fat .aar creation file
This is a workaround to build fat .aars with the compiling enviornment
disabled.
Mozilla does not use a similar configuration, but either runs a Firefox
build and discards its output, or uses artifacts build.
We might switch to artifact builds too, and drop this patch, or write a
better one to upstream. But until then we need this patch.
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1763770.
Bug 41458: Prevent `mach package-multi-locale` from actually creating a package
macOS builds need some files to be moved around with
./mach package-multi-locale to create multi-locale packages.
The required command isn't exposed through any other mach command.
So, we patch package-multi-locale both to prevent it from failing when
doing official builds and to detect any future changes on it.
- - - - -
60a243b6 by Pier Angelo Vendrame at 2024-03-22T12:33:29+01:00
Bug 41108: Remove privileged macOS installation from 102
- - - - -
41b84eee by Dan Ballard at 2024-03-22T12:33:30+01:00
Bug 41149: Re-enable DLL injection protection in all builds not just nightlies
- - - - -
27191447 by Matthew Finkel at 2024-03-22T12:33:30+01:00
Bug 24796: Comment out excess permissions from GeckoView
The GeckoView AndroidManifest.xml is not preprocessed unlike Fennec's
manifest, so we can't use the ifdef preprocessor guards around the
permissions we do not want. Commenting the permissions is the
next-best-thing.
- - - - -
f397e52d by Matthew Finkel at 2024-03-22T12:33:31+01:00
Bug 28125: Prevent non-Necko network connections
- - - - -
7b8e6175 by Mike Perry at 2024-03-22T12:33:32+01:00
Bug 12974: Disable NTLM and Negotiate HTTP Auth
The Mozilla bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1046421,
https://bugzilla.mozilla.org/show_bug.cgi?id=1261591, tor-browser#27602
- - - - -
6a98ad8b by Alex Catarineu at 2024-03-22T12:33:33+01:00
Bug 40166: Disable security.certerrors.mitm.auto_enable_enterprise_roots
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1768899
- - - - -
30d8d912 by Georg Koppen at 2024-03-22T12:33:34+01:00
Bug 16285: Exclude ClearKey system for now
In the past the ClearKey system had not been compiled when specifying
--disable-eme. But that changed and it is even bundled nowadays (see:
Mozilla's bug 1300654). We don't want to ship it right now as the use
case for it is not really visible while the code had security
vulnerabilities in the past.
- - - - -
0503a022 by Kathy Brade at 2024-03-22T12:33:35+01:00
Bug 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
- - - - -
98697634 by Kathy Brade at 2024-03-22T12:33:36+01:00
Bug 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
Hide elements on about:logins that mention sync, "Firefox LockWise", and
Mozilla's LockWise mobile apps.
Disable the "Create New Login" button when security.nocertdb is true.
- - - - -
90fd4ccb by Alex Catarineu at 2024-03-22T12:33:37+01:00
Bug 41457: Remove Mozilla permissions
Bug 40025: Remove Mozilla add-on install permissions
- - - - -
4841a061 by Kathy Brade at 2024-03-22T12:33:38+01:00
Bug 40002: Remove about:ion
Firefox Ion (previously Firefox Pioneer) is an opt-in program in which people
volunteer to participate in studies that collect detailed, sensitive data about
how they use their browser.
Bug 41662: Disable about:sync-logs
Even though we disable sync by default with
`identity.fxaccounts.enabled`, this about: page is still avilable.
We could throw an exception on the constructor of the related
component, but it would result only in an error in the console, without
a visible "this address does not look right" error page.
If we fix the issues with MOZ_SERVICES_SYNC, we can restore the
component.
- - - - -
7e948a27 by Arthur Edelstein at 2024-03-22T12:33:38+01:00
Bug 26353: Prevent speculative connect that violated FPI.
Connections were observed in the catch-all circuit when
the user entered an https or http URL in the URL bar, or
typed a search term.
- - - - -
900b3f30 by Alex Catarineu at 2024-03-22T12:33:39+01:00
Bug 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
Avoid creating instance for 'anti-tracking-url-decoration'.
If prefs are disabling their usage, avoid creating instances for
'cert-revocations' and 'intermediates'.
Do not ship JSON dumps for collections we do not expect to need. For
the ones in the 'main' bucket, this prevents them from being synced
unnecessarily (the code in remote-settings does so for collections
in the main bucket for which a dump or local data exists). For the
collections in the other buckets, we just save some size by not
shipping their dumps.
We also clear the collections database on the v2 -> v3 migration.
- - - - -
8ddd9fcf by cypherpunks1 at 2024-03-22T12:33:40+01:00
Bug 41092: Add a RemoteSettings JSON dump for query-stripping
- - - - -
be671e49 by Pier Angelo Vendrame at 2024-03-22T12:33:41+01:00
Bug 41635: Disable the Normandy component
Do not include Normandy at all whenever MOZ_NORMANDY is False.
- - - - -
1ecbf133 by Georg Koppen at 2024-03-22T12:33:42+01:00
Bug 30541: Disable WebGL readPixel() for web content
Related Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1428034
- - - - -
4e39417a by Alex Catarineu at 2024-03-22T12:33:43+01:00
Bug 28369: Stop shipping pingsender executable
- - - - -
3e4da69f by cypherpunks1 at 2024-03-22T12:33:44+01:00
Bug 41568: Disable LaterRun
- - - - -
ed367481 by cypherpunks1 at 2024-03-22T12:33:45+01:00
Bug 40717: Hide Windows SSO in settings
- - - - -
38b40866 by Pier Angelo Vendrame at 2024-03-22T12:33:46+01:00
Bug 41599: Always return an empty string as network ID
Firefox computes an internal network ID used to detect network changes
and act consequently (e.g., to improve WebSocket UX).
However, there are a few ways to get this internal network ID, so we
patch them out, to be sure any new code will not be able to use them and
possibly link users.
We also sent a patch to Mozilla to seed the internal network ID, to
prevent any accidental leak in the future.
Upstream: https://bugzilla.mozilla.org/show_bug.cgi?id=1817756
- - - - -
c447fe01 by cypherpunks1 at 2024-03-22T12:33:47+01:00
Bug 40175: Add origin attributes to about:reader top-level requests
- - - - -
d87638e0 by Richard Pospesel at 2024-03-22T12:33:48+01:00
Bug 41327: Disable UrlbarProviderInterventions
- - - - -
bb3d5434 by Richard Pospesel at 2024-03-22T12:33:49+01:00
Bug 42037: Disable about:firefoxview page
- - - - -
c5ba531f by Mike Perry at 2024-03-22T12:33:49+01:00
Firefox preference overrides.
This hack directly includes our preference changes in omni.ja.
Bug 18292: Staged updates fail on Windows
Temporarily disable staged updates on Windows.
Bug 18297: Use separate Noto JP,KR,SC,TC fonts
Bug 23404: Add Noto Sans Buginese to the macOS whitelist
Bug 23745: Set dom.indexedDB.enabled = true
Bug 13575: Disable randomised Firefox HTTP cache decay user tests.
(Fernando Fernandez Mancera <ffmancera(a)riseup.net>)
Bug 17252: Enable session identifiers with FPI
Session tickets and session identifiers were isolated
by OriginAttributes, so we can re-enable them by
allowing the default value (true) of
"security.ssl.disable_session_identifiers".
The pref "security.enable_tls_session_tickets" is obsolete
(removed in https://bugzilla.mozilla.org/917049)
Bug 14952: Enable http/2 and AltSvc
In Firefox, SPDY/HTTP2 now uses Origin Attributes for
isolation of connections, push streams, origin frames, etc.
That means we get first-party isolation provided
"privacy.firstparty.isolate" is true. So in this patch, we
stop overriding "network.http.spdy.enabled" and
"network.http.spdy.enabled.http2".
Alternate Services also use Origin Attributes for isolation.
So we stop overriding
"network.http.altsvc.enabled" and "network.http.altsvc.oe"
as well.
(All 4 of the abovementioned "network.http.*" prefs adopt
Firefox 60ESR's default value of true.)
However, we want to disable HTTP/2 push for now, so we
set "network.http.spdy.allow-push" to false.
"network.http.spdy.enabled.http2draft" was removed in Bug 1132357.
"network.http.sped.enabled.v2" was removed in Bug 912550.
"network.http.sped.enabled.v3" was removed in Bug 1097944.
"network.http.sped.enabled.v3-1" was removed in Bug 1248197.
Bug 26114: addons.mozilla.org is not special
* Don't expose navigator.mozAddonManager on any site
* Don't block NoScript from modifying addons.mozilla.org or other sites
Enable ReaderView mode again (#27281).
Bug 29916: Make sure enterprise policies are disabled
Bug 2874: Block Components.interfaces from content
Bug 26146: Spoof HTTP User-Agent header for desktop platforms
In Tor Browser 8.0, the OS was revealed in both the HTTP User-Agent
header and to JavaScript code via navigator.userAgent. To avoid
leaking the OS inside each HTTP request (which many web servers
log), always use the Windows 7 OS value in the desktop User-Agent
header. We continue to allow access to the actual OS via JavaScript,
since doing so improves compatibility with web applications such
as GitHub and Google Docs.
Bug 12885: Windows Jump Lists fail for Tor Browser
Jumplist entries are stored in a binary file in:
%APPDATA%\\Microsoft\Windows\Recent\CustomDestinations\
and has a name in the form
[a-f0-9]+.customDestinations-ms
The hex at the front is unique per app, and is ultimately derived from
something called the 'App User Model ID' (AUMID) via some unknown
hashing method. The AUMID is provided as a key when programmatically
creating, updating, and deleting a jumplist. The default behaviour in
firefox is for the installer to define an AUMID for an app, and save it
in the registry so that the jumplist data can be removed by the
uninstaller.
However, the Tor Browser does not set this (or any other) regkey during
installation, so this codepath fails and the app's AUMID is left
undefined. As a result the app's AUMID ends up being defined by
windows, but unknowable by Tor Browser. This unknown AUMID is used to
create and modify the jumplist, but the delete API requires that we
provide the app's AUMID explicitly. Since we don't know what the AUMID
is (since the expected regkey where it is normally stored does not
exist) jumplist deletion will fail and we will leave behind a mostly
empty customDestinations-ms file. The name of the file is derived from
the binary path, so an enterprising person could reverse engineer how
that hex name is calculated, and generate the name for Tor Browser's
default Desktop installation path to determine whether a person had
used Tor Browser in the past.
The 'taskbar.grouping.useprofile' option that is enabled by this patch
works around this AUMID problem by having firefox.exe create it's own
AUMID based on the profile path (rather than looking for a regkey). This
way, if a user goes in and enables and disables jumplist entries, the
backing store is properly deleted.
Unfortunately, all windows users currently have this file lurking in
the above mentioned directory and this patch will not remove it since it
was created with an unknown AUMID. However, another patch could be
written which goes to that directory and deletes any item containing the
'Tor Browser' string. See bug 28996.
Bug 30845: Make sure default themes and other internal extensions are enabled
Bug 28896: Enable extensions in private browsing by default
Bug 31065: Explicitly allow proxying localhost
Bug 31598: Enable letterboxing
Disable Presentation API everywhere
Bug 21549 - Use Firefox's WASM default pref. It is disabled at safer
security levels.
Bug 32321: Disable Mozilla's MitM pings
Bug 19890: Disable installation of system addons
By setting the URL to "" we make sure that already installed system
addons get deleted as well.
Bug 22548: Firefox downgrades VP9 videos to VP8.
On systems where H.264 is not available or no HWA, VP9 is preferred. But in Tor
Browser 7.0 all youtube videos are degraded to VP8.
This behaviour can be turned off by setting media.benchmark.vp9.threshold to 0.
All clients will get better experience and lower traffic, beause TBB doesn't
use "Use hardware acceleration when available".
Bug 25741 - TBA: Add mobile-override of 000-tor-browser prefs
Bug 16441: Suppress "Reset Tor Browser" prompt.
Bug 29120: Use the in-memory media cache and increase its maximum size.
Bug 33697: use old search config based on list.json
Bug 33855: Ensure that site-specific browser mode is disabled.
Bug 30682: Disable Intermediate CA Preloading.
Bug 40061: Omit the Windows default browser agent from the build
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40408: Disallow SVG Context Paint in all web content
Bug 40308: Disable network partitioning until we evaluate dFPI
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40383: Disable dom.enable_event_timing
Bug 40423: Disable http/3
Bug 40177: Update prefs for Fx91esr
Bug 40700: Disable addons and features recommendations
Bug 40682: Disable network.proxy.allow_bypass
Bug 40736: Disable third-party cookies in PBM
Bug 19850: Enabled HTTPS-Only by default
Bug 40912: Hide the screenshot menu
Bug 41292: Disable moreFromMozilla in preferences page
Bug 40057: Ensure the CSS4 system colors are not a fingerprinting vector
Bug 24686: Set network.http.tailing.enabled to true
Bug 40183: Disable TLS ciphersuites using SHA-1
Bug 40783: Review 000-tor-browser.js and 001-base-profile.js for 102
We reviewed all the preferences we set for 102, and remove a few old
ones. See the description of that issue to see all the preferences we
believed were still valid for 102, and some brief description for the
reasons to keep them.
- - - - -
ba154172 by Richard Pospesel at 2024-03-22T12:33:51+01:00
Bug 41659: Add canonical color definitions to base-browser
- - - - -
aa794b04 by Pier Angelo Vendrame at 2024-03-22T12:33:51+01:00
Bug 41043: Hardcode the UI font on Linux
The mechanism to choose the UI font does not play well with our
fontconfig configuration. As a result, the final criterion to choose
the font for the UI was its version.
Since we hardcode Arimo as a default sans-serif on preferences, we use
it also for the UI. FontConfig will fall back to some other font for
scripts Arimo does not cover as expected (we tested with Japanese).
- - - - -
042a5658 by Alex Catarineu at 2024-03-22T12:33:52+01:00
Bug 30605: Honor privacy.spoof_english in Android
This checks `privacy.spoof_english` whenever `setLocales` is
called from Fenix side and sets `intl.accept_languages`
accordingly.
Bug 40198: Expose privacy.spoof_english pref in GeckoView
- - - - -
567e7875 by Alex Catarineu at 2024-03-22T12:33:54+01:00
Bug 40199: Avoid using system locale for intl.accept_languages in GeckoView
- - - - -
38f16545 by Alex Catarineu at 2024-03-22T12:33:55+01:00
Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware
- - - - -
4332b811 by Alex Catarineu at 2024-03-22T12:33:56+01:00
Bug 26345: Hide tracking protection UI
- - - - -
6a3a2c91 by Pier Angelo Vendrame at 2024-03-22T12:33:57+01:00
Bug 9173: Change the default Firefox profile directory to be relative.
This commit makes Firefox look for the default profile directory in a
directory relative to the binary path.
The directory can be specified through the --with-relative-data-dir.
This is relative to the same directory as the firefox main binary for
Linux and Windows.
On macOS, we remove Contents/MacOS from it.
Or, in other words, the directory is relative to the application
bundle.
This behavior can be overriden at runtime, by placing a file called
system-install adjacent to the firefox main binary (also on macOS).
- - - - -
8f7dc599 by Alex Catarineu at 2024-03-22T12:33:58+01:00
Bug 27604: Fix addon issues when moving the profile directory
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1429838
- - - - -
97cc98ad by Mike Perry at 2024-03-22T12:34:00+01:00
Bug 13028: Prevent potential proxy bypass cases.
It looks like these cases should only be invoked in the NSS command line
tools, and not the browser, but I decided to patch them anyway because there
literally is a maze of network function pointers being passed around, and it's
very hard to tell if some random code might not pass in the proper proxied
versions of the networking code here by accident.
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1433509
- - - - -
8a77ae3f by Igor Oliveira at 2024-03-22T12:34:01+01:00
Bug 23104: Add a default line height compensation
Many fonts have issues with their vertical metrics. they
are used to influence the height of ascenders and depth
of descenders. Gecko uses it to calculate the line height
(font height + ascender + descender), however because of
that idiosyncratic behavior across multiple operating
systems, it can be used to identify the user's OS.
The solution proposed in the patch uses a default factor
to be multiplied with the font size, simulating the concept
of ascender and descender. This way all operating
systems will have the same line height.
- - - - -
a98102f3 by Pier Angelo Vendrame at 2024-03-22T12:34:02+01:00
Bug 40309: Avoid using regional OS locales
Avoid regional OS locales if the pref
`intl.regional_prefs.use_os_locales` is false but RFP is enabled.
- - - - -
7ddc6cb0 by Matthew Finkel at 2024-03-22T12:34:03+01:00
Bug 40432: Prevent probing installed applications
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1711084
- - - - -
dd8db331 by cypherpunks1 at 2024-03-22T12:34:04+01:00
Bug 33955: When copying an image only copy the image contents to the clipboard
- - - - -
ca9fb977 by cypherpunks1 at 2024-03-22T12:34:05+01:00
Bug 41791: Omit the source URL when copying page contents to the clipboard
- - - - -
9fa540fa by hackademix at 2024-03-22T12:34:06+01:00
Bug 42288: Allow language spoofing in status messages.
- - - - -
ee547660 by Pier Angelo Vendrame at 2024-03-22T12:34:07+01:00
Base Browser strings
This commit adds all the strings needed by following Base Browser
patches.
- - - - -
efda290f by hackademix at 2024-03-22T12:34:08+01:00
Bug 41434: Letterboxing, preemptively apply margins in a global CSS rule to mitigate race conditions on newly created windows and tabs.
- - - - -
7df53efd by hackademix at 2024-03-22T12:34:09+01:00
Bug 41434: Letterboxing, improve logging.
- - - - -
d8e11b30 by hackademix at 2024-03-22T12:34:09+01:00
Bug 31064: Letterboxing, exempt browser extensions.
- - - - -
60db46ee by hackademix at 2024-03-22T12:34:10+01:00
Bug 32411: Letterboxing, exempt view-source: URIs.
- - - - -
4a6ea119 by hackademix at 2024-03-22T12:34:11+01:00
Bug 32308: use direct browser sizing for letterboxing.
Bug 30556: align letterboxing with 200x100 new win width stepping
- - - - -
5d560062 by hackademix at 2024-03-22T12:34:12+01:00
Bug 41631: Prevent weird initial window dimensions caused by subpixel computations
- - - - -
dd4f5ca8 by Pier Angelo Vendrame at 2024-03-22T12:34:13+01:00
Bug 41369: Improve Firefox language settings for multi-lingual packages
Change the language selector to be sorted by language code, rather than
name, and to display the language code to the user.
Bug 41372: Handle Japanese as a special case in preferences on macOS
Japanese is treated in a special way on macOS. However, seeing the
Japanese language tag could be confusing for users, and moreover the
language name is not localized correctly like other langs.
Bug 41378: Tell users that they can change their language at the first start
With multi-lingual builds, Tor Browser matches the user's system
language, but some users might want to change it.
So, we tell them that it is possible, but only once.
- - - - -
3cbb0ce1 by p13dz at 2024-03-22T12:34:15+01:00
Bug 40283: Workaround for the file upload bug
- - - - -
73a05acb by Arthur Edelstein at 2024-03-22T12:34:16+01:00
Bug 18905: Hide unwanted items from help menu
Bug 25660: Remove the "New Private Window" option
- - - - -
6cc794f6 by cypherpunks1 at 2024-03-22T12:34:16+01:00
Bug 41740: Change the RFP value of devicePixelRatio to 2
- - - - -
66add4d2 by Pier Angelo Vendrame at 2024-03-22T12:34:18+01:00
Bug 41739: Remove "Website appearance" from about:preferences.
It is ignored because of RFP and it is confusing for users.
- - - - -
173e40cb by cypherpunks1 at 2024-03-22T12:34:19+01:00
Bug 41881: Don't persist custom network requests on private windows
- - - - -
ffdb6e08 by hackademix at 2024-03-22T12:34:20+01:00
Bug 42019: Empty browser's clipboard on browser shutdown
- - - - -
a102e065 by hackademix at 2024-03-22T12:34:21+01:00
Bug 42084: Ensure English spoofing works even if preferences are set out of order.
- - - - -
f25db113 by Pier Angelo Vendrame at 2024-03-22T12:34:22+01:00
Bug 42376: Pass the locale list when constructing l10n in datetimebox
The datetime input is inconsistent with other inputs when using spoof
English: its placeholder is not translated, unlike the default values
and texts of all the other inputs.
- - - - -
00d92cbc by Pier Angelo Vendrame at 2024-03-22T12:34:23+01:00
Bug 41603: Customize the creation of MOZ_SOURCE_URL
MOZ_SOURCE_URL is created by combining MOZ_SOURCE_REPO and
MOZ_SOURCE_CHANGESET.
But the code takes for granted that it refers to a Hg instance, so it
combines them as `$MOZ_SOURCE_REPO/rev/$MOZ_SOURCE_CHANGESET`.
With this commit, we change this logic to combine them to create a URL
that is valid for GitLab.
$MOZ_SOURCE_CHANGESET needs to be a commit hash, not a branch or a tag.
If that is needed, we could use /-/tree/, instead of /-/commit/.
- - - - -
7631fec9 by Henry Wilkes at 2024-03-22T12:34:24+01:00
Bug 31575: Disable Firefox Home (Activity Stream)
Treat about:blank as the default home page and new tab page.
Avoid loading AboutNewTab in BrowserGlue.sys.mjs in order
to avoid several network requests that we do not need.
Bug 41624: Disable about:pocket-* pages.
Bug 40144: Redirect about:privatebrowsing to the user's home
- - - - -
a40294af by Kathy Brade at 2024-03-22T12:34:24+01:00
Bug 4234: Use the Firefox Update Process for Base Browser.
Windows: disable "runas" code path in updater (15201).
Windows: avoid writing to the registry (16236).
Also includes fixes for tickets 13047, 13301, 13356, 13594, 15406,
16014, 16909, 24476, and 25909.
Also fix bug 27221: purge the startup cache if the Base Browser
version changed (even if the Firefox version and build ID did
not change), e.g., after a minor Base Browser update.
Also fix 32616: Disable GetSecureOutputDirectoryPath() functionality.
Bug 26048: potentially confusing "restart to update" message
Within the update doorhanger, remove the misleading message that mentions
that windows will be restored after an update is applied, and replace the
"Restart and Restore" button label with an existing
"Restart to update Tor Browser" string.
Bug 28885: notify users that update is downloading
Add a "Downloading Base Browser update" item which appears in the
hamburger (app) menu while the update service is downloading a MAR
file. Before this change, the browser did not indicate to the user
that an update was in progress, which is especially confusing in
Tor Browser because downloads often take some time. If the user
clicks on the new menu item, the about dialog is opened to allow
the user to see download progress.
As part of this fix, the update service was changed to always show
update-related messages in the hamburger menu, even if the update
was started in the foreground via the about dialog or via the
"Check for Tor Browser Update" toolbar menu item. This change is
consistent with the Tor Browser goal of making sure users are
informed about the update process.
Removed #28885 parts of this patch which have been uplifted to Firefox.
- - - - -
1818e590 by Pier Angelo Vendrame at 2024-03-22T12:34:25+01:00
Bug 42061: Create an alpha update channel.
- - - - -
3306843a by Nicolas Vigier at 2024-03-22T12:34:26+01:00
Bug 41682: Add base-browser nightly mar signing key
- - - - -
6eae8796 by hackademix at 2024-03-22T12:34:27+01:00
Bug 41695: Warn on window maximization without letterboxing in RFPHelper module
- - - - -
73492950 by Pier Angelo Vendrame at 2024-03-22T12:34:28+01:00
Bug 41698: Reword the recommendation badges in about:addons
Firefox strings use { -brand-product-name }.
As a result, it seems that the fork is recommending extensions, whereas
AMO curators are doing that.
So, we replace the strings with custom ones that clarify that Mozilla is
recommending them.
We assign the strings with JS because our translation backend does not
support Fluent attributes, yet, but once it does, we should switch to
them, instead.
Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1825033
- - - - -
8ad563b8 by Alex Catarineu at 2024-03-22T12:34:29+01:00
Bug 40069: Add helpers for message passing with extensions
- - - - -
7c5992f1 by Matthew Finkel at 2024-03-22T12:34:30+01:00
Bug 41598: Prevent NoScript from being removed/disabled.
Bug 40253: Explicitly allow NoScript in Private Browsing mode.
- - - - -
9d643d1b by Henry Wilkes at 2024-03-22T12:34:31+01:00
Bug 41736: Hide NoScript extension's toolbar button by default.
This hides it from both the toolbar and the unified extensions panel.
We also hide the unified-extension-button if the panel would be empty:
not including the NoScript button when it is hidden. As a result, this
will be hidden by default until a user installs another extension (or
shows the NoScript button and unpins it).
- - - - -
0c837cec by hackademix at 2024-03-22T12:34:32+01:00
Bug 41834: Hide "Can't Be Removed - learn more" menu line for uninstallable add-ons
- - - - -
ba74c5d9 by Pier Angelo Vendrame at 2024-03-22T12:34:33+01:00
Bug 40925: Implemented the Security Level component
This component adds a new Security Level toolbar button which visually
indicates the current global security level via icon (as defined by the
extensions.torbutton.security_slider pref), a drop-down hanger with a
short description of the current security level, and a new section in
the about:preferences#privacy page where users can change their current
security level. In addition, the hanger and the preferences page will
show a visual warning when the user has modified prefs associated with
the security level and provide a one-click 'Restore Defaults' button to
get the user back on recommended settings.
Bug 40125: Expose Security Level pref in GeckoView
- - - - -
824aa2b2 by Pier Angelo Vendrame at 2024-03-22T12:34:34+01:00
Bug 40926: Implemented the New Identity feature
- - - - -
71180351 by Henry Wilkes at 2024-03-22T12:34:36+01:00
Bug 41736: Customize toolbar for base-browser.
- - - - -
9cd4e95a by Pier Angelo Vendrame at 2024-03-22T12:34:37+01:00
Bug 42027: Base Browser migration procedures.
This commit implmenents the the Base Browser's version of _migrateUI.
- - - - -
5ecd69b1 by Richard Pospesel at 2024-03-22T12:34:38+01:00
Bug 41649: Create rebase and security backport gitlab issue templates
- - - - -
1989a9ed by Richard Pospesel at 2024-03-22T12:34:39+01:00
Bug 41089: Add tor-browser build scripts + Makefile to tor-browser
- - - - -
163a5f2c by Henry Wilkes at 2024-03-22T12:34:40+01:00
Bug 41803: Add some developer tools for working on tor-browser.
- - - - -
ca7c4257 by Kathy Brade at 2024-03-22T12:34:41+01:00
Bug 11641: Disable remoting by default.
Unless the -osint command line flag is used, the browser now defaults
to the equivalent of -no-remote. There is a new -allow-remote flag that
may be used to restore the original (Firefox-like) default behavior.
- - - - -
37a88cac by Alex Catarineu at 2024-03-22T12:34:42+01:00
Add TorStrings module for localization
- - - - -
3bc3c57e by Henry Wilkes at 2024-03-22T12:34:43+01:00
Tor Browser strings
This commit adds all the strings needed for Tor Browser patches.
- - - - -
5749094f by Henry Wilkes at 2024-03-22T12:34:44+01:00
Tor Browser localization migration scripts.
- - - - -
18823a63 by Mike Perry at 2024-03-22T12:34:45+01:00
Bug 2176: Rebrand Firefox to TorBrowser
See also Bugs #5194, #7187, #8115, #8219.
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
Also fix bug 27905.
Bug 25702: Update Tor Browser icon to follow design guidelines
- Updated all of the branding in /browser/branding/official with new 'stable'
icon series.
- Updated /extensions/onboarding/content/img/tor-watermark.png with new icon and
add the source svg in the same directory
- Copied /browser/branding/official over /browser/branding/nightly and the new
/browser/branding/alpha directories. Replaced content with 'nightly' and
'alpha' icon series.
Updated VisualElements_70.png and VisualElements_150.png with updated icons in
each branding directory (fixes #22654)
- Updated firefox.VisualElementsManfiest.xml with updated colors in each
branding directory
- Added firefox.svg to each branding directory from which all the other icons
are derived (apart from document.icns and document.ico)
- Added default256.png and default512.png icons
- Updated aboutTBUpdate.css to point to branding-aware icon128.png and removed
original icon
- Use the Tor Browser icon within devtools/client/themes/images/.
Bug 30631: Blurry Tor Browser icon on macOS app switcher
It would seem the png2icns tool does not generate correct icns files and
so on macOS the larger icons were missing resulting in blurry icons in
the OS chrome. Regenerated the padded icons in a macOS VM using
iconutil.
Bug 28196: preparations for using torbutton tor-browser-brand.ftl
A small change to Fluent FileSource class is required so that we
can register a new source without its supported locales being
counted as available locales for the browser.
Bug 31803: Replaced about:debugging logo with flat version
Bug 21724: Make Firefox and Tor Browser distinct macOS apps
When macOS opens a document or selects a default browser, it sometimes
uses the CFBundleSignature. Changing from the Firefox MOZB signature to
a different signature TORB allows macOS to distinguish between Firefox
and Tor Browser.
Bug 32092: Fix Tor Browser Support link in preferences
For bug 40562, we moved onionPattern* from bug 27476 to here, as
about:tor needs these files but it is included earlier.
Bug 41278: Create Tor Browser styled pdf logo similar to the vanilla Firefox one
Bug 42088: New application icons (used in-app and on linux).
Bug 42087: New application icons (windows).
- - - - -
962ee8cb by sanketh at 2024-03-22T12:34:46+01:00
Bug 40209: Implement Basic Crypto Safety
Adds a CryptoSafety actor which detects when you've copied a crypto
address from a HTTP webpage and shows a warning.
Closes #40209.
Bug 40428: Fix string attribute names
- - - - -
09165ad7 by Mike Perry at 2024-03-22T12:34:47+01:00
TB3: Tor Browser's official .mozconfigs.
Also:
Add an --enable-tor-browser-data-outside-app-dir configure option
Add --with-tor-browser-version configure option
Bug 31457: disable per-installation profiles
The dedicated profiles (per-installation) feature does not interact
well with our bundled profiles on Linux and Windows, and it also causes
multiple profiles to be created on macOS under TorBrowser-Data.
Bug 31935: Disable profile downgrade protection.
Since Tor Browser does not support more than one profile, disable
the prompt and associated code that offers to create one when a
version downgrade situation is detected.
Add --enable-tor-browser-update build option
Bug 40793: moved Tor configuration options from old-configure.in to moz.configure
Bug 41584: Move some configuration options to base-browser level
- - - - -
457a1c63 by Henry Wilkes at 2024-03-22T12:34:48+01:00
Bug 41340: Enable TOR_BROWSER_NIGHTLY_BUILD features for dev and nightly builds
tor-browser#41285: Enable fluent warnings.
- - - - -
db9822a4 by Pier Angelo Vendrame at 2024-03-22T12:34:49+01:00
Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Before reordering patches, we used to keep the Tor-related patches
(torbutton and tor-launcher) at the beginning.
After that issue, we decided to move them towards the end.
In addition to that, we have decided to move Tor Browser-only
preferences there, too, to make Base Browser-only fixups easier to
apply.
- - - - -
a173454a by Pier Angelo Vendrame at 2024-03-22T12:34:50+01:00
Bug 13252: Customize profile management on macOS
On macOS we allow both portable mode and system installation.
However, in the latter case, we customize Firefox's directories to
match the hierarchy we use for the portable mode.
Also, display an informative error message if the TorBrowser-Data
directory cannot be created due to an "access denied" or a
"read only volume" error.
- - - - -
ad848683 by Pier Angelo Vendrame at 2024-03-22T12:34:52+01:00
Bug 40933: Add tor-launcher functionality
Bug 41926: Reimplement the control port
- - - - -
a3211b87 by Richard Pospesel at 2024-03-22T12:34:53+01:00
Bug 40597: Implement TorSettings module
- migrated in-page settings read/write implementation from about:preferences#tor
to the TorSettings module
- TorSettings initially loads settings from the tor daemon, and saves them to
firefox prefs
- TorSettings notifies observers when a setting has changed; currently only
QuickStart notification is implemented for parity with previous preference
notify logic in about:torconnect and about:preferences#tor
- about:preferences#tor, and about:torconnect now read and write settings
thorugh the TorSettings module
- all tor settings live in the torbrowser.settings.* preference branch
- removed unused pref modify permission for about:torconnect content page from
AsyncPrefs.jsm
Bug 40645: Migrate Moat APIs to Moat.jsm module
- - - - -
f37d32a7 by Arthur Edelstein at 2024-03-22T12:34:54+01:00
Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Add an XPCOM component that registers a ProtocolProxyChannelFilter
which sets the username/password for each web request according to
url bar domain.
Bug 9442: Add New Circuit button
Bug 13766: Set a 10 minute circuit dirty timeout for the catch-all circ.
Bug 19206: Include a 128 bit random tag as part of the domain isolator nonce.
Bug 19206: Clear out the domain isolator state on `New Identity`.
Bug 21201.2: Isolate by firstPartyDomain from OriginAttributes
Bug 21745: Fix handling of catch-all circuit
Bug 41741: Refactor the domain isolator and new circuit
- - - - -
9d854e14 by Henry Wilkes at 2024-03-22T12:34:55+01:00
Bug 41600: Add a tor circuit display panel.
- - - - -
2184b51c by hackademix at 2024-03-22T12:34:56+01:00
Bug 8324: Prevent DNS proxy bypasses caused by Drag&Drop
Bug 41613: Skip Drang & Drop filtering for DNS-safe URLs
- - - - -
99509a88 by Amogh Pradeep at 2024-03-22T12:34:57+01:00
Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
See Bug 1357997 for partial uplift.
Also:
Bug 28051 - Use our Orbot for proxying our connections
Bug 31144 - ESR68 Network Code Review
- - - - -
3b273007 by Matthew Finkel at 2024-03-22T12:34:58+01:00
Bug 25741: TBA: Disable GeckoNetworkManager
The browser should not need information related to the network
interface or network state, tor should take care of that.
- - - - -
84e3f9c5 by Kathy Brade at 2024-03-22T12:35:00+01:00
Bug 14631: Improve profile access error messages.
Instead of always reporting that the profile is locked, display specific
messages for "access denied" and "read-only file system".
To allow for localization, get profile-related error strings from Torbutton.
Use app display name ("Tor Browser") in profile-related error alerts.
- - - - -
f699841e by Pier Angelo Vendrame at 2024-03-22T12:35:01+01:00
Bug 40807: Added QRCode.js to toolkit/modules
- - - - -
aca3fa60 by Richard Pospesel at 2024-03-22T12:35:02+01:00
Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
This patch adds a new about:preferences#connection page which allows
modifying bridge, proxy, and firewall settings from within Tor Browser.
All of the functionality present in tor-launcher's Network
Configuration panel is present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
- The Networking Settings in General preferences has been removed
Bug 40774: Update about:preferences page to match new UI designs
- - - - -
0df0adf2 by Richard Pospesel at 2024-03-22T12:35:03+01:00
Bug 27476: Implement about:torconnect captive portal within Tor Browser
- implements new about:torconnect page as tor-launcher replacement
- adds new torconnect component to browser
- tor process management functionality remains implemented in tor-launcher through the TorProtocolService module
- adds warning/error box to about:preferences#tor when not connected to tor
Bug 40773: Update the about:torconnect frontend page to match additional UI flows.
Bug 41608: Add a toolbar status button and a urlbar "Connect" button.
- - - - -
12697aef by Henry Wilkes at 2024-03-22T12:35:04+01:00
Bug 7494: Create local home page for TBB.
Bug 41333: Update about:tor to new design. Including:
+ make the favicon match the branding icon.
+ make the location bar show a search icon.
- - - - -
fcd3c4ee by Arthur Edelstein at 2024-03-22T12:35:05+01:00
Bug 12620: TorBrowser regression tests
Regression tests for Bug #2950: Make Permissions Manager memory-only
Regression tests for TB4: Tor Browser's Firefox preference overrides.
Note: many more functional tests could be made here
Regression tests for #2874: Block Components.interfaces from content
Bug 18923: Add a script to run all Tor Browser specific tests
Regression tests for Bug #16441: Suppress "Reset Tor Browser" prompt.
- - - - -
8c45841c by Pier Angelo Vendrame at 2024-03-22T12:35:06+01:00
Bug 41668: Tweaks to the Base Browser updater for Tor Browser
This commit was once part of "Bug 4234: Use the Firefox Update Process
for Tor Browser.".
However, some parts of it were not needed for Base Browser and some
derivative browsers.
Therefore, we extracted from that commit the parts for Tor Browser
legacy, and we add them back to the patch set with this commit.
- - - - -
8bd83474 by Kathy Brade at 2024-03-22T12:35:07+01:00
Bug 12647: Support symlinks in the updater.
- - - - -
4998122a by Kathy Brade at 2024-03-22T12:35:08+01:00
Bug 19121: reinstate the update.xml hash check
This is a partial revert of commit f1241db6986e4b54473a1ed870f7584c75d51122.
Revert most changes from Mozilla Bug 862173 "don't verify mar file hash
when using mar signing to verify the mar file (lessens main thread I/O)."
We kept the addition to the AppConstants API in case other JS code
references it in the future.
- - - - -
58f68ed8 by Kathy Brade at 2024-03-22T12:35:09+01:00
Bug 16940: After update, load local change notes.
Add an about:tbupdate page that displays the first section from
TorBrowser/Docs/ChangeLog.txt and includes a link to the remote
post-update page (typically our blog entry for the release).
Always load about:tbupdate in a content process, but implement the
code that reads the file system (changelog) in the chrome process
for compatibility with future sandboxing efforts.
Also fix bug 29440. Now about:tbupdate is styled as a fairly simple
changelog page that is designed to be displayed via a link that is on
about:tor.
- - - - -
9b65146c by Georg Koppen at 2024-03-22T12:35:10+01:00
Bug 32658: Create a new MAR signing key
It's time for our rotation again: Move the backup key in the front
position and add a new backup key.
Bug 33803: Move our primary nightly MAR signing key to tor-browser
Bug 33803: Add a secondary nightly MAR signing key
- - - - -
28e69957 by Mike Perry at 2024-03-22T12:35:11+01:00
Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
eBay and Amazon don't treat Tor users very well. Accounts often get locked and
payments reversed.
Also:
Bug 16322: Update DuckDuckGo search engine
We are replacing the clearnet URL with an onion service one (thanks to a
patch by a cypherpunk) and are removing the duplicated DDG search
engine. Duplicating DDG happend due to bug 1061736 where Mozilla
included DDG itself into Firefox. Interestingly, this caused breaking
the DDG search if JavaScript is disabled as the Mozilla engine, which
gets loaded earlier, does not use the html version of the search page.
Moreover, the Mozilla engine tracked where the users were searching from
by adding a respective parameter to the search query. We got rid of that
feature as well.
Also:
This fixes bug 20809: the DuckDuckGo team has changed its server-side
code in a way that lets users with JavaScript enabled use the default
landing page while those without JavaScript available get redirected
directly to the non-JS page. We adapt the search engine URLs
accordingly.
Also fixes bug 29798 by making sure we only specify the Google search
engine we actually ship an .xml file for.
Also regression tests.
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 40494: Update Startpage search provider
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 40438: Add Blockchair as a search engine
Bug 33342: Avoid disconnect search addon error after removal.
We removed the addon in #32767, but it was still being loaded
from addonStartup.json.lz4 and throwing an error on startup
because its resource: location is not available anymore.
- - - - -
7652484e by Alex Catarineu at 2024-03-22T12:35:13+01:00
Bug 40073: Disable remote Public Suffix List fetching
In https://bugzilla.mozilla.org/show_bug.cgi?id=1563246 Firefox implemented
fetching the Public Suffix List via RemoteSettings and replacing the default
one at runtime, which we do not want.
- - - - -
d998bd3c by Henry Wilkes at 2024-03-22T12:35:14+01:00
Bug 41906: Hide DNS over HTTPS preferences.
- - - - -
e10a5e19 by Richard Pospesel at 2024-03-22T12:35:15+01:00
Bug 23247: Communicating security expectations for .onion
Encrypting pages hosted on Onion Services with SSL/TLS is redundant
(in terms of hiding content) as all traffic within the Tor network is
already fully encrypted. Therefore, serving HTTP pages from an Onion
Service is more or less fine.
Prior to this patch, Tor Browser would mostly treat pages delivered
via Onion Services as well as pages delivered in the ordinary fashion
over the internet in the same way. This created some inconsistencies
in behaviour and misinformation presented to the user relating to the
security of pages delivered via Onion Services:
- HTTP Onion Service pages did not have any 'lock' icon indicating
the site was secure
- HTTP Onion Service pages would be marked as unencrypted in the Page
Info screen
- Mixed-mode content restrictions did not apply to HTTP Onion Service
pages embedding Non-Onion HTTP content
This patch fixes the above issues, and also adds several new 'Onion'
icons to the mix to indicate all of the various permutations of Onion
Services hosted HTTP or HTTPS pages with HTTP or HTTPS content.
Strings for Onion Service Page Info page are pulled from Torbutton's
localization strings.
- - - - -
3b73d05b by Kathy Brade at 2024-03-22T12:35:16+01:00
Bug 30237: Add v3 onion services client authentication prompt
When Tor informs the browser that client authentication is needed,
temporarily load about:blank instead of about:neterror and prompt
for the user's key.
If a correctly formatted key is entered, use Tor's ONION_CLIENT_AUTH_ADD
control port command to add the key (via Torbutton's control port
module) and reload the page.
If the user cancels the prompt, display the standard about:neterror
"Unable to connect" page. This requires a small change to
browser/actors/NetErrorChild.jsm to account for the fact that the
docShell no longer has the failedChannel information. The failedChannel
is used to extract TLS-related error info, which is not applicable
in the case of a canceled .onion authentication prompt.
Add a leaveOpen option to PopupNotifications.show so we can display
error messages within the popup notification doorhanger without
closing the prompt.
Add support for onion services strings to the TorStrings module.
Add support for Tor extended SOCKS errors (Tor proposal 304) to the
socket transport and SOCKS layers. Improved display of all of these
errors will be implemented as part of bug 30025.
Also fixes bug 19757:
Add a "Remember this key" checkbox to the client auth prompt.
Add an "Onion Services Authentication" section within the
about:preferences "Privacy & Security section" to allow
viewing and removal of v3 onion client auth keys that have
been stored on disk.
Also fixes bug 19251: use enhanced error pages for onion service errors.
- - - - -
e8546394 by Alex Catarineu at 2024-03-22T12:35:17+01:00
Bug 21952: Implement Onion-Location
Whenever a valid Onion-Location HTTP header (or corresponding HTML
<meta> http-equiv attribute) is found in a document load, we either
redirect to it (if the user opted-in via preference) or notify the
presence of an onionsite alternative with a badge in the urlbar.
- - - - -
5f8193ec by Pier Angelo Vendrame at 2024-03-22T12:35:17+01:00
Bug 40458: Implement .tor.onion aliases
We have enabled HTTPS-Only mode, therefore we do not need
HTTPS-Everywhere anymore.
However, we want to keep supporting .tor.onion aliases (especially for
securedrop).
Therefore, in this patch we implemented the parsing of HTTPS-Everywhere
rulesets, and the redirect of .tor.onion domains.
Actually, Tor Browser believes they are actual domains. We change them
on the fly on the SOCKS proxy requests to resolve the domain, and on
the code that verifies HTTPS certificates.
- - - - -
a4476d7e by Pier Angelo Vendrame at 2024-03-22T12:35:18+01:00
Bug 11698: Incorporate Tor Browser Manual pages into Tor Browser
This patch associates the about:manual page to a translated page that
must be injected to browser/omni.ja after the build.
The content must be placed in chrome/browser/content/browser/manual/, so
that is then available at chrome://browser/content/manual/.
We preferred giving absolute freedom to the web team, rather than having
to change the patch in case of changes on the documentation.
- - - - -
5c4f7e58 by Pier Angelo Vendrame at 2024-03-22T12:35:19+01:00
Bug 41435: Add a Tor Browser migration function
For now this function only deletes old language packs for which we are
already packaging the strings with the application.
- - - - -
42b75271 by Henry Wilkes at 2024-03-22T12:35:20+01:00
Bug 42110: Add TorUIUtils module for common tor component methods.
- - - - -
d34717a0 by Dan Ballard at 2024-03-22T12:35:21+01:00
Bug 40701: Add security warning when downloading a file
Shown in the downloads panel, about:downloads and places.xhtml.
- - - - -
10583aac by Henry Wilkes at 2024-03-22T12:35:22+01:00
Bug 41736: Customize toolbar for tor-browser.
- - - - -
a67b2534 by hackademix at 2024-03-22T12:35:23+01:00
Bug 41728: Pin bridges.torproject.org domains to Let's Encrypt's root cert public key
- - - - -
cc66fcd6 by Henry Wilkes at 2024-03-22T12:35:24+01:00
Customize moz-toggle for tor-browser.
- - - - -
e69ef25e by Richard Pospesel at 2024-03-22T12:35:25+01:00
Bug 41822: Unconditionally disable default browser UX in about:preferences
- - - - -
30 changed files:
- .eslintignore
- .gitignore
- + .gitlab/issue_templates/Backport Android Security Fixes.md
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- + .gitlab/issue_templates/bug.md
- + .gitlab/merge_request_templates/default.md
- accessible/android/SessionAccessibility.cpp
- accessible/android/SessionAccessibility.h
- accessible/ipc/DocAccessibleParent.cpp
- accessible/ipc/DocAccessibleParent.h
- accessible/ipc/moz.build
- + browser/actors/AboutTBUpdateChild.jsm
- + browser/actors/AboutTBUpdateParent.jsm
- + browser/actors/CryptoSafetyChild.jsm
- + browser/actors/CryptoSafetyParent.jsm
- − browser/actors/RFPHelperChild.sys.mjs
- − browser/actors/RFPHelperParent.sys.mjs
- browser/actors/moz.build
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/macbuild/Contents/MacOS-files.in
- browser/app/moz.build
- browser/app/permissions
- + browser/app/profile/000-tor-browser.js
- + browser/app/profile/001-base-profile.js
- browser/app/profile/firefox.js
- browser/base/content/aboutDialog-appUpdater.js
- browser/base/content/aboutDialog.js
- browser/base/content/aboutDialog.xhtml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/79bc6f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/79bc6f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
b7fc915f by Nika Layzell at 2024-03-21T22:41:17+01:00
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Differential Revision: https://phabricator.services.mozilla.com/D205377
- - - - -
1 changed file:
- browser/components/sessionstore/SessionStore.sys.mjs
Changes:
=====================================
browser/components/sessionstore/SessionStore.sys.mjs
=====================================
@@ -1422,6 +1422,13 @@ var SessionStoreInternal = {
* and thus enables communication with OOP tabs.
*/
receiveMessage(aMessage) {
+ if (Services.appinfo.sessionHistoryInParent) {
+ throw new Error(
+ `received unexpected message '${aMessage.name}' with ` +
+ `sessionHistoryInParent enabled`
+ );
+ }
+
// If we got here, that means we're dealing with a frame message
// manager message, so the target will be a <xul:browser>.
var browser = aMessage.target;
@@ -1600,14 +1607,14 @@ var SessionStoreInternal = {
// internal data about the window.
aWindow.__SSi = this._generateWindowID();
- let mm = aWindow.getGroupMessageManager("browsers");
- MESSAGES.forEach(msg => {
- let listenWhenClosed = CLOSED_MESSAGES.has(msg);
- mm.addMessageListener(msg, this, listenWhenClosed);
- });
-
- // Load the frame script after registering listeners.
if (!Services.appinfo.sessionHistoryInParent) {
+ let mm = aWindow.getGroupMessageManager("browsers");
+ MESSAGES.forEach(msg => {
+ let listenWhenClosed = CLOSED_MESSAGES.has(msg);
+ mm.addMessageListener(msg, this, listenWhenClosed);
+ });
+
+ // Load the frame script after registering listeners.
mm.loadFrameScript(
"chrome://browser/content/content-sessionStore.js",
true,
@@ -2083,8 +2090,10 @@ var SessionStoreInternal = {
// Cache the window state until it is completely gone.
DyingWindowCache.set(aWindow, winData);
- let mm = aWindow.getGroupMessageManager("browsers");
- MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));
+ if (!Services.appinfo.sessionHistoryInParent) {
+ let mm = aWindow.getGroupMessageManager("browsers");
+ MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));
+ }
this._saveableClosedWindowData.delete(winData);
delete aWindow.__SSi;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/b7fc915…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/b7fc915…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Deleted branch tor-browser-115.9.1esr-13.0.1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 deleted branch tor-browser-115.9.1esr-13.0.1 at The Tor Project / Applications / Tor Browser
--
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new branch tor-browser-115.9.1esr-13.0-1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new branch tor-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new branch tor-browser-115.9.1esr-13.0.1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new branch tor-browser-115.9.1esr-13.0.1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag FIREFOX_115_9_1esr_BUILD1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new tag FIREFOX_115_9_1esr_BUILD1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/FIREFOX_1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new branch base-browser-115.9.1esr-13.0-1
by ma1 (@ma1) 22 Mar '24
by ma1 (@ma1) 22 Mar '24
22 Mar '24
ma1 pushed new branch base-browser-115.9.1esr-13.0-1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] 2 commits: fixup! Base Browser strings
by ma1 (@ma1) 21 Mar '24
by ma1 (@ma1) 21 Mar '24
21 Mar '24
ma1 pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
2cf6d2c1 by hackademix at 2024-03-21T15:02:43+01:00
fixup! Base Browser strings
Bug 41916: Letterboxing preferences UI
- - - - -
4d921a55 by hackademix at 2024-03-21T15:03:00+01:00
Bug 41916: Letterboxing preferences UI
- - - - -
12 changed files:
- browser/components/preferences/jar.mn
- + browser/components/preferences/letterboxing-middle-dark.svg
- + browser/components/preferences/letterboxing-middle-light.svg
- + browser/components/preferences/letterboxing-top-dark.svg
- + browser/components/preferences/letterboxing-top-light.svg
- + browser/components/preferences/letterboxing.css
- + browser/components/preferences/letterboxing.inc.xhtml
- + browser/components/preferences/letterboxing.js
- browser/components/preferences/main.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.xhtml
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/components/preferences/jar.mn
=====================================
@@ -22,3 +22,10 @@ browser.jar:
content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
content/browser/preferences/web-appearance-dark.svg
content/browser/preferences/web-appearance-light.svg
+
+ content/browser/preferences/letterboxing.js
+ content/browser/preferences/letterboxing.css
+ content/browser/preferences/letterboxing-middle-dark.svg
+ content/browser/preferences/letterboxing-middle-light.svg
+ content/browser/preferences/letterboxing-top-dark.svg
+ content/browser/preferences/letterboxing-top-light.svg
=====================================
browser/components/preferences/letterboxing-middle-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_529)">
+<g clip-path="url(#clip0_2272_529)">
+<path d="M58 3H4V45H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="#3A3944"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="white"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="white"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_529" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_529"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_529" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_529">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-middle-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_960)">
+<g clip-path="url(#clip0_202_960)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="white"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="#52525E"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="#52525E"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_960" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_960"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_960" result="shape"/>
+</filter>
+<clipPath id="clip0_202_960">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_508)">
+<g clip-path="url(#clip0_2272_508)">
+<path d="M58 3H4V45H58V3Z" fill="#52525E"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="#3A3944"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="white"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="white"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_508" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_508"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_508" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_508">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_926)">
+<g clip-path="url(#clip0_202_926)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="white"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="#52525E"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="#52525E"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_926" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_926"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_926" result="shape"/>
+</filter>
+<clipPath id="clip0_202_926">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing.css
=====================================
@@ -0,0 +1,72 @@
+.letterboxing-overview {
+ margin-block-end: 32px;
+}
+
+.letterboxing-search-overview {
+ margin-block-end: 16px;
+}
+#letterboxingAligner {
+ display: flex;
+ justify-content: start;
+ gap: 16px;
+ margin-block: 12px;
+
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-light.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-light.svg");
+}
+
+@media (prefers-color-scheme: dark) {
+ #letterboxingAligner {
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-dark.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-dark.svg");
+ }
+}
+
+#letterboxingAligner .letterboxing-align-top img {
+ content: var(--letterboxing-alignment-img-top);
+}
+#letterboxingAligner .letterboxing-align-middle img {
+ content: var(--letterboxing-alignment-img-middle);
+}
+
+#letterboxingAligner label {
+ width: 200px;
+ flex: 0 0 auto;
+}
+
+#letterboxingAligner img {
+ border: none;
+ box-shadow: none;
+}
+
+/* Hide letterboxing options depending on whether ResistFingerprinting or
+ * Letterboxing is enabled. */
+#letterboxingCategory:not(.rfp-enabled),
+#letterboxingCategory:not(.rfp-enabled) ~ #letterboxingDisabled,
+#letterboxingCategory.letterboxing-enabled ~ #letterboxingDisabled,
+#letterboxingCategory:not(.rfp-enabled.letterboxing-enabled) ~ .letterboxing-category {
+ display: none;
+}
+
+/* We duplicate the Letterboxing overview to appear in search results.
+ * We want to hide them whenever they are *not* part of a search result. */
+:is(
+ /* Hide the duplicates when the category is *not* hidden. */
+ #letterboxingCategory:not(.visually-hidden) ~ .letterboxing-category,
+ /* Also hide the duplicated overview for subsequence search results if a
+ * previous groupbox is *not* hidden. */
+ .letterboxing-category:not(.visually-hidden) ~ .letterboxing-category,
+) .letterboxing-search-overview {
+ display: none;
+}
+
+/* Similarly for #letterboxingDisabled, but we also want to hide its
+ * "Letterboxing" heading.
+ * NOTE: This should only appear in isolation, so we do not need to worry about
+ * subsequent groupboxes. */
+#letterboxingCategory:not(.visually-hidden) ~ #letterboxingDisabled :is(
+ .letterboxing-search-heading,
+ .letterboxing-search-overview
+) {
+ display: none;
+}
=====================================
browser/components/preferences/letterboxing.inc.xhtml
=====================================
@@ -0,0 +1,134 @@
+<script src="chrome://browser/content/preferences/letterboxing.js" />
+<vbox
+ id="letterboxingCategory"
+ class="subcategory"
+ hidden="true"
+ data-category="paneGeneral"
+>
+ <html:h1 data-l10n-id="letterboxing-header" />
+ <description class="letterboxing-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+</vbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-window-size-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <checkbox
+ id="letterboxingRememberSize"
+ data-l10n-id="letterboxing-remember-size"
+ preference="privacy.resistFingerprinting.letterboxing.rememberSize"
+ />
+</groupbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-alignment-header"
+ /></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <description
+ id="letterboxingAlignmentDesc"
+ flex="1"
+ data-l10n-id="letterboxing-alignment-description"
+ />
+ <form
+ xmlns="http://www.w3.org/1999/xhtml"
+ id="letterboxingAligner"
+ autocomplete="off"
+ aria-labelledby="letterboxingAlignmentDesc"
+ >
+ <label class="web-appearance-choice letterboxing-align-top">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="top" />
+ <span data-l10n-id="letterboxing-alignment-top"></span>
+ </div>
+ </label>
+ <label class="web-appearance-choice letterboxing-align-middle">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="middle" />
+ <span data-l10n-id="letterboxing-alignment-middle"></span>
+ </div>
+ </label>
+ </form>
+</groupbox>
+<groupbox
+ id="letterboxingDisabled"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label class="letterboxing-search-heading"><html:h2
+ data-l10n-id="letterboxing-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <hbox align="center">
+ <label
+ class="face-sad"
+ flex="1"
+ data-l10n-id="letterboxing-disabled-description"
+ />
+ <button
+ id="letterboxingEnableButton"
+ class="accessory-button"
+ is="highlightable-button"
+ data-l10n-id="letterboxing-enable-button"
+ />
+ </hbox>
+</groupbox>
=====================================
browser/components/preferences/letterboxing.js
=====================================
@@ -0,0 +1,113 @@
+/* import-globals-from /browser/components/preferences/preferences.js */
+/* import-globals-from /browser/components/preferences/findInPage.js */
+/* import-globals-from /toolkit/content/preferencesBindings.js */
+
+Preferences.addAll([
+ {
+ id: "privacy.resistFingerprinting.letterboxing.rememberSize",
+ type: "bool",
+ },
+]);
+
+{
+ const lbEnabledPref = "privacy.resistFingerprinting.letterboxing";
+ const visibilityPrefs = ["privacy.resistFingerprinting", lbEnabledPref];
+ const alignMiddlePref = "privacy.resistFingerprinting.letterboxing.vcenter";
+
+ const hideFromSearchIf = (mustHide, ...elements) => {
+ for (const element of elements) {
+ if (mustHide) {
+ element.setAttribute("data-hidden-from-search", "true");
+ } else {
+ element.removeAttribute("data-hidden-from-search");
+ }
+ }
+ };
+
+ const syncVisibility = () => {
+ const [rfpEnabled, letterboxingEnabled] = visibilityPrefs.map(pref =>
+ Services.prefs.getBoolPref(pref, false)
+ );
+ const categoryElement = document.getElementById("letterboxingCategory");
+ const { classList } = categoryElement;
+
+ // Show the letterboxing section only if resistFingerprinting is enabled
+ classList.toggle("rfp-enabled", rfpEnabled);
+ classList.toggle("letterboxing-enabled", letterboxingEnabled);
+
+ // To ensure the hidden parts do not contribute to search results, we need
+ // to add "data-hidden-from-search".
+ hideFromSearchIf(
+ !rfpEnabled || !letterboxingEnabled,
+ ...document.querySelectorAll(".letterboxing-category")
+ );
+ hideFromSearchIf(
+ !rfpEnabled || letterboxingEnabled,
+ document.getElementById("letterboxingDisabled")
+ );
+ };
+
+ const onVisibilityPrefChange = () => {
+ syncVisibility();
+ // NOTE: Firefox does not expect "data-hidden-from-search" to change
+ // dynamically after page initialization. So we need to manually recall the
+ // methods that use "data-hidden-from-search". I.e. the "search" method,
+ // using the currently shown category.
+ // NOTE: We skip this if we are just initializing on page load.
+ // NOTE: data-hidden-from-search is also used when the user has entered a
+ // search term. We do not update the results in this case. Instead, it will
+ // update when the search term changes or is cleared.
+ if (!gSearchResultsPane.query) {
+ search(gLastCategory.category, "data-category");
+ }
+ };
+
+ const alignerId = "letterboxingAligner";
+ const syncAligner = () => {
+ const value = Services.prefs.getBoolPref(alignMiddlePref)
+ ? "middle"
+ : "top";
+ document.querySelector(
+ `#${alignerId} input[value="${value}"]`
+ ).checked = true;
+ };
+
+ var gLetterboxingPrefs = {
+ init() {
+ syncVisibility();
+ document
+ .getElementById("letterboxingEnableButton")
+ .addEventListener("command", () => {
+ Services.prefs.setBoolPref(lbEnabledPref, true);
+ // Button should have focus when activated but will be hidden now,
+ // so re-assign focus to the newly revealed options.
+ Services.focus.moveFocus(
+ window,
+ document.querySelector(".letterboxing-category"),
+ Services.focus.MOVEFOCUS_FIRST,
+ 0
+ );
+ });
+ for (const pref of visibilityPrefs) {
+ Services.prefs.addObserver(pref, onVisibilityPrefChange);
+ }
+
+ syncAligner();
+ document.getElementById(alignerId).addEventListener("change", e => {
+ // NOTE: the "change" event is only fired on the checked input.
+ Services.prefs.setBoolPref(
+ alignMiddlePref,
+ e.target.value === "middle"
+ );
+ });
+ Services.prefs.addObserver(alignMiddlePref, syncAligner);
+ },
+
+ destroy() {
+ for (const pref of visibilityPrefs) {
+ Services.prefs.removeObserver(pref, onVisibilityPrefChange);
+ }
+ Services.prefs.removeObserver(alignMiddlePref, syncAligner);
+ },
+ };
+}
=====================================
browser/components/preferences/main.inc.xhtml
=====================================
@@ -130,6 +130,9 @@
</vbox>
</groupbox>
+<!-- Letterboxing -->
+#include ./letterboxing.inc.xhtml
+
<hbox id="languageAndAppearanceCategory"
class="subcategory"
hidden="true"
=====================================
browser/components/preferences/main.js
=====================================
@@ -736,6 +736,7 @@ var gMainPane = {
]);
AppearanceChooser.init();
+ gLetterboxingPrefs.init();
// Notify observers that the UI is now ready
Services.obs.notifyObservers(window, "main-pane-loaded");
@@ -2594,6 +2595,7 @@ var gMainPane = {
Services.prefs.removeObserver(PREF_CONTAINERS_EXTENSION, this);
Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
Services.obs.removeObserver(this, BACKGROUND_UPDATE_CHANGED_TOPIC);
+ gLetterboxingPrefs.destroy();
AppearanceChooser.destroy();
},
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/preferences/letterboxing.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<!DOCTYPE html>
@@ -40,6 +41,7 @@
<!-- Links below are only used for search-l10n-ids into subdialogs -->
<link rel="localization" href="browser/aboutDialog.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/preferences/addEngine.ftl"/>
<link rel="localization" href="browser/preferences/blocklists.ftl"/>
<link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,3 +70,27 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+## Preferences - Letterboxing.
+
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-header = Letterboxing
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-overview = { -brand-short-name }'s Letterboxing feature restricts websites to display at specific sizes, making it harder to single out users on the basis of their window or screen size.
+letterboxing-learn-more = Learn more
+letterboxing-window-size-header = Window size
+letterboxing-remember-size =
+ .label = Reuse last window size when opening a new window
+ .accesskey = R
+letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-description = Choose where you want to align the website’s content.
+letterboxing-alignment-top = Top
+letterboxing-alignment-middle = Middle
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-disabled-description = Letterboxing is currently disabled.
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-enable-button =
+ .label = Enable Letterboxing
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/a8…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/a8…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] 2 commits: fixup! Base Browser strings
by ma1 (@ma1) 21 Mar '24
by ma1 (@ma1) 21 Mar '24
21 Mar '24
ma1 pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
0cd97c5f by hackademix at 2024-03-21T14:57:32+01:00
fixup! Base Browser strings
Bug 41916: Letterboxing preferences UI
- - - - -
d3f79d43 by hackademix at 2024-03-21T14:57:49+01:00
Bug 41916: Letterboxing preferences UI
- - - - -
12 changed files:
- browser/components/preferences/jar.mn
- + browser/components/preferences/letterboxing-middle-dark.svg
- + browser/components/preferences/letterboxing-middle-light.svg
- + browser/components/preferences/letterboxing-top-dark.svg
- + browser/components/preferences/letterboxing-top-light.svg
- + browser/components/preferences/letterboxing.css
- + browser/components/preferences/letterboxing.inc.xhtml
- + browser/components/preferences/letterboxing.js
- browser/components/preferences/main.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.xhtml
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/components/preferences/jar.mn
=====================================
@@ -22,3 +22,10 @@ browser.jar:
content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
content/browser/preferences/web-appearance-dark.svg
content/browser/preferences/web-appearance-light.svg
+
+ content/browser/preferences/letterboxing.js
+ content/browser/preferences/letterboxing.css
+ content/browser/preferences/letterboxing-middle-dark.svg
+ content/browser/preferences/letterboxing-middle-light.svg
+ content/browser/preferences/letterboxing-top-dark.svg
+ content/browser/preferences/letterboxing-top-light.svg
=====================================
browser/components/preferences/letterboxing-middle-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_529)">
+<g clip-path="url(#clip0_2272_529)">
+<path d="M58 3H4V45H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="#3A3944"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="white"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="white"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_529" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_529"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_529" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_529">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-middle-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_960)">
+<g clip-path="url(#clip0_202_960)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="white"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="#52525E"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="#52525E"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_960" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_960"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_960" result="shape"/>
+</filter>
+<clipPath id="clip0_202_960">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_508)">
+<g clip-path="url(#clip0_2272_508)">
+<path d="M58 3H4V45H58V3Z" fill="#52525E"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="#3A3944"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="white"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="white"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_508" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_508"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_508" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_508">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_926)">
+<g clip-path="url(#clip0_202_926)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="white"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="#52525E"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="#52525E"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_926" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_926"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_926" result="shape"/>
+</filter>
+<clipPath id="clip0_202_926">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing.css
=====================================
@@ -0,0 +1,72 @@
+.letterboxing-overview {
+ margin-block-end: 32px;
+}
+
+.letterboxing-search-overview {
+ margin-block-end: 16px;
+}
+#letterboxingAligner {
+ display: flex;
+ justify-content: start;
+ gap: 16px;
+ margin-block: 12px;
+
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-light.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-light.svg");
+}
+
+@media (prefers-color-scheme: dark) {
+ #letterboxingAligner {
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-dark.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-dark.svg");
+ }
+}
+
+#letterboxingAligner .letterboxing-align-top img {
+ content: var(--letterboxing-alignment-img-top);
+}
+#letterboxingAligner .letterboxing-align-middle img {
+ content: var(--letterboxing-alignment-img-middle);
+}
+
+#letterboxingAligner label {
+ width: 200px;
+ flex: 0 0 auto;
+}
+
+#letterboxingAligner img {
+ border: none;
+ box-shadow: none;
+}
+
+/* Hide letterboxing options depending on whether ResistFingerprinting or
+ * Letterboxing is enabled. */
+#letterboxingCategory:not(.rfp-enabled),
+#letterboxingCategory:not(.rfp-enabled) ~ #letterboxingDisabled,
+#letterboxingCategory.letterboxing-enabled ~ #letterboxingDisabled,
+#letterboxingCategory:not(.rfp-enabled.letterboxing-enabled) ~ .letterboxing-category {
+ display: none;
+}
+
+/* We duplicate the Letterboxing overview to appear in search results.
+ * We want to hide them whenever they are *not* part of a search result. */
+:is(
+ /* Hide the duplicates when the category is *not* hidden. */
+ #letterboxingCategory:not(.visually-hidden) ~ .letterboxing-category,
+ /* Also hide the duplicated overview for subsequence search results if a
+ * previous groupbox is *not* hidden. */
+ .letterboxing-category:not(.visually-hidden) ~ .letterboxing-category,
+) .letterboxing-search-overview {
+ display: none;
+}
+
+/* Similarly for #letterboxingDisabled, but we also want to hide its
+ * "Letterboxing" heading.
+ * NOTE: This should only appear in isolation, so we do not need to worry about
+ * subsequent groupboxes. */
+#letterboxingCategory:not(.visually-hidden) ~ #letterboxingDisabled :is(
+ .letterboxing-search-heading,
+ .letterboxing-search-overview
+) {
+ display: none;
+}
=====================================
browser/components/preferences/letterboxing.inc.xhtml
=====================================
@@ -0,0 +1,134 @@
+<script src="chrome://browser/content/preferences/letterboxing.js" />
+<vbox
+ id="letterboxingCategory"
+ class="subcategory"
+ hidden="true"
+ data-category="paneGeneral"
+>
+ <html:h1 data-l10n-id="letterboxing-header" />
+ <description class="letterboxing-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+</vbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-window-size-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <checkbox
+ id="letterboxingRememberSize"
+ data-l10n-id="letterboxing-remember-size"
+ preference="privacy.resistFingerprinting.letterboxing.rememberSize"
+ />
+</groupbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-alignment-header"
+ /></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <description
+ id="letterboxingAlignmentDesc"
+ flex="1"
+ data-l10n-id="letterboxing-alignment-description"
+ />
+ <form
+ xmlns="http://www.w3.org/1999/xhtml"
+ id="letterboxingAligner"
+ autocomplete="off"
+ aria-labelledby="letterboxingAlignmentDesc"
+ >
+ <label class="web-appearance-choice letterboxing-align-top">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="top" />
+ <span data-l10n-id="letterboxing-alignment-top"></span>
+ </div>
+ </label>
+ <label class="web-appearance-choice letterboxing-align-middle">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="middle" />
+ <span data-l10n-id="letterboxing-alignment-middle"></span>
+ </div>
+ </label>
+ </form>
+</groupbox>
+<groupbox
+ id="letterboxingDisabled"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label class="letterboxing-search-heading"><html:h2
+ data-l10n-id="letterboxing-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <hbox align="center">
+ <label
+ class="face-sad"
+ flex="1"
+ data-l10n-id="letterboxing-disabled-description"
+ />
+ <button
+ id="letterboxingEnableButton"
+ class="accessory-button"
+ is="highlightable-button"
+ data-l10n-id="letterboxing-enable-button"
+ />
+ </hbox>
+</groupbox>
=====================================
browser/components/preferences/letterboxing.js
=====================================
@@ -0,0 +1,113 @@
+/* import-globals-from /browser/components/preferences/preferences.js */
+/* import-globals-from /browser/components/preferences/findInPage.js */
+/* import-globals-from /toolkit/content/preferencesBindings.js */
+
+Preferences.addAll([
+ {
+ id: "privacy.resistFingerprinting.letterboxing.rememberSize",
+ type: "bool",
+ },
+]);
+
+{
+ const lbEnabledPref = "privacy.resistFingerprinting.letterboxing";
+ const visibilityPrefs = ["privacy.resistFingerprinting", lbEnabledPref];
+ const alignMiddlePref = "privacy.resistFingerprinting.letterboxing.vcenter";
+
+ const hideFromSearchIf = (mustHide, ...elements) => {
+ for (const element of elements) {
+ if (mustHide) {
+ element.setAttribute("data-hidden-from-search", "true");
+ } else {
+ element.removeAttribute("data-hidden-from-search");
+ }
+ }
+ };
+
+ const syncVisibility = () => {
+ const [rfpEnabled, letterboxingEnabled] = visibilityPrefs.map(pref =>
+ Services.prefs.getBoolPref(pref, false)
+ );
+ const categoryElement = document.getElementById("letterboxingCategory");
+ const { classList } = categoryElement;
+
+ // Show the letterboxing section only if resistFingerprinting is enabled
+ classList.toggle("rfp-enabled", rfpEnabled);
+ classList.toggle("letterboxing-enabled", letterboxingEnabled);
+
+ // To ensure the hidden parts do not contribute to search results, we need
+ // to add "data-hidden-from-search".
+ hideFromSearchIf(
+ !rfpEnabled || !letterboxingEnabled,
+ ...document.querySelectorAll(".letterboxing-category")
+ );
+ hideFromSearchIf(
+ !rfpEnabled || letterboxingEnabled,
+ document.getElementById("letterboxingDisabled")
+ );
+ };
+
+ const onVisibilityPrefChange = () => {
+ syncVisibility();
+ // NOTE: Firefox does not expect "data-hidden-from-search" to change
+ // dynamically after page initialization. So we need to manually recall the
+ // methods that use "data-hidden-from-search". I.e. the "search" method,
+ // using the currently shown category.
+ // NOTE: We skip this if we are just initializing on page load.
+ // NOTE: data-hidden-from-search is also used when the user has entered a
+ // search term. We do not update the results in this case. Instead, it will
+ // update when the search term changes or is cleared.
+ if (!gSearchResultsPane.query) {
+ search(gLastCategory.category, "data-category");
+ }
+ };
+
+ const alignerId = "letterboxingAligner";
+ const syncAligner = () => {
+ const value = Services.prefs.getBoolPref(alignMiddlePref)
+ ? "middle"
+ : "top";
+ document.querySelector(
+ `#${alignerId} input[value="${value}"]`
+ ).checked = true;
+ };
+
+ var gLetterboxingPrefs = {
+ init() {
+ syncVisibility();
+ document
+ .getElementById("letterboxingEnableButton")
+ .addEventListener("command", () => {
+ Services.prefs.setBoolPref(lbEnabledPref, true);
+ // Button should have focus when activated but will be hidden now,
+ // so re-assign focus to the newly revealed options.
+ Services.focus.moveFocus(
+ window,
+ document.querySelector(".letterboxing-category"),
+ Services.focus.MOVEFOCUS_FIRST,
+ 0
+ );
+ });
+ for (const pref of visibilityPrefs) {
+ Services.prefs.addObserver(pref, onVisibilityPrefChange);
+ }
+
+ syncAligner();
+ document.getElementById(alignerId).addEventListener("change", e => {
+ // NOTE: the "change" event is only fired on the checked input.
+ Services.prefs.setBoolPref(
+ alignMiddlePref,
+ e.target.value === "middle"
+ );
+ });
+ Services.prefs.addObserver(alignMiddlePref, syncAligner);
+ },
+
+ destroy() {
+ for (const pref of visibilityPrefs) {
+ Services.prefs.removeObserver(pref, onVisibilityPrefChange);
+ }
+ Services.prefs.removeObserver(alignMiddlePref, syncAligner);
+ },
+ };
+}
=====================================
browser/components/preferences/main.inc.xhtml
=====================================
@@ -130,6 +130,9 @@
</vbox>
</groupbox>
+<!-- Letterboxing -->
+#include ./letterboxing.inc.xhtml
+
<hbox id="languageAndAppearanceCategory"
class="subcategory"
hidden="true"
=====================================
browser/components/preferences/main.js
=====================================
@@ -736,6 +736,7 @@ var gMainPane = {
]);
AppearanceChooser.init();
+ gLetterboxingPrefs.init();
// Notify observers that the UI is now ready
Services.obs.notifyObservers(window, "main-pane-loaded");
@@ -2591,6 +2592,7 @@ var gMainPane = {
Services.prefs.removeObserver(PREF_CONTAINERS_EXTENSION, this);
Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
Services.obs.removeObserver(this, BACKGROUND_UPDATE_CHANGED_TOPIC);
+ gLetterboxingPrefs.destroy();
AppearanceChooser.destroy();
},
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/preferences/letterboxing.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<!DOCTYPE html>
@@ -40,6 +41,7 @@
<!-- Links below are only used for search-l10n-ids into subdialogs -->
<link rel="localization" href="browser/aboutDialog.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/preferences/addEngine.ftl"/>
<link rel="localization" href="browser/preferences/blocklists.ftl"/>
<link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,3 +70,27 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+## Preferences - Letterboxing.
+
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-header = Letterboxing
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-overview = { -brand-short-name }'s Letterboxing feature restricts websites to display at specific sizes, making it harder to single out users on the basis of their window or screen size.
+letterboxing-learn-more = Learn more
+letterboxing-window-size-header = Window size
+letterboxing-remember-size =
+ .label = Reuse last window size when opening a new window
+ .accesskey = R
+letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-description = Choose where you want to align the website’s content.
+letterboxing-alignment-top = Top
+letterboxing-alignment-middle = Middle
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-disabled-description = Letterboxing is currently disabled.
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-enable-button =
+ .label = Enable Letterboxing
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d873c0…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/d873c0…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 2 commits: fixup! Base Browser strings
by ma1 (@ma1) 21 Mar '24
by ma1 (@ma1) 21 Mar '24
21 Mar '24
ma1 pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
106d93c8 by hackademix at 2024-03-21T14:52:16+01:00
fixup! Base Browser strings
Bug 41916: Letterboxing preferences UI
- - - - -
f7adb137 by hackademix at 2024-03-21T14:52:17+01:00
Bug 41916: Letterboxing preferences UI
- - - - -
12 changed files:
- browser/components/preferences/jar.mn
- + browser/components/preferences/letterboxing-middle-dark.svg
- + browser/components/preferences/letterboxing-middle-light.svg
- + browser/components/preferences/letterboxing-top-dark.svg
- + browser/components/preferences/letterboxing-top-light.svg
- + browser/components/preferences/letterboxing.css
- + browser/components/preferences/letterboxing.inc.xhtml
- + browser/components/preferences/letterboxing.js
- browser/components/preferences/main.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.xhtml
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/components/preferences/jar.mn
=====================================
@@ -22,3 +22,10 @@ browser.jar:
content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
content/browser/preferences/web-appearance-dark.svg
content/browser/preferences/web-appearance-light.svg
+
+ content/browser/preferences/letterboxing.js
+ content/browser/preferences/letterboxing.css
+ content/browser/preferences/letterboxing-middle-dark.svg
+ content/browser/preferences/letterboxing-middle-light.svg
+ content/browser/preferences/letterboxing-top-dark.svg
+ content/browser/preferences/letterboxing-top-light.svg
=====================================
browser/components/preferences/letterboxing-middle-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_529)">
+<g clip-path="url(#clip0_2272_529)">
+<path d="M58 3H4V45H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="#3A3944"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="white"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="white"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_529" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_529"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_529" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_529">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-middle-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_960)">
+<g clip-path="url(#clip0_202_960)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="white"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="#52525E"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="#52525E"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_960" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_960"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_960" result="shape"/>
+</filter>
+<clipPath id="clip0_202_960">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_508)">
+<g clip-path="url(#clip0_2272_508)">
+<path d="M58 3H4V45H58V3Z" fill="#52525E"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="#3A3944"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="white"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="white"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_508" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_508"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_508" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_508">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_926)">
+<g clip-path="url(#clip0_202_926)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="white"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="#52525E"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="#52525E"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_926" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_926"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_926" result="shape"/>
+</filter>
+<clipPath id="clip0_202_926">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing.css
=====================================
@@ -0,0 +1,72 @@
+.letterboxing-overview {
+ margin-block-end: 32px;
+}
+
+.letterboxing-search-overview {
+ margin-block-end: 16px;
+}
+#letterboxingAligner {
+ display: flex;
+ justify-content: start;
+ gap: 16px;
+ margin-block: 12px;
+
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-light.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-light.svg");
+}
+
+@media (prefers-color-scheme: dark) {
+ #letterboxingAligner {
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-dark.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-dark.svg");
+ }
+}
+
+#letterboxingAligner .letterboxing-align-top img {
+ content: var(--letterboxing-alignment-img-top);
+}
+#letterboxingAligner .letterboxing-align-middle img {
+ content: var(--letterboxing-alignment-img-middle);
+}
+
+#letterboxingAligner label {
+ width: 200px;
+ flex: 0 0 auto;
+}
+
+#letterboxingAligner img {
+ border: none;
+ box-shadow: none;
+}
+
+/* Hide letterboxing options depending on whether ResistFingerprinting or
+ * Letterboxing is enabled. */
+#letterboxingCategory:not(.rfp-enabled),
+#letterboxingCategory:not(.rfp-enabled) ~ #letterboxingDisabled,
+#letterboxingCategory.letterboxing-enabled ~ #letterboxingDisabled,
+#letterboxingCategory:not(.rfp-enabled.letterboxing-enabled) ~ .letterboxing-category {
+ display: none;
+}
+
+/* We duplicate the Letterboxing overview to appear in search results.
+ * We want to hide them whenever they are *not* part of a search result. */
+:is(
+ /* Hide the duplicates when the category is *not* hidden. */
+ #letterboxingCategory:not(.visually-hidden) ~ .letterboxing-category,
+ /* Also hide the duplicated overview for subsequence search results if a
+ * previous groupbox is *not* hidden. */
+ .letterboxing-category:not(.visually-hidden) ~ .letterboxing-category,
+) .letterboxing-search-overview {
+ display: none;
+}
+
+/* Similarly for #letterboxingDisabled, but we also want to hide its
+ * "Letterboxing" heading.
+ * NOTE: This should only appear in isolation, so we do not need to worry about
+ * subsequent groupboxes. */
+#letterboxingCategory:not(.visually-hidden) ~ #letterboxingDisabled :is(
+ .letterboxing-search-heading,
+ .letterboxing-search-overview
+) {
+ display: none;
+}
=====================================
browser/components/preferences/letterboxing.inc.xhtml
=====================================
@@ -0,0 +1,134 @@
+<script src="chrome://browser/content/preferences/letterboxing.js" />
+<vbox
+ id="letterboxingCategory"
+ class="subcategory"
+ hidden="true"
+ data-category="paneGeneral"
+>
+ <html:h1 data-l10n-id="letterboxing-header" />
+ <description class="letterboxing-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+</vbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-window-size-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <checkbox
+ id="letterboxingRememberSize"
+ data-l10n-id="letterboxing-remember-size"
+ preference="privacy.resistFingerprinting.letterboxing.rememberSize"
+ />
+</groupbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-alignment-header"
+ /></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <description
+ id="letterboxingAlignmentDesc"
+ flex="1"
+ data-l10n-id="letterboxing-alignment-description"
+ />
+ <form
+ xmlns="http://www.w3.org/1999/xhtml"
+ id="letterboxingAligner"
+ autocomplete="off"
+ aria-labelledby="letterboxingAlignmentDesc"
+ >
+ <label class="web-appearance-choice letterboxing-align-top">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="top" />
+ <span data-l10n-id="letterboxing-alignment-top"></span>
+ </div>
+ </label>
+ <label class="web-appearance-choice letterboxing-align-middle">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="middle" />
+ <span data-l10n-id="letterboxing-alignment-middle"></span>
+ </div>
+ </label>
+ </form>
+</groupbox>
+<groupbox
+ id="letterboxingDisabled"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label class="letterboxing-search-heading"><html:h2
+ data-l10n-id="letterboxing-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <hbox align="center">
+ <label
+ class="face-sad"
+ flex="1"
+ data-l10n-id="letterboxing-disabled-description"
+ />
+ <button
+ id="letterboxingEnableButton"
+ class="accessory-button"
+ is="highlightable-button"
+ data-l10n-id="letterboxing-enable-button"
+ />
+ </hbox>
+</groupbox>
=====================================
browser/components/preferences/letterboxing.js
=====================================
@@ -0,0 +1,113 @@
+/* import-globals-from /browser/components/preferences/preferences.js */
+/* import-globals-from /browser/components/preferences/findInPage.js */
+/* import-globals-from /toolkit/content/preferencesBindings.js */
+
+Preferences.addAll([
+ {
+ id: "privacy.resistFingerprinting.letterboxing.rememberSize",
+ type: "bool",
+ },
+]);
+
+{
+ const lbEnabledPref = "privacy.resistFingerprinting.letterboxing";
+ const visibilityPrefs = ["privacy.resistFingerprinting", lbEnabledPref];
+ const alignMiddlePref = "privacy.resistFingerprinting.letterboxing.vcenter";
+
+ const hideFromSearchIf = (mustHide, ...elements) => {
+ for (const element of elements) {
+ if (mustHide) {
+ element.setAttribute("data-hidden-from-search", "true");
+ } else {
+ element.removeAttribute("data-hidden-from-search");
+ }
+ }
+ };
+
+ const syncVisibility = () => {
+ const [rfpEnabled, letterboxingEnabled] = visibilityPrefs.map(pref =>
+ Services.prefs.getBoolPref(pref, false)
+ );
+ const categoryElement = document.getElementById("letterboxingCategory");
+ const { classList } = categoryElement;
+
+ // Show the letterboxing section only if resistFingerprinting is enabled
+ classList.toggle("rfp-enabled", rfpEnabled);
+ classList.toggle("letterboxing-enabled", letterboxingEnabled);
+
+ // To ensure the hidden parts do not contribute to search results, we need
+ // to add "data-hidden-from-search".
+ hideFromSearchIf(
+ !rfpEnabled || !letterboxingEnabled,
+ ...document.querySelectorAll(".letterboxing-category")
+ );
+ hideFromSearchIf(
+ !rfpEnabled || letterboxingEnabled,
+ document.getElementById("letterboxingDisabled")
+ );
+ };
+
+ const onVisibilityPrefChange = () => {
+ syncVisibility();
+ // NOTE: Firefox does not expect "data-hidden-from-search" to change
+ // dynamically after page initialization. So we need to manually recall the
+ // methods that use "data-hidden-from-search". I.e. the "search" method,
+ // using the currently shown category.
+ // NOTE: We skip this if we are just initializing on page load.
+ // NOTE: data-hidden-from-search is also used when the user has entered a
+ // search term. We do not update the results in this case. Instead, it will
+ // update when the search term changes or is cleared.
+ if (!gSearchResultsPane.query) {
+ search(gLastCategory.category, "data-category");
+ }
+ };
+
+ const alignerId = "letterboxingAligner";
+ const syncAligner = () => {
+ const value = Services.prefs.getBoolPref(alignMiddlePref)
+ ? "middle"
+ : "top";
+ document.querySelector(
+ `#${alignerId} input[value="${value}"]`
+ ).checked = true;
+ };
+
+ var gLetterboxingPrefs = {
+ init() {
+ syncVisibility();
+ document
+ .getElementById("letterboxingEnableButton")
+ .addEventListener("command", () => {
+ Services.prefs.setBoolPref(lbEnabledPref, true);
+ // Button should have focus when activated but will be hidden now,
+ // so re-assign focus to the newly revealed options.
+ Services.focus.moveFocus(
+ window,
+ document.querySelector(".letterboxing-category"),
+ Services.focus.MOVEFOCUS_FIRST,
+ 0
+ );
+ });
+ for (const pref of visibilityPrefs) {
+ Services.prefs.addObserver(pref, onVisibilityPrefChange);
+ }
+
+ syncAligner();
+ document.getElementById(alignerId).addEventListener("change", e => {
+ // NOTE: the "change" event is only fired on the checked input.
+ Services.prefs.setBoolPref(
+ alignMiddlePref,
+ e.target.value === "middle"
+ );
+ });
+ Services.prefs.addObserver(alignMiddlePref, syncAligner);
+ },
+
+ destroy() {
+ for (const pref of visibilityPrefs) {
+ Services.prefs.removeObserver(pref, onVisibilityPrefChange);
+ }
+ Services.prefs.removeObserver(alignMiddlePref, syncAligner);
+ },
+ };
+}
=====================================
browser/components/preferences/main.inc.xhtml
=====================================
@@ -130,6 +130,9 @@
</vbox>
</groupbox>
+<!-- Letterboxing -->
+#include ./letterboxing.inc.xhtml
+
<hbox id="languageAndAppearanceCategory"
class="subcategory"
hidden="true"
=====================================
browser/components/preferences/main.js
=====================================
@@ -729,6 +729,7 @@ var gMainPane = {
]);
AppearanceChooser.init();
+ gLetterboxingPrefs.init();
// Notify observers that the UI is now ready
Services.obs.notifyObservers(window, "main-pane-loaded");
@@ -2585,6 +2586,7 @@ var gMainPane = {
Services.prefs.removeObserver(PREF_CONTAINERS_EXTENSION, this);
Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
Services.obs.removeObserver(this, BACKGROUND_UPDATE_CHANGED_TOPIC);
+ gLetterboxingPrefs.destroy();
AppearanceChooser.destroy();
},
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/preferences/letterboxing.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/onionservices/authPreferences.css"?>
@@ -42,6 +43,7 @@
<!-- Links below are only used for search-l10n-ids into subdialogs -->
<link rel="localization" href="browser/aboutDialog.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/preferences/addEngine.ftl"/>
<link rel="localization" href="browser/preferences/blocklists.ftl"/>
<link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,3 +70,27 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+## Preferences - Letterboxing.
+
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-header = Letterboxing
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-overview = { -brand-short-name }'s Letterboxing feature restricts websites to display at specific sizes, making it harder to single out users on the basis of their window or screen size.
+letterboxing-learn-more = Learn more
+letterboxing-window-size-header = Window size
+letterboxing-remember-size =
+ .label = Reuse last window size when opening a new window
+ .accesskey = R
+letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-description = Choose where you want to align the website’s content.
+letterboxing-alignment-top = Top
+letterboxing-alignment-middle = Middle
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-disabled-description = Letterboxing is currently disabled.
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-enable-button =
+ .label = Enable Letterboxing
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/96be79…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/96be79…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 41916: Letterboxing preferences UI
by ma1 (@ma1) 21 Mar '24
by ma1 (@ma1) 21 Mar '24
21 Mar '24
ma1 pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
d873c008 by hackademix at 2024-03-21T13:56:42+01:00
Bug 41916: Letterboxing preferences UI
- - - - -
12 changed files:
- browser/components/preferences/jar.mn
- + browser/components/preferences/letterboxing-middle-dark.svg
- + browser/components/preferences/letterboxing-middle-light.svg
- + browser/components/preferences/letterboxing-top-dark.svg
- + browser/components/preferences/letterboxing-top-light.svg
- + browser/components/preferences/letterboxing.css
- + browser/components/preferences/letterboxing.inc.xhtml
- + browser/components/preferences/letterboxing.js
- browser/components/preferences/main.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.xhtml
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/components/preferences/jar.mn
=====================================
@@ -22,3 +22,10 @@ browser.jar:
content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
content/browser/preferences/web-appearance-dark.svg
content/browser/preferences/web-appearance-light.svg
+
+ content/browser/preferences/letterboxing.js
+ content/browser/preferences/letterboxing.css
+ content/browser/preferences/letterboxing-middle-dark.svg
+ content/browser/preferences/letterboxing-middle-light.svg
+ content/browser/preferences/letterboxing-top-dark.svg
+ content/browser/preferences/letterboxing-top-light.svg
=====================================
browser/components/preferences/letterboxing-middle-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_529)">
+<g clip-path="url(#clip0_2272_529)">
+<path d="M58 3H4V45H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="#3A3944"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="white"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="white"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_529" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_529"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_529" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_529">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-middle-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_960)">
+<g clip-path="url(#clip0_202_960)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="white"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="#52525E"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="#52525E"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_960" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_960"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_960" result="shape"/>
+</filter>
+<clipPath id="clip0_202_960">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_508)">
+<g clip-path="url(#clip0_2272_508)">
+<path d="M58 3H4V45H58V3Z" fill="#52525E"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="#3A3944"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="white"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="white"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_508" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_508"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_508" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_508">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_926)">
+<g clip-path="url(#clip0_202_926)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="white"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="#52525E"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="#52525E"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_926" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_926"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_926" result="shape"/>
+</filter>
+<clipPath id="clip0_202_926">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing.css
=====================================
@@ -0,0 +1,72 @@
+.letterboxing-overview {
+ margin-block-end: 32px;
+}
+
+.letterboxing-search-overview {
+ margin-block-end: 16px;
+}
+#letterboxingAligner {
+ display: flex;
+ justify-content: start;
+ gap: 16px;
+ margin-block: 12px;
+
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-light.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-light.svg");
+}
+
+@media (prefers-color-scheme: dark) {
+ #letterboxingAligner {
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-dark.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-dark.svg");
+ }
+}
+
+#letterboxingAligner .letterboxing-align-top img {
+ content: var(--letterboxing-alignment-img-top);
+}
+#letterboxingAligner .letterboxing-align-middle img {
+ content: var(--letterboxing-alignment-img-middle);
+}
+
+#letterboxingAligner label {
+ width: 200px;
+ flex: 0 0 auto;
+}
+
+#letterboxingAligner img {
+ border: none;
+ box-shadow: none;
+}
+
+/* Hide letterboxing options depending on whether ResistFingerprinting or
+ * Letterboxing is enabled. */
+#letterboxingCategory:not(.rfp-enabled),
+#letterboxingCategory:not(.rfp-enabled) ~ #letterboxingDisabled,
+#letterboxingCategory.letterboxing-enabled ~ #letterboxingDisabled,
+#letterboxingCategory:not(.rfp-enabled.letterboxing-enabled) ~ .letterboxing-category {
+ display: none;
+}
+
+/* We duplicate the Letterboxing overview to appear in search results.
+ * We want to hide them whenever they are *not* part of a search result. */
+:is(
+ /* Hide the duplicates when the category is *not* hidden. */
+ #letterboxingCategory:not(.visually-hidden) ~ .letterboxing-category,
+ /* Also hide the duplicated overview for subsequence search results if a
+ * previous groupbox is *not* hidden. */
+ .letterboxing-category:not(.visually-hidden) ~ .letterboxing-category,
+) .letterboxing-search-overview {
+ display: none;
+}
+
+/* Similarly for #letterboxingDisabled, but we also want to hide its
+ * "Letterboxing" heading.
+ * NOTE: This should only appear in isolation, so we do not need to worry about
+ * subsequent groupboxes. */
+#letterboxingCategory:not(.visually-hidden) ~ #letterboxingDisabled :is(
+ .letterboxing-search-heading,
+ .letterboxing-search-overview
+) {
+ display: none;
+}
=====================================
browser/components/preferences/letterboxing.inc.xhtml
=====================================
@@ -0,0 +1,134 @@
+<script src="chrome://browser/content/preferences/letterboxing.js" />
+<vbox
+ id="letterboxingCategory"
+ class="subcategory"
+ hidden="true"
+ data-category="paneGeneral"
+>
+ <html:h1 data-l10n-id="letterboxing-header" />
+ <description class="letterboxing-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+</vbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-window-size-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <checkbox
+ id="letterboxingRememberSize"
+ data-l10n-id="letterboxing-remember-size"
+ preference="privacy.resistFingerprinting.letterboxing.rememberSize"
+ />
+</groupbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-alignment-header"
+ /></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <description
+ id="letterboxingAlignmentDesc"
+ flex="1"
+ data-l10n-id="letterboxing-alignment-description"
+ />
+ <form
+ xmlns="http://www.w3.org/1999/xhtml"
+ id="letterboxingAligner"
+ autocomplete="off"
+ aria-labelledby="letterboxingAlignmentDesc"
+ >
+ <label class="web-appearance-choice letterboxing-align-top">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="top" />
+ <span data-l10n-id="letterboxing-alignment-top"></span>
+ </div>
+ </label>
+ <label class="web-appearance-choice letterboxing-align-middle">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="middle" />
+ <span data-l10n-id="letterboxing-alignment-middle"></span>
+ </div>
+ </label>
+ </form>
+</groupbox>
+<groupbox
+ id="letterboxingDisabled"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label class="letterboxing-search-heading"><html:h2
+ data-l10n-id="letterboxing-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <hbox align="center">
+ <label
+ class="face-sad"
+ flex="1"
+ data-l10n-id="letterboxing-disabled-description"
+ />
+ <button
+ id="letterboxingEnableButton"
+ class="accessory-button"
+ is="highlightable-button"
+ data-l10n-id="letterboxing-enable-button"
+ />
+ </hbox>
+</groupbox>
=====================================
browser/components/preferences/letterboxing.js
=====================================
@@ -0,0 +1,113 @@
+/* import-globals-from /browser/components/preferences/preferences.js */
+/* import-globals-from /browser/components/preferences/findInPage.js */
+/* import-globals-from /toolkit/content/preferencesBindings.js */
+
+Preferences.addAll([
+ {
+ id: "privacy.resistFingerprinting.letterboxing.rememberSize",
+ type: "bool",
+ },
+]);
+
+{
+ const lbEnabledPref = "privacy.resistFingerprinting.letterboxing";
+ const visibilityPrefs = ["privacy.resistFingerprinting", lbEnabledPref];
+ const alignMiddlePref = "privacy.resistFingerprinting.letterboxing.vcenter";
+
+ const hideFromSearchIf = (mustHide, ...elements) => {
+ for (const element of elements) {
+ if (mustHide) {
+ element.setAttribute("data-hidden-from-search", "true");
+ } else {
+ element.removeAttribute("data-hidden-from-search");
+ }
+ }
+ };
+
+ const syncVisibility = () => {
+ const [rfpEnabled, letterboxingEnabled] = visibilityPrefs.map(pref =>
+ Services.prefs.getBoolPref(pref, false)
+ );
+ const categoryElement = document.getElementById("letterboxingCategory");
+ const { classList } = categoryElement;
+
+ // Show the letterboxing section only if resistFingerprinting is enabled
+ classList.toggle("rfp-enabled", rfpEnabled);
+ classList.toggle("letterboxing-enabled", letterboxingEnabled);
+
+ // To ensure the hidden parts do not contribute to search results, we need
+ // to add "data-hidden-from-search".
+ hideFromSearchIf(
+ !rfpEnabled || !letterboxingEnabled,
+ ...document.querySelectorAll(".letterboxing-category")
+ );
+ hideFromSearchIf(
+ !rfpEnabled || letterboxingEnabled,
+ document.getElementById("letterboxingDisabled")
+ );
+ };
+
+ const onVisibilityPrefChange = () => {
+ syncVisibility();
+ // NOTE: Firefox does not expect "data-hidden-from-search" to change
+ // dynamically after page initialization. So we need to manually recall the
+ // methods that use "data-hidden-from-search". I.e. the "search" method,
+ // using the currently shown category.
+ // NOTE: We skip this if we are just initializing on page load.
+ // NOTE: data-hidden-from-search is also used when the user has entered a
+ // search term. We do not update the results in this case. Instead, it will
+ // update when the search term changes or is cleared.
+ if (!gSearchResultsPane.query) {
+ search(gLastCategory.category, "data-category");
+ }
+ };
+
+ const alignerId = "letterboxingAligner";
+ const syncAligner = () => {
+ const value = Services.prefs.getBoolPref(alignMiddlePref)
+ ? "middle"
+ : "top";
+ document.querySelector(
+ `#${alignerId} input[value="${value}"]`
+ ).checked = true;
+ };
+
+ var gLetterboxingPrefs = {
+ init() {
+ syncVisibility();
+ document
+ .getElementById("letterboxingEnableButton")
+ .addEventListener("command", () => {
+ Services.prefs.setBoolPref(lbEnabledPref, true);
+ // Button should have focus when activated but will be hidden now,
+ // so re-assign focus to the newly revealed options.
+ Services.focus.moveFocus(
+ window,
+ document.querySelector(".letterboxing-category"),
+ Services.focus.MOVEFOCUS_FIRST,
+ 0
+ );
+ });
+ for (const pref of visibilityPrefs) {
+ Services.prefs.addObserver(pref, onVisibilityPrefChange);
+ }
+
+ syncAligner();
+ document.getElementById(alignerId).addEventListener("change", e => {
+ // NOTE: the "change" event is only fired on the checked input.
+ Services.prefs.setBoolPref(
+ alignMiddlePref,
+ e.target.value === "middle"
+ );
+ });
+ Services.prefs.addObserver(alignMiddlePref, syncAligner);
+ },
+
+ destroy() {
+ for (const pref of visibilityPrefs) {
+ Services.prefs.removeObserver(pref, onVisibilityPrefChange);
+ }
+ Services.prefs.removeObserver(alignMiddlePref, syncAligner);
+ },
+ };
+}
=====================================
browser/components/preferences/main.inc.xhtml
=====================================
@@ -130,6 +130,9 @@
</vbox>
</groupbox>
+<!-- Letterboxing -->
+#include ./letterboxing.inc.xhtml
+
<hbox id="languageAndAppearanceCategory"
class="subcategory"
hidden="true"
=====================================
browser/components/preferences/main.js
=====================================
@@ -736,6 +736,7 @@ var gMainPane = {
]);
AppearanceChooser.init();
+ gLetterboxingPrefs.init();
// Notify observers that the UI is now ready
Services.obs.notifyObservers(window, "main-pane-loaded");
@@ -2591,6 +2592,7 @@ var gMainPane = {
Services.prefs.removeObserver(PREF_CONTAINERS_EXTENSION, this);
Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
Services.obs.removeObserver(this, BACKGROUND_UPDATE_CHANGED_TOPIC);
+ gLetterboxingPrefs.destroy();
AppearanceChooser.destroy();
},
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/preferences/letterboxing.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<!DOCTYPE html>
@@ -40,6 +41,7 @@
<!-- Links below are only used for search-l10n-ids into subdialogs -->
<link rel="localization" href="browser/aboutDialog.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/preferences/addEngine.ftl"/>
<link rel="localization" href="browser/preferences/blocklists.ftl"/>
<link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,3 +70,27 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+## Preferences - Letterboxing.
+
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-header = Letterboxing
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-overview = { -brand-short-name }'s Letterboxing feature restricts websites to display at specific sizes, making it harder to single out users on the basis of their window or screen size.
+letterboxing-learn-more = Learn more
+letterboxing-window-size-header = Window size
+letterboxing-remember-size =
+ .label = Reuse last window size when opening a new window
+ .accesskey = R
+letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-description = Choose where you want to align the website’s content.
+letterboxing-alignment-top = Top
+letterboxing-alignment-middle = Middle
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-disabled-description = Letterboxing is currently disabled.
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-enable-button =
+ .label = Enable Letterboxing
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d873c00…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d873c00…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] Bug 41916: Letterboxing preferences UI
by ma1 (@ma1) 21 Mar '24
by ma1 (@ma1) 21 Mar '24
21 Mar '24
ma1 pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
96be793b by hackademix at 2024-03-21T13:41:16+01:00
Bug 41916: Letterboxing preferences UI
- - - - -
12 changed files:
- browser/components/preferences/jar.mn
- + browser/components/preferences/letterboxing-middle-dark.svg
- + browser/components/preferences/letterboxing-middle-light.svg
- + browser/components/preferences/letterboxing-top-dark.svg
- + browser/components/preferences/letterboxing-top-light.svg
- + browser/components/preferences/letterboxing.css
- + browser/components/preferences/letterboxing.inc.xhtml
- + browser/components/preferences/letterboxing.js
- browser/components/preferences/main.inc.xhtml
- browser/components/preferences/main.js
- browser/components/preferences/preferences.xhtml
- browser/locales/en-US/browser/base-browser.ftl
Changes:
=====================================
browser/components/preferences/jar.mn
=====================================
@@ -22,3 +22,10 @@ browser.jar:
content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
content/browser/preferences/web-appearance-dark.svg
content/browser/preferences/web-appearance-light.svg
+
+ content/browser/preferences/letterboxing.js
+ content/browser/preferences/letterboxing.css
+ content/browser/preferences/letterboxing-middle-dark.svg
+ content/browser/preferences/letterboxing-middle-light.svg
+ content/browser/preferences/letterboxing-top-dark.svg
+ content/browser/preferences/letterboxing-top-light.svg
=====================================
browser/components/preferences/letterboxing-middle-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_529)">
+<g clip-path="url(#clip0_2272_529)">
+<path d="M58 3H4V45H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="#3A3944"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="white"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="white"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_529" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_529"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_529" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_529">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-middle-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_960)">
+<g clip-path="url(#clip0_202_960)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<rect x="8" y="18" width="46" height="23" rx="2" fill="white"/>
+<path d="M38 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H38C38.5523 24 39 23.5523 39 23C39 22.4477 38.5523 22 38 22Z" fill="#52525E"/>
+<path d="M27 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H27C27.5523 28 28 27.5523 28 27C28 26.4477 27.5523 26 27 26Z" fill="#52525E"/>
+<path d="M42 30H13C12.4477 30 12 30.4477 12 31C12 31.5523 12.4477 32 13 32H42C42.5523 32 43 31.5523 43 31C43 30.4477 42.5523 30 42 30Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="1.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_960" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_960"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_960" result="shape"/>
+</filter>
+<clipPath id="clip0_202_960">
+<rect x="4" y="3" width="54" height="42" rx="2" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-dark.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_2272_508)">
+<g clip-path="url(#clip0_2272_508)">
+<path d="M58 3H4V45H58V3Z" fill="#52525E"/>
+<path d="M58 3H4V14H58V3Z" fill="#42414D"/>
+<path d="M58 3H4V8H58V3Z" fill="#2B2A33"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="white"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="white"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="white"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="white"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="white"/>
+<path d="M58 14H4V45H58V14Z" fill="#5B5B66"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="#3A3944"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="white"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="white"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="white"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_2272_508" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2272_508"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_2272_508" result="shape"/>
+</filter>
+<clipPath id="clip0_2272_508">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing-top-light.svg
=====================================
@@ -0,0 +1,35 @@
+<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_d_202_926)">
+<g clip-path="url(#clip0_202_926)">
+<path d="M58 3H4V45H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V14H58V3Z" fill="#F0F0F4"/>
+<path d="M58 3H4V8H58V3Z" fill="#E0E0E6"/>
+<path d="M20 5H10C9.44772 5 9 5.44772 9 6C9 6.55228 9.44772 7 10 7H20C20.5523 7 21 6.55228 21 6C21 5.44772 20.5523 5 20 5Z" fill="#52525E"/>
+<path d="M56 11C56 10.4477 55.5523 10 55 10C54.4477 10 54 10.4477 54 11C54 11.5523 54.4477 12 55 12C55.5523 12 56 11.5523 56 11Z" fill="#52525E"/>
+<path d="M8 11C8 10.4477 7.55228 10 7 10C6.44772 10 6 10.4477 6 11C6 11.5523 6.44772 12 7 12C7.55228 12 8 11.5523 8 11Z" fill="#52525E"/>
+<path d="M12 11C12 10.4477 11.5523 10 11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12C11.5523 12 12 11.5523 12 11Z" fill="#52525E"/>
+<path d="M51 10H15C14.4477 10 14 10.4477 14 11C14 11.5523 14.4477 12 15 12H51C51.5523 12 52 11.5523 52 11C52 10.4477 51.5523 10 51 10Z" fill="#52525E"/>
+<path d="M58 14H4V45H58V14Z" fill="#CFCFD8"/>
+<path d="M8 14H55V39C55 40.1046 54.1046 41 53 41H10C8.89543 41 8 40.1046 8 39V14Z" fill="white"/>
+<path d="M38 18H13C12.4477 18 12 18.4477 12 19C12 19.5523 12.4477 20 13 20H38C38.5523 20 39 19.5523 39 19C39 18.4477 38.5523 18 38 18Z" fill="#52525E"/>
+<path d="M27 22H13C12.4477 22 12 22.4477 12 23C12 23.5523 12.4477 24 13 24H27C27.5523 24 28 23.5523 28 23C28 22.4477 27.5523 22 27 22Z" fill="#52525E"/>
+<path d="M42 26H13C12.4477 26 12 26.4477 12 27C12 27.5523 12.4477 28 13 28H42C42.5523 28 43 27.5523 43 27C43 26.4477 42.5523 26 42 26Z" fill="#52525E"/>
+</g>
+<rect x="4.5" y="3.5" width="53" height="41" rx="3.5" stroke="#8F8F9D" shape-rendering="crispEdges"/>
+</g>
+<defs>
+<filter id="filter0_d_202_926" x="0" y="0" width="62" height="50" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.0470588 0 0 0 0 0.0470588 0 0 0 0 0.0509804 0 0 0 0.1 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_202_926"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_202_926" result="shape"/>
+</filter>
+<clipPath id="clip0_202_926">
+<rect x="4" y="3" width="54" height="42" rx="4" fill="white"/>
+</clipPath>
+</defs>
+</svg>
=====================================
browser/components/preferences/letterboxing.css
=====================================
@@ -0,0 +1,72 @@
+.letterboxing-overview {
+ margin-block-end: 32px;
+}
+
+.letterboxing-search-overview {
+ margin-block-end: 16px;
+}
+#letterboxingAligner {
+ display: flex;
+ justify-content: start;
+ gap: 16px;
+ margin-block: 12px;
+
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-light.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-light.svg");
+}
+
+@media (prefers-color-scheme: dark) {
+ #letterboxingAligner {
+ --letterboxing-alignment-img-top: url("chrome://browser/content/preferences/letterboxing-top-dark.svg");
+ --letterboxing-alignment-img-middle: url("chrome://browser/content/preferences/letterboxing-middle-dark.svg");
+ }
+}
+
+#letterboxingAligner .letterboxing-align-top img {
+ content: var(--letterboxing-alignment-img-top);
+}
+#letterboxingAligner .letterboxing-align-middle img {
+ content: var(--letterboxing-alignment-img-middle);
+}
+
+#letterboxingAligner label {
+ width: 200px;
+ flex: 0 0 auto;
+}
+
+#letterboxingAligner img {
+ border: none;
+ box-shadow: none;
+}
+
+/* Hide letterboxing options depending on whether ResistFingerprinting or
+ * Letterboxing is enabled. */
+#letterboxingCategory:not(.rfp-enabled),
+#letterboxingCategory:not(.rfp-enabled) ~ #letterboxingDisabled,
+#letterboxingCategory.letterboxing-enabled ~ #letterboxingDisabled,
+#letterboxingCategory:not(.rfp-enabled.letterboxing-enabled) ~ .letterboxing-category {
+ display: none;
+}
+
+/* We duplicate the Letterboxing overview to appear in search results.
+ * We want to hide them whenever they are *not* part of a search result. */
+:is(
+ /* Hide the duplicates when the category is *not* hidden. */
+ #letterboxingCategory:not(.visually-hidden) ~ .letterboxing-category,
+ /* Also hide the duplicated overview for subsequence search results if a
+ * previous groupbox is *not* hidden. */
+ .letterboxing-category:not(.visually-hidden) ~ .letterboxing-category,
+) .letterboxing-search-overview {
+ display: none;
+}
+
+/* Similarly for #letterboxingDisabled, but we also want to hide its
+ * "Letterboxing" heading.
+ * NOTE: This should only appear in isolation, so we do not need to worry about
+ * subsequent groupboxes. */
+#letterboxingCategory:not(.visually-hidden) ~ #letterboxingDisabled :is(
+ .letterboxing-search-heading,
+ .letterboxing-search-overview
+) {
+ display: none;
+}
=====================================
browser/components/preferences/letterboxing.inc.xhtml
=====================================
@@ -0,0 +1,134 @@
+<script src="chrome://browser/content/preferences/letterboxing.js" />
+<vbox
+ id="letterboxingCategory"
+ class="subcategory"
+ hidden="true"
+ data-category="paneGeneral"
+>
+ <html:h1 data-l10n-id="letterboxing-header" />
+ <description class="letterboxing-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+</vbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-window-size-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <checkbox
+ id="letterboxingRememberSize"
+ data-l10n-id="letterboxing-remember-size"
+ preference="privacy.resistFingerprinting.letterboxing.rememberSize"
+ />
+</groupbox>
+<groupbox
+ class="letterboxing-category"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label><html:h2
+ data-l10n-id="letterboxing-alignment-header"
+ /></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <description
+ id="letterboxingAlignmentDesc"
+ flex="1"
+ data-l10n-id="letterboxing-alignment-description"
+ />
+ <form
+ xmlns="http://www.w3.org/1999/xhtml"
+ id="letterboxingAligner"
+ autocomplete="off"
+ aria-labelledby="letterboxingAlignmentDesc"
+ >
+ <label class="web-appearance-choice letterboxing-align-top">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="top" />
+ <span data-l10n-id="letterboxing-alignment-top"></span>
+ </div>
+ </label>
+ <label class="web-appearance-choice letterboxing-align-middle">
+ <div class="web-appearance-choice-image-container">
+ <img role="presentation" />
+ </div>
+ <div class="web-appearance-choice-footer">
+ <input type="radio" name="alignment" value="middle" />
+ <span data-l10n-id="letterboxing-alignment-middle"></span>
+ </div>
+ </label>
+ </form>
+</groupbox>
+<groupbox
+ id="letterboxingDisabled"
+ data-category="paneGeneral"
+ hidden="true"
+>
+ <label class="letterboxing-search-heading"><html:h2
+ data-l10n-id="letterboxing-header"/></label>
+ <description class="letterboxing-search-overview">
+ <html:span
+ data-l10n-id="letterboxing-overview"
+ class="tail-with-learn-more"
+ ></html:span>
+ <label
+ data-l10n-id="letterboxing-learn-more"
+ class="learnMore text-link"
+ is="text-link"
+ href="about:manual#letterboxing"
+ useoriginprincipal="true"
+ />
+ </description>
+ <hbox align="center">
+ <label
+ class="face-sad"
+ flex="1"
+ data-l10n-id="letterboxing-disabled-description"
+ />
+ <button
+ id="letterboxingEnableButton"
+ class="accessory-button"
+ is="highlightable-button"
+ data-l10n-id="letterboxing-enable-button"
+ />
+ </hbox>
+</groupbox>
=====================================
browser/components/preferences/letterboxing.js
=====================================
@@ -0,0 +1,113 @@
+/* import-globals-from /browser/components/preferences/preferences.js */
+/* import-globals-from /browser/components/preferences/findInPage.js */
+/* import-globals-from /toolkit/content/preferencesBindings.js */
+
+Preferences.addAll([
+ {
+ id: "privacy.resistFingerprinting.letterboxing.rememberSize",
+ type: "bool",
+ },
+]);
+
+{
+ const lbEnabledPref = "privacy.resistFingerprinting.letterboxing";
+ const visibilityPrefs = ["privacy.resistFingerprinting", lbEnabledPref];
+ const alignMiddlePref = "privacy.resistFingerprinting.letterboxing.vcenter";
+
+ const hideFromSearchIf = (mustHide, ...elements) => {
+ for (const element of elements) {
+ if (mustHide) {
+ element.setAttribute("data-hidden-from-search", "true");
+ } else {
+ element.removeAttribute("data-hidden-from-search");
+ }
+ }
+ };
+
+ const syncVisibility = () => {
+ const [rfpEnabled, letterboxingEnabled] = visibilityPrefs.map(pref =>
+ Services.prefs.getBoolPref(pref, false)
+ );
+ const categoryElement = document.getElementById("letterboxingCategory");
+ const { classList } = categoryElement;
+
+ // Show the letterboxing section only if resistFingerprinting is enabled
+ classList.toggle("rfp-enabled", rfpEnabled);
+ classList.toggle("letterboxing-enabled", letterboxingEnabled);
+
+ // To ensure the hidden parts do not contribute to search results, we need
+ // to add "data-hidden-from-search".
+ hideFromSearchIf(
+ !rfpEnabled || !letterboxingEnabled,
+ ...document.querySelectorAll(".letterboxing-category")
+ );
+ hideFromSearchIf(
+ !rfpEnabled || letterboxingEnabled,
+ document.getElementById("letterboxingDisabled")
+ );
+ };
+
+ const onVisibilityPrefChange = () => {
+ syncVisibility();
+ // NOTE: Firefox does not expect "data-hidden-from-search" to change
+ // dynamically after page initialization. So we need to manually recall the
+ // methods that use "data-hidden-from-search". I.e. the "search" method,
+ // using the currently shown category.
+ // NOTE: We skip this if we are just initializing on page load.
+ // NOTE: data-hidden-from-search is also used when the user has entered a
+ // search term. We do not update the results in this case. Instead, it will
+ // update when the search term changes or is cleared.
+ if (!gSearchResultsPane.query) {
+ search(gLastCategory.category, "data-category");
+ }
+ };
+
+ const alignerId = "letterboxingAligner";
+ const syncAligner = () => {
+ const value = Services.prefs.getBoolPref(alignMiddlePref)
+ ? "middle"
+ : "top";
+ document.querySelector(
+ `#${alignerId} input[value="${value}"]`
+ ).checked = true;
+ };
+
+ var gLetterboxingPrefs = {
+ init() {
+ syncVisibility();
+ document
+ .getElementById("letterboxingEnableButton")
+ .addEventListener("command", () => {
+ Services.prefs.setBoolPref(lbEnabledPref, true);
+ // Button should have focus when activated but will be hidden now,
+ // so re-assign focus to the newly revealed options.
+ Services.focus.moveFocus(
+ window,
+ document.querySelector(".letterboxing-category"),
+ Services.focus.MOVEFOCUS_FIRST,
+ 0
+ );
+ });
+ for (const pref of visibilityPrefs) {
+ Services.prefs.addObserver(pref, onVisibilityPrefChange);
+ }
+
+ syncAligner();
+ document.getElementById(alignerId).addEventListener("change", e => {
+ // NOTE: the "change" event is only fired on the checked input.
+ Services.prefs.setBoolPref(
+ alignMiddlePref,
+ e.target.value === "middle"
+ );
+ });
+ Services.prefs.addObserver(alignMiddlePref, syncAligner);
+ },
+
+ destroy() {
+ for (const pref of visibilityPrefs) {
+ Services.prefs.removeObserver(pref, onVisibilityPrefChange);
+ }
+ Services.prefs.removeObserver(alignMiddlePref, syncAligner);
+ },
+ };
+}
=====================================
browser/components/preferences/main.inc.xhtml
=====================================
@@ -130,6 +130,9 @@
</vbox>
</groupbox>
+<!-- Letterboxing -->
+#include ./letterboxing.inc.xhtml
+
<hbox id="languageAndAppearanceCategory"
class="subcategory"
hidden="true"
=====================================
browser/components/preferences/main.js
=====================================
@@ -729,6 +729,7 @@ var gMainPane = {
]);
AppearanceChooser.init();
+ gLetterboxingPrefs.init();
// Notify observers that the UI is now ready
Services.obs.notifyObservers(window, "main-pane-loaded");
@@ -2585,6 +2586,7 @@ var gMainPane = {
Services.prefs.removeObserver(PREF_CONTAINERS_EXTENSION, this);
Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
Services.obs.removeObserver(this, BACKGROUND_UPDATE_CHANGED_TOPIC);
+ gLetterboxingPrefs.destroy();
AppearanceChooser.destroy();
},
=====================================
browser/components/preferences/preferences.xhtml
=====================================
@@ -12,6 +12,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/preferences/letterboxing.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
<?xml-stylesheet href="chrome://browser/content/onionservices/authPreferences.css"?>
@@ -42,6 +43,7 @@
<!-- Links below are only used for search-l10n-ids into subdialogs -->
<link rel="localization" href="browser/aboutDialog.ftl"/>
+ <link rel="localization" href="browser/base-browser.ftl"/>
<link rel="localization" href="browser/preferences/addEngine.ftl"/>
<link rel="localization" href="browser/preferences/blocklists.ftl"/>
<link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -70,3 +70,27 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
+## Preferences - Letterboxing.
+
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-header = Letterboxing
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-overview = { -brand-short-name }'s Letterboxing feature restricts websites to display at specific sizes, making it harder to single out users on the basis of their window or screen size.
+letterboxing-learn-more = Learn more
+letterboxing-window-size-header = Window size
+letterboxing-remember-size =
+ .label = Reuse last window size when opening a new window
+ .accesskey = R
+letterboxing-alignment-header = Content Alignment
+letterboxing-alignment-description = Choose where you want to align the website’s content.
+letterboxing-alignment-top = Top
+letterboxing-alignment-middle = Middle
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-disabled-description = Letterboxing is currently disabled.
+# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
+# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
+letterboxing-enable-button =
+ .label = Enable Letterboxing
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/96be793…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/96be793…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 40926: Implemented the New Identity feature
by richard (@richard) 20 Mar '24
by richard (@richard) 20 Mar '24
20 Mar '24
richard pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
2ce971c7 by Henry Wilkes at 2024-03-20T20:54:07+00:00
fixup! Bug 40926: Implemented the New Identity feature
Bug 42211: Migrate to Fluent.
- - - - -
5a1f3b54 by Henry Wilkes at 2024-03-20T20:54:14+00:00
fixup! Base Browser strings
Bug 42211: Migrate new identity to Fluent.
Also change some strings to sentence case in en-US.
Also removed the hard-coded "Tor Browser", which is not appropriate in
base-browser (e.g. for Mullvad Browser).
- - - - -
a8282d9c by Henry Wilkes at 2024-03-20T20:54:20+00:00
fixup! Tor Browser localization migration scripts.
Bug 42211: Migrate new identity strings to Fluent.
- - - - -
10 changed files:
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/newidentity/content/newIdentityDialog.js
- browser/components/newidentity/content/newIdentityDialog.xhtml
- browser/components/newidentity/content/newidentity.js
- browser/locales/en-US/browser/base-browser.ftl
- − browser/locales/en-US/chrome/browser/newIdentity.properties
- browser/locales/jar.mn
- + tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
Changes:
=====================================
browser/base/content/appmenu-viewcache.inc.xhtml
=====================================
@@ -57,6 +57,7 @@
<toolbarseparator/>
<toolbarbutton id="appMenu-new-identity"
class="subviewbutton"
+ data-l10n-id="appmenuitem-new-identity"
key="new-identity-key"/>
<toolbarseparator/>
<toolbarbutton id="appMenu-bookmarks-button"
=====================================
browser/base/content/browser-menubar.inc
=====================================
@@ -30,7 +30,7 @@
key="key_privatebrowsing" data-l10n-id="menu-file-new-private-window"/>
<menuseparator/>
<menuitem id="menu_newIdentity"
- key="new-identity-key"/>
+ key="new-identity-key" data-l10n-id="menu-new-identity"/>
<menuseparator/>
<menuitem id="menu_openLocation"
hidden="true"
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -590,7 +590,8 @@
ondragover="newWindowButtonObserver.onDragOver(event)"
ondragenter="newWindowButtonObserver.onDragOver(event)"/>
- <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"/>
+ <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ data-l10n-id="toolbar-new-identity"/>
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
observes="View:FullScreen"
=====================================
browser/components/newidentity/content/newIdentityDialog.js
=====================================
@@ -5,20 +5,13 @@
document.addEventListener("dialogaccept", () => {
const retvals = window.arguments[0];
retvals.confirmed = true;
- retvals.neverAskAgain = document.querySelector("#neverAskAgain").checked;
+ retvals.neverAskAgain = document.getElementById("neverAskAgain").checked;
});
document.addEventListener("DOMContentLoaded", () => {
- const { NewIdentityStrings } = window.arguments[0];
- const dialog = document.querySelector("#newIdentityDialog");
+ const dialog = document.getElementById("newIdentityDialog");
- dialog.querySelector("#infoTitle").textContent =
- NewIdentityStrings.new_identity_prompt_title;
- dialog.querySelector("#infoBody").textContent =
- NewIdentityStrings.new_identity_prompt;
- dialog.querySelector("#neverAskAgain").label =
- NewIdentityStrings.new_identity_ask_again;
const accept = dialog.getButton("accept");
- accept.label = NewIdentityStrings.new_identity_restart;
+ document.l10n.setAttributes(accept, "new-identity-dialog-confirm");
accept.classList.add("danger-button");
});
=====================================
browser/components/newidentity/content/newIdentityDialog.xhtml
=====================================
@@ -21,9 +21,8 @@
>
<dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept">
<linkset>
- <!-- Without this document.l10n is not initialized, and we need it for the
- cancel button. -->
<html:link rel="localization" href="branding/brand.ftl" />
+ <html:link rel="localization" href="browser/base-browser.ftl" />
</linkset>
<div xmlns="http://www.w3.org/1999/xhtml">
@@ -33,13 +32,18 @@
<xul:image id="infoIcon" />
</div>
<div id="infoContainer">
- <xul:description id="infoTitle" />
+ <xul:description
+ id="infoTitle"
+ data-l10n-id="new-identity-dialog-title"
+ />
<xul:description
id="infoBody"
- context="contentAreaContextMenu"
- noinitialfocus="true"
+ data-l10n-id="new-identity-dialog-description"
+ />
+ <xul:checkbox
+ id="neverAskAgain"
+ data-l10n-id="new-identity-dialog-never-ask-checkbox"
/>
- <xul:checkbox id="neverAskAgain" />
</div>
</div>
</div>
=====================================
browser/components/newidentity/content/newidentity.js
=====================================
@@ -1,40 +1,6 @@
"use strict";
-/* globals CustomizableUI Services gFindBarInitialized gFindBar
- OpenBrowserWindow PrivateBrowsingUtils XPCOMUtils
- */
-
-XPCOMUtils.defineLazyGetter(this, "NewIdentityStrings", () => {
- const brandBundle = Services.strings.createBundle(
- "chrome://branding/locale/brand.properties"
- );
- const brandShortName = brandBundle.GetStringFromName("brandShortName");
-
- const fallbackBundle = Services.strings.createBundle(
- "resource:///chrome/en-US/locale/browser/newIdentity.properties"
- );
- const strings = {};
- const brandedStrings = ["new_identity_prompt", "new_identity_restart"];
- for (let { key } of fallbackBundle.getSimpleEnumeration()) {
- strings[key] = fallbackBundle.GetStringFromName(key);
- }
- try {
- const bundle = Services.strings.createBundle(
- "chrome://browser/locale/newIdentity.properties"
- );
- for (const key of Object.keys(strings)) {
- try {
- strings[key] = bundle.GetStringFromName(key);
- } catch (e) {}
- }
- } catch (e) {
- console.warn("Could not load localized New Identity strings");
- }
- for (let key of brandedStrings) {
- strings[key] = strings[key].replaceAll("%S", brandShortName);
- }
- return strings;
-});
+/* eslint-env mozilla/browser-window */
// Use a lazy getter because NewIdentityButton is declared more than once
// otherwise.
@@ -471,11 +437,6 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
// malformed URL, bail out
return;
}
- const label =
- NewIdentityStrings.new_identity_home_notification.replace(
- "%S",
- displayAddress
- );
const callback = () => {
Services.prefs.setStringPref(trustedHomePref, homeURL);
win.BrowserHome();
@@ -484,12 +445,15 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
notificationBox.appendNotification(
"new-identity-safe-home",
{
- label,
+ label: {
+ "l10n-id": "new-identity-blocked-home-notification",
+ "l10n-args": { url: displayAddress },
+ },
priority: notificationBox.PRIORITY_INFO_MEDIUM,
},
[
{
- label: NewIdentityStrings.new_identity_home_load_button,
+ "l10n-id": "new-identity-blocked-home-ignore-button",
callback,
},
]
@@ -550,37 +514,20 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
const button =
document.getElementById("new-identity-button") ||
window.gNavToolbox.palette.querySelector("#new-identity-button");
- if (button) {
- button.setAttribute("tooltiptext", NewIdentityStrings.new_identity);
- // Include an equal label, shown in the overflow menu or during
- // customization.
- button.setAttribute("label", NewIdentityStrings.new_identity);
- button.addEventListener("command", () => {
- this.onCommand();
- });
- }
- const viewCache = document.getElementById("appMenu-viewCache").content;
- const appButton = viewCache.querySelector("#appMenu-new-identity");
- if (appButton) {
- appButton.setAttribute(
- "label",
- NewIdentityStrings.new_identity_sentence_case
- );
- appButton.addEventListener("command", () => {
+ button?.addEventListener("command", () => {
+ this.onCommand();
+ });
+ document
+ .getElementById("appMenu-viewCache")
+ .content.querySelector("#appMenu-new-identity")
+ ?.addEventListener("command", () => {
this.onCommand();
});
- }
- const menu = document.querySelector("#menu_newIdentity");
- if (menu) {
- menu.setAttribute("label", NewIdentityStrings.new_identity);
- menu.setAttribute(
- "accesskey",
- NewIdentityStrings.new_identity_menu_accesskey
- );
- menu.addEventListener("command", () => {
+ document
+ .getElementById("menu_newIdentity")
+ ?.addEventListener("command", () => {
this.onCommand();
});
- }
},
uninit() {},
@@ -598,7 +545,6 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
const shouldConfirm = Services.prefs.getBoolPref(prefConfirm, true);
if (shouldConfirm) {
const params = {
- NewIdentityStrings,
confirmed: false,
neverAskAgain: false,
};
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -11,20 +11,19 @@ language-notification-label-system = { -brand-short-name } has set your display
language-notification-label = { -brand-short-name } has set your display language to { $language }.
language-notification-button = Change Language…
-
## Fullscreen/maximization notification shown when letterboxing is disabled
basebrowser-rfp-maximize-warning-message = Maximizing the browser window can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave browser windows in their original default size.
basebrowser-rfp-restore-window-size-button-label = Restore
basebrowser-rfp-restore-window-size-button-ak = R
-
## Tooltip for the about:addons recommended badge
basebrowser-addon-badge-recommended = Mozilla only recommends extensions that meet their standards for security and performance
basebrowser-addon-badge-verified = Mozilla has reviewed this extension to meet their standards for security and performance
## Option to show or hide the NoScript extension button/item.
+
basebrowser-addon-noscript-visibility-label = Toolbar button
basebrowser-addon-noscript-visibility-show = Show
basebrowser-addon-noscript-visibility-hide = Hide
@@ -35,3 +34,39 @@ basebrowser-addon-noscript-visibility-hide = Hide
# $version (String) - The current browser version. E.g. "12.5.3".
# $firefoxVersion (String) - The version number of Firefox the current browser is based on. E.g. "102.15.0esr".
basebrowser-about-dialog-version = { $version } (based on Mozilla Firefox { $firefoxVersion })
+
+## New identity.
+
+# File menu items use title case for English (US).
+menu-new-identity =
+ .label = New Identity
+ .accesskey = I
+
+# App menu (hamburger menu) items use sentence case for English (US).
+appmenuitem-new-identity =
+ .label = New identity
+
+# Uses sentence case for English (US).
+# ".label" is the accessible name, and is visible in the overflow menu and when
+# customizing the toolbar.
+# ".tooltiptext" will be identical to the label.
+toolbar-new-identity =
+ .label = New identity
+ .tooltiptext = { toolbar-new-identity.label }
+
+## New identity dialog.
+
+new-identity-dialog-title = Reset your identity?
+new-identity-dialog-description = { -brand-short-name } will close all windows and tabs. All website sessions will be lost.
+new-identity-dialog-never-ask-checkbox =
+ .label = Never ask me again
+new-identity-dialog-confirm =
+ .label = Restart { -brand-short-name }
+
+## New identity: blocked home page notification.
+
+# '-brand-short-name' is the localized browser name, like "Tor Browser".
+# $url (String) - The URL of the home page, possibly shortened.
+new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
+# Button to continue loading the home page, despite the warning message.
+new-identity-blocked-home-ignore-button = Load it anyway
=====================================
browser/locales/en-US/chrome/browser/newIdentity.properties deleted
=====================================
@@ -1,13 +0,0 @@
-new_identity = New Identity
-# This is the string for the hamburger menu
-new_identity_sentence_case = New identity
-# %S is the application name. Keep it as a placeholder
-new_identity_prompt_title = Reset your identity?
-new_identity_prompt = %S will close all windows and tabs. All website sessions will be lost. \nRestart %S now to reset your identity?
-new_identity_restart = Restart %S
-new_identity_ask_again = Never ask me again
-# Shown in the File menu (use Alt to show File, if you do not see)
-new_identity_menu_accesskey = I
-new_identity_home_notification = Tor Browser blocked your homepage (%S) from loading because it might recognize your previous session.
-# %S is replaced with the custom homepage URL's domain if applicable, or some short-hand of it otherwise
-new_identity_home_load_button = Load it anyway
=====================================
browser/locales/jar.mn
=====================================
@@ -33,5 +33,4 @@
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
- locale/browser/newIdentity.properties (%chrome/browser/newIdentity.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
=====================================
@@ -0,0 +1,48 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
+from fluent.migrate.transforms import REPLACE
+
+
+def migrate(ctx):
+ legacy_path = "newIdentity.properties"
+
+ ctx.add_transforms(
+ "base-browser.ftl",
+ "base-browser.ftl",
+ transforms_from(
+ """
+menu-new-identity =
+ .label = { COPY(path, "new_identity") }
+ .accesskey = { COPY(path, "new_identity_menu_accesskey") }
+appmenuitem-new-identity =
+ .label = { COPY(path, "new_identity_sentence_case") }
+toolbar-new-identity =
+ .label = { COPY(path, "new_identity_sentence_case") }
+ .tooltiptext = { toolbar-new-identity.label }
+
+new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
+new-identity-dialog-never-ask-checkbox =
+ .label = { COPY(path, "new_identity_ask_again") }
+
+new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
+""",
+ path=legacy_path,
+ )
+ + [
+ # Replace "%S" with "{ -brand-short-name }" in confirm button.
+ FTL.Message(
+ id=FTL.Identifier("new-identity-dialog-confirm"),
+ value=None,
+ attributes=[
+ FTL.Attribute(
+ id=FTL.Identifier("label"),
+ value=REPLACE(
+ legacy_path,
+ "new_identity_restart",
+ {"%1$S": TERM_REFERENCE("brand-short-name")},
+ ),
+ ),
+ ],
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/96…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/96…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 40926: Implemented the New Identity feature
by richard (@richard) 20 Mar '24
by richard (@richard) 20 Mar '24
20 Mar '24
richard pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
83797a6f by Henry Wilkes at 2024-03-20T20:50:50+00:00
fixup! Bug 40926: Implemented the New Identity feature
Bug 42211: Migrate to Fluent.
- - - - -
d7d04937 by Henry Wilkes at 2024-03-20T20:50:58+00:00
fixup! Base Browser strings
Bug 42211: Migrate new identity to Fluent.
Also change some strings to sentence case in en-US.
Also removed the hard-coded "Tor Browser", which is not appropriate in
base-browser (e.g. for Mullvad Browser).
- - - - -
57b8a1d5 by Henry Wilkes at 2024-03-20T20:51:09+00:00
fixup! Tor Browser localization migration scripts.
Bug 42211: Migrate new identity strings to Fluent.
- - - - -
10 changed files:
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/newidentity/content/newIdentityDialog.js
- browser/components/newidentity/content/newIdentityDialog.xhtml
- browser/components/newidentity/content/newidentity.js
- browser/locales/en-US/browser/base-browser.ftl
- − browser/locales/en-US/chrome/browser/newIdentity.properties
- browser/locales/jar.mn
- + tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
Changes:
=====================================
browser/base/content/appmenu-viewcache.inc.xhtml
=====================================
@@ -57,6 +57,7 @@
<toolbarseparator/>
<toolbarbutton id="appMenu-new-identity"
class="subviewbutton"
+ data-l10n-id="appmenuitem-new-identity"
key="new-identity-key"/>
<toolbarseparator/>
<toolbarbutton id="appMenu-bookmarks-button"
=====================================
browser/base/content/browser-menubar.inc
=====================================
@@ -30,7 +30,7 @@
key="key_privatebrowsing" data-l10n-id="menu-file-new-private-window"/>
<menuseparator/>
<menuitem id="menu_newIdentity"
- key="new-identity-key"/>
+ key="new-identity-key" data-l10n-id="menu-new-identity"/>
<menuseparator/>
<menuitem id="menu_openLocation"
hidden="true"
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -590,7 +590,8 @@
ondragover="newWindowButtonObserver.onDragOver(event)"
ondragenter="newWindowButtonObserver.onDragOver(event)"/>
- <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"/>
+ <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ data-l10n-id="toolbar-new-identity"/>
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
observes="View:FullScreen"
=====================================
browser/components/newidentity/content/newIdentityDialog.js
=====================================
@@ -5,20 +5,13 @@
document.addEventListener("dialogaccept", () => {
const retvals = window.arguments[0];
retvals.confirmed = true;
- retvals.neverAskAgain = document.querySelector("#neverAskAgain").checked;
+ retvals.neverAskAgain = document.getElementById("neverAskAgain").checked;
});
document.addEventListener("DOMContentLoaded", () => {
- const { NewIdentityStrings } = window.arguments[0];
- const dialog = document.querySelector("#newIdentityDialog");
+ const dialog = document.getElementById("newIdentityDialog");
- dialog.querySelector("#infoTitle").textContent =
- NewIdentityStrings.new_identity_prompt_title;
- dialog.querySelector("#infoBody").textContent =
- NewIdentityStrings.new_identity_prompt;
- dialog.querySelector("#neverAskAgain").label =
- NewIdentityStrings.new_identity_ask_again;
const accept = dialog.getButton("accept");
- accept.label = NewIdentityStrings.new_identity_restart;
+ document.l10n.setAttributes(accept, "new-identity-dialog-confirm");
accept.classList.add("danger-button");
});
=====================================
browser/components/newidentity/content/newIdentityDialog.xhtml
=====================================
@@ -21,9 +21,8 @@
>
<dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept">
<linkset>
- <!-- Without this document.l10n is not initialized, and we need it for the
- cancel button. -->
<html:link rel="localization" href="branding/brand.ftl" />
+ <html:link rel="localization" href="browser/base-browser.ftl" />
</linkset>
<div xmlns="http://www.w3.org/1999/xhtml">
@@ -33,13 +32,18 @@
<xul:image id="infoIcon" />
</div>
<div id="infoContainer">
- <xul:description id="infoTitle" />
+ <xul:description
+ id="infoTitle"
+ data-l10n-id="new-identity-dialog-title"
+ />
<xul:description
id="infoBody"
- context="contentAreaContextMenu"
- noinitialfocus="true"
+ data-l10n-id="new-identity-dialog-description"
+ />
+ <xul:checkbox
+ id="neverAskAgain"
+ data-l10n-id="new-identity-dialog-never-ask-checkbox"
/>
- <xul:checkbox id="neverAskAgain" />
</div>
</div>
</div>
=====================================
browser/components/newidentity/content/newidentity.js
=====================================
@@ -1,40 +1,6 @@
"use strict";
-/* globals CustomizableUI Services gFindBarInitialized gFindBar
- OpenBrowserWindow PrivateBrowsingUtils XPCOMUtils
- */
-
-XPCOMUtils.defineLazyGetter(this, "NewIdentityStrings", () => {
- const brandBundle = Services.strings.createBundle(
- "chrome://branding/locale/brand.properties"
- );
- const brandShortName = brandBundle.GetStringFromName("brandShortName");
-
- const fallbackBundle = Services.strings.createBundle(
- "resource:///chrome/en-US/locale/browser/newIdentity.properties"
- );
- const strings = {};
- const brandedStrings = ["new_identity_prompt", "new_identity_restart"];
- for (let { key } of fallbackBundle.getSimpleEnumeration()) {
- strings[key] = fallbackBundle.GetStringFromName(key);
- }
- try {
- const bundle = Services.strings.createBundle(
- "chrome://browser/locale/newIdentity.properties"
- );
- for (const key of Object.keys(strings)) {
- try {
- strings[key] = bundle.GetStringFromName(key);
- } catch (e) {}
- }
- } catch (e) {
- console.warn("Could not load localized New Identity strings");
- }
- for (let key of brandedStrings) {
- strings[key] = strings[key].replaceAll("%S", brandShortName);
- }
- return strings;
-});
+/* eslint-env mozilla/browser-window */
// Use a lazy getter because NewIdentityButton is declared more than once
// otherwise.
@@ -471,11 +437,6 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
// malformed URL, bail out
return;
}
- const label =
- NewIdentityStrings.new_identity_home_notification.replace(
- "%S",
- displayAddress
- );
const callback = () => {
Services.prefs.setStringPref(trustedHomePref, homeURL);
win.BrowserHome();
@@ -484,12 +445,15 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
notificationBox.appendNotification(
"new-identity-safe-home",
{
- label,
+ label: {
+ "l10n-id": "new-identity-blocked-home-notification",
+ "l10n-args": { url: displayAddress },
+ },
priority: notificationBox.PRIORITY_INFO_MEDIUM,
},
[
{
- label: NewIdentityStrings.new_identity_home_load_button,
+ "l10n-id": "new-identity-blocked-home-ignore-button",
callback,
},
]
@@ -550,37 +514,20 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
const button =
document.getElementById("new-identity-button") ||
window.gNavToolbox.palette.querySelector("#new-identity-button");
- if (button) {
- button.setAttribute("tooltiptext", NewIdentityStrings.new_identity);
- // Include an equal label, shown in the overflow menu or during
- // customization.
- button.setAttribute("label", NewIdentityStrings.new_identity);
- button.addEventListener("command", () => {
- this.onCommand();
- });
- }
- const viewCache = document.getElementById("appMenu-viewCache").content;
- const appButton = viewCache.querySelector("#appMenu-new-identity");
- if (appButton) {
- appButton.setAttribute(
- "label",
- NewIdentityStrings.new_identity_sentence_case
- );
- appButton.addEventListener("command", () => {
+ button?.addEventListener("command", () => {
+ this.onCommand();
+ });
+ document
+ .getElementById("appMenu-viewCache")
+ .content.querySelector("#appMenu-new-identity")
+ ?.addEventListener("command", () => {
this.onCommand();
});
- }
- const menu = document.querySelector("#menu_newIdentity");
- if (menu) {
- menu.setAttribute("label", NewIdentityStrings.new_identity);
- menu.setAttribute(
- "accesskey",
- NewIdentityStrings.new_identity_menu_accesskey
- );
- menu.addEventListener("command", () => {
+ document
+ .getElementById("menu_newIdentity")
+ ?.addEventListener("command", () => {
this.onCommand();
});
- }
},
uninit() {},
@@ -598,7 +545,6 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
const shouldConfirm = Services.prefs.getBoolPref(prefConfirm, true);
if (shouldConfirm) {
const params = {
- NewIdentityStrings,
confirmed: false,
neverAskAgain: false,
};
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -11,20 +11,19 @@ language-notification-label-system = { -brand-short-name } has set your display
language-notification-label = { -brand-short-name } has set your display language to { $language }.
language-notification-button = Change Language…
-
## Fullscreen/maximization notification shown when letterboxing is disabled
basebrowser-rfp-maximize-warning-message = Maximizing the browser window can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave browser windows in their original default size.
basebrowser-rfp-restore-window-size-button-label = Restore
basebrowser-rfp-restore-window-size-button-ak = R
-
## Tooltip for the about:addons recommended badge
basebrowser-addon-badge-recommended = Mozilla only recommends extensions that meet their standards for security and performance
basebrowser-addon-badge-verified = Mozilla has reviewed this extension to meet their standards for security and performance
## Option to show or hide the NoScript extension button/item.
+
basebrowser-addon-noscript-visibility-label = Toolbar button
basebrowser-addon-noscript-visibility-show = Show
basebrowser-addon-noscript-visibility-hide = Hide
@@ -35,3 +34,39 @@ basebrowser-addon-noscript-visibility-hide = Hide
# $version (String) - The current browser version. E.g. "12.5.3".
# $firefoxVersion (String) - The version number of Firefox the current browser is based on. E.g. "102.15.0esr".
basebrowser-about-dialog-version = { $version } (based on Mozilla Firefox { $firefoxVersion })
+
+## New identity.
+
+# File menu items use title case for English (US).
+menu-new-identity =
+ .label = New Identity
+ .accesskey = I
+
+# App menu (hamburger menu) items use sentence case for English (US).
+appmenuitem-new-identity =
+ .label = New identity
+
+# Uses sentence case for English (US).
+# ".label" is the accessible name, and is visible in the overflow menu and when
+# customizing the toolbar.
+# ".tooltiptext" will be identical to the label.
+toolbar-new-identity =
+ .label = New identity
+ .tooltiptext = { toolbar-new-identity.label }
+
+## New identity dialog.
+
+new-identity-dialog-title = Reset your identity?
+new-identity-dialog-description = { -brand-short-name } will close all windows and tabs. All website sessions will be lost.
+new-identity-dialog-never-ask-checkbox =
+ .label = Never ask me again
+new-identity-dialog-confirm =
+ .label = Restart { -brand-short-name }
+
+## New identity: blocked home page notification.
+
+# '-brand-short-name' is the localized browser name, like "Tor Browser".
+# $url (String) - The URL of the home page, possibly shortened.
+new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
+# Button to continue loading the home page, despite the warning message.
+new-identity-blocked-home-ignore-button = Load it anyway
=====================================
browser/locales/en-US/chrome/browser/newIdentity.properties deleted
=====================================
@@ -1,13 +0,0 @@
-new_identity = New Identity
-# This is the string for the hamburger menu
-new_identity_sentence_case = New identity
-# %S is the application name. Keep it as a placeholder
-new_identity_prompt_title = Reset your identity?
-new_identity_prompt = %S will close all windows and tabs. All website sessions will be lost. \nRestart %S now to reset your identity?
-new_identity_restart = Restart %S
-new_identity_ask_again = Never ask me again
-# Shown in the File menu (use Alt to show File, if you do not see)
-new_identity_menu_accesskey = I
-new_identity_home_notification = Tor Browser blocked your homepage (%S) from loading because it might recognize your previous session.
-# %S is replaced with the custom homepage URL's domain if applicable, or some short-hand of it otherwise
-new_identity_home_load_button = Load it anyway
=====================================
browser/locales/jar.mn
=====================================
@@ -33,5 +33,4 @@
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
- locale/browser/newIdentity.properties (%chrome/browser/newIdentity.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
=====================================
@@ -0,0 +1,48 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
+from fluent.migrate.transforms import REPLACE
+
+
+def migrate(ctx):
+ legacy_path = "newIdentity.properties"
+
+ ctx.add_transforms(
+ "base-browser.ftl",
+ "base-browser.ftl",
+ transforms_from(
+ """
+menu-new-identity =
+ .label = { COPY(path, "new_identity") }
+ .accesskey = { COPY(path, "new_identity_menu_accesskey") }
+appmenuitem-new-identity =
+ .label = { COPY(path, "new_identity_sentence_case") }
+toolbar-new-identity =
+ .label = { COPY(path, "new_identity_sentence_case") }
+ .tooltiptext = { toolbar-new-identity.label }
+
+new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
+new-identity-dialog-never-ask-checkbox =
+ .label = { COPY(path, "new_identity_ask_again") }
+
+new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
+""",
+ path=legacy_path,
+ )
+ + [
+ # Replace "%S" with "{ -brand-short-name }" in confirm button.
+ FTL.Message(
+ id=FTL.Identifier("new-identity-dialog-confirm"),
+ value=None,
+ attributes=[
+ FTL.Attribute(
+ id=FTL.Identifier("label"),
+ value=REPLACE(
+ legacy_path,
+ "new_identity_restart",
+ {"%1$S": TERM_REFERENCE("brand-short-name")},
+ ),
+ ),
+ ],
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/369e13…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/369e13…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 40926: Implemented the New Identity feature
by richard (@richard) 20 Mar '24
by richard (@richard) 20 Mar '24
20 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
9ef44caa by Henry Wilkes at 2024-03-20T12:24:28+00:00
fixup! Bug 40926: Implemented the New Identity feature
Bug 42211: Migrate to Fluent.
- - - - -
93302237 by Henry Wilkes at 2024-03-20T12:24:28+00:00
fixup! Base Browser strings
Bug 42211: Migrate new identity to Fluent.
Also change some strings to sentence case in en-US.
Also removed the hard-coded "Tor Browser", which is not appropriate in
base-browser (e.g. for Mullvad Browser).
- - - - -
124ce63b by Henry Wilkes at 2024-03-20T12:24:29+00:00
fixup! Tor Browser localization migration scripts.
Bug 42211: Migrate new identity strings to Fluent.
- - - - -
10 changed files:
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/newidentity/content/newIdentityDialog.js
- browser/components/newidentity/content/newIdentityDialog.xhtml
- browser/components/newidentity/content/newidentity.js
- browser/locales/en-US/browser/base-browser.ftl
- − browser/locales/en-US/chrome/browser/newIdentity.properties
- browser/locales/jar.mn
- + tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
Changes:
=====================================
browser/base/content/appmenu-viewcache.inc.xhtml
=====================================
@@ -57,6 +57,7 @@
<toolbarseparator/>
<toolbarbutton id="appMenu-new-identity"
class="subviewbutton"
+ data-l10n-id="appmenuitem-new-identity"
key="new-identity-key"/>
<toolbarbutton id="appMenuNewCircuit"
class="subviewbutton"
=====================================
browser/base/content/browser-menubar.inc
=====================================
@@ -30,7 +30,7 @@
key="key_privatebrowsing" data-l10n-id="menu-file-new-private-window"/>
<menuseparator/>
<menuitem id="menu_newIdentity"
- key="new-identity-key"/>
+ key="new-identity-key" data-l10n-id="menu-new-identity"/>
<menuitem id="menu_newCircuit"
accesskey="&torbutton.context_menu.new_circuit_key;"
key="new-circuit-key"
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -617,7 +617,8 @@
ondragover="newWindowButtonObserver.onDragOver(event)"
ondragenter="newWindowButtonObserver.onDragOver(event)"/>
- <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"/>
+ <toolbarbutton id="new-identity-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ data-l10n-id="toolbar-new-identity"/>
<toolbarbutton id="new-circuit-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
label="&torbutton.context_menu.new_circuit;"
=====================================
browser/components/newidentity/content/newIdentityDialog.js
=====================================
@@ -5,20 +5,13 @@
document.addEventListener("dialogaccept", () => {
const retvals = window.arguments[0];
retvals.confirmed = true;
- retvals.neverAskAgain = document.querySelector("#neverAskAgain").checked;
+ retvals.neverAskAgain = document.getElementById("neverAskAgain").checked;
});
document.addEventListener("DOMContentLoaded", () => {
- const { NewIdentityStrings } = window.arguments[0];
- const dialog = document.querySelector("#newIdentityDialog");
+ const dialog = document.getElementById("newIdentityDialog");
- dialog.querySelector("#infoTitle").textContent =
- NewIdentityStrings.new_identity_prompt_title;
- dialog.querySelector("#infoBody").textContent =
- NewIdentityStrings.new_identity_prompt;
- dialog.querySelector("#neverAskAgain").label =
- NewIdentityStrings.new_identity_ask_again;
const accept = dialog.getButton("accept");
- accept.label = NewIdentityStrings.new_identity_restart;
+ document.l10n.setAttributes(accept, "new-identity-dialog-confirm");
accept.classList.add("danger-button");
});
=====================================
browser/components/newidentity/content/newIdentityDialog.xhtml
=====================================
@@ -21,9 +21,8 @@
>
<dialog id="newIdentityDialog" buttons="accept,cancel" defaultButton="accept">
<linkset>
- <!-- Without this document.l10n is not initialized, and we need it for the
- cancel button. -->
<html:link rel="localization" href="branding/brand.ftl" />
+ <html:link rel="localization" href="browser/base-browser.ftl" />
</linkset>
<div xmlns="http://www.w3.org/1999/xhtml">
@@ -33,13 +32,18 @@
<xul:image id="infoIcon" />
</div>
<div id="infoContainer">
- <xul:description id="infoTitle" />
+ <xul:description
+ id="infoTitle"
+ data-l10n-id="new-identity-dialog-title"
+ />
<xul:description
id="infoBody"
- context="contentAreaContextMenu"
- noinitialfocus="true"
+ data-l10n-id="new-identity-dialog-description"
+ />
+ <xul:checkbox
+ id="neverAskAgain"
+ data-l10n-id="new-identity-dialog-never-ask-checkbox"
/>
- <xul:checkbox id="neverAskAgain" />
</div>
</div>
</div>
=====================================
browser/components/newidentity/content/newidentity.js
=====================================
@@ -1,40 +1,6 @@
"use strict";
-/* globals CustomizableUI Services gFindBarInitialized gFindBar
- OpenBrowserWindow PrivateBrowsingUtils XPCOMUtils
- */
-
-XPCOMUtils.defineLazyGetter(this, "NewIdentityStrings", () => {
- const brandBundle = Services.strings.createBundle(
- "chrome://branding/locale/brand.properties"
- );
- const brandShortName = brandBundle.GetStringFromName("brandShortName");
-
- const fallbackBundle = Services.strings.createBundle(
- "resource:///chrome/en-US/locale/browser/newIdentity.properties"
- );
- const strings = {};
- const brandedStrings = ["new_identity_prompt", "new_identity_restart"];
- for (let { key } of fallbackBundle.getSimpleEnumeration()) {
- strings[key] = fallbackBundle.GetStringFromName(key);
- }
- try {
- const bundle = Services.strings.createBundle(
- "chrome://browser/locale/newIdentity.properties"
- );
- for (const key of Object.keys(strings)) {
- try {
- strings[key] = bundle.GetStringFromName(key);
- } catch (e) {}
- }
- } catch (e) {
- console.warn("Could not load localized New Identity strings");
- }
- for (let key of brandedStrings) {
- strings[key] = strings[key].replaceAll("%S", brandShortName);
- }
- return strings;
-});
+/* eslint-env mozilla/browser-window */
// Use a lazy getter because NewIdentityButton is declared more than once
// otherwise.
@@ -471,11 +437,6 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
// malformed URL, bail out
return;
}
- const label =
- NewIdentityStrings.new_identity_home_notification.replace(
- "%S",
- displayAddress
- );
const callback = () => {
Services.prefs.setStringPref(trustedHomePref, homeURL);
win.BrowserHome();
@@ -484,12 +445,15 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
notificationBox.appendNotification(
"new-identity-safe-home",
{
- label,
+ label: {
+ "l10n-id": "new-identity-blocked-home-notification",
+ "l10n-args": { url: displayAddress },
+ },
priority: notificationBox.PRIORITY_INFO_MEDIUM,
},
[
{
- label: NewIdentityStrings.new_identity_home_load_button,
+ "l10n-id": "new-identity-blocked-home-ignore-button",
callback,
},
]
@@ -550,37 +514,20 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
const button =
document.getElementById("new-identity-button") ||
window.gNavToolbox.palette.querySelector("#new-identity-button");
- if (button) {
- button.setAttribute("tooltiptext", NewIdentityStrings.new_identity);
- // Include an equal label, shown in the overflow menu or during
- // customization.
- button.setAttribute("label", NewIdentityStrings.new_identity);
- button.addEventListener("command", () => {
- this.onCommand();
- });
- }
- const viewCache = document.getElementById("appMenu-viewCache").content;
- const appButton = viewCache.querySelector("#appMenu-new-identity");
- if (appButton) {
- appButton.setAttribute(
- "label",
- NewIdentityStrings.new_identity_sentence_case
- );
- appButton.addEventListener("command", () => {
+ button?.addEventListener("command", () => {
+ this.onCommand();
+ });
+ document
+ .getElementById("appMenu-viewCache")
+ .content.querySelector("#appMenu-new-identity")
+ ?.addEventListener("command", () => {
this.onCommand();
});
- }
- const menu = document.querySelector("#menu_newIdentity");
- if (menu) {
- menu.setAttribute("label", NewIdentityStrings.new_identity);
- menu.setAttribute(
- "accesskey",
- NewIdentityStrings.new_identity_menu_accesskey
- );
- menu.addEventListener("command", () => {
+ document
+ .getElementById("menu_newIdentity")
+ ?.addEventListener("command", () => {
this.onCommand();
});
- }
},
uninit() {},
@@ -598,7 +545,6 @@ XPCOMUtils.defineLazyGetter(this, "NewIdentityButton", () => {
const shouldConfirm = Services.prefs.getBoolPref(prefConfirm, true);
if (shouldConfirm) {
const params = {
- NewIdentityStrings,
confirmed: false,
neverAskAgain: false,
};
=====================================
browser/locales/en-US/browser/base-browser.ftl
=====================================
@@ -11,20 +11,19 @@ language-notification-label-system = { -brand-short-name } has set your display
language-notification-label = { -brand-short-name } has set your display language to { $language }.
language-notification-button = Change Language…
-
## Fullscreen/maximization notification shown when letterboxing is disabled
basebrowser-rfp-maximize-warning-message = Maximizing the browser window can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave browser windows in their original default size.
basebrowser-rfp-restore-window-size-button-label = Restore
basebrowser-rfp-restore-window-size-button-ak = R
-
## Tooltip for the about:addons recommended badge
basebrowser-addon-badge-recommended = Mozilla only recommends extensions that meet their standards for security and performance
basebrowser-addon-badge-verified = Mozilla has reviewed this extension to meet their standards for security and performance
## Option to show or hide the NoScript extension button/item.
+
basebrowser-addon-noscript-visibility-label = Toolbar button
basebrowser-addon-noscript-visibility-show = Show
basebrowser-addon-noscript-visibility-hide = Hide
@@ -35,3 +34,39 @@ basebrowser-addon-noscript-visibility-hide = Hide
# $version (String) - The current browser version. E.g. "12.5.3".
# $firefoxVersion (String) - The version number of Firefox the current browser is based on. E.g. "102.15.0esr".
basebrowser-about-dialog-version = { $version } (based on Mozilla Firefox { $firefoxVersion })
+
+## New identity.
+
+# File menu items use title case for English (US).
+menu-new-identity =
+ .label = New Identity
+ .accesskey = I
+
+# App menu (hamburger menu) items use sentence case for English (US).
+appmenuitem-new-identity =
+ .label = New identity
+
+# Uses sentence case for English (US).
+# ".label" is the accessible name, and is visible in the overflow menu and when
+# customizing the toolbar.
+# ".tooltiptext" will be identical to the label.
+toolbar-new-identity =
+ .label = New identity
+ .tooltiptext = { toolbar-new-identity.label }
+
+## New identity dialog.
+
+new-identity-dialog-title = Reset your identity?
+new-identity-dialog-description = { -brand-short-name } will close all windows and tabs. All website sessions will be lost.
+new-identity-dialog-never-ask-checkbox =
+ .label = Never ask me again
+new-identity-dialog-confirm =
+ .label = Restart { -brand-short-name }
+
+## New identity: blocked home page notification.
+
+# '-brand-short-name' is the localized browser name, like "Tor Browser".
+# $url (String) - The URL of the home page, possibly shortened.
+new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
+# Button to continue loading the home page, despite the warning message.
+new-identity-blocked-home-ignore-button = Load it anyway
=====================================
browser/locales/en-US/chrome/browser/newIdentity.properties deleted
=====================================
@@ -1,13 +0,0 @@
-new_identity = New Identity
-# This is the string for the hamburger menu
-new_identity_sentence_case = New identity
-# %S is the application name. Keep it as a placeholder
-new_identity_prompt_title = Reset your identity?
-new_identity_prompt = %S will close all windows and tabs. All website sessions will be lost. \nRestart %S now to reset your identity?
-new_identity_restart = Restart %S
-new_identity_ask_again = Never ask me again
-# Shown in the File menu (use Alt to show File, if you do not see)
-new_identity_menu_accesskey = I
-new_identity_home_notification = Tor Browser blocked your homepage (%S) from loading because it might recognize your previous session.
-# %S is replaced with the custom homepage URL's domain if applicable, or some short-hand of it otherwise
-new_identity_home_load_button = Load it anyway
=====================================
browser/locales/jar.mn
=====================================
@@ -34,6 +34,5 @@
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
locale/browser/securityLevel.properties (%chrome/browser/securityLevel.properties)
- locale/browser/newIdentity.properties (%chrome/browser/newIdentity.properties)
locale/browser/cryptoSafetyPrompt.properties (%chrome/browser/cryptoSafetyPrompt.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42211-new-identity.py
=====================================
@@ -0,0 +1,48 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
+from fluent.migrate.transforms import REPLACE
+
+
+def migrate(ctx):
+ legacy_path = "newIdentity.properties"
+
+ ctx.add_transforms(
+ "base-browser.ftl",
+ "base-browser.ftl",
+ transforms_from(
+ """
+menu-new-identity =
+ .label = { COPY(path, "new_identity") }
+ .accesskey = { COPY(path, "new_identity_menu_accesskey") }
+appmenuitem-new-identity =
+ .label = { COPY(path, "new_identity_sentence_case") }
+toolbar-new-identity =
+ .label = { COPY(path, "new_identity_sentence_case") }
+ .tooltiptext = { toolbar-new-identity.label }
+
+new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
+new-identity-dialog-never-ask-checkbox =
+ .label = { COPY(path, "new_identity_ask_again") }
+
+new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
+""",
+ path=legacy_path,
+ )
+ + [
+ # Replace "%S" with "{ -brand-short-name }" in confirm button.
+ FTL.Message(
+ id=FTL.Identifier("new-identity-dialog-confirm"),
+ value=None,
+ attributes=[
+ FTL.Attribute(
+ id=FTL.Identifier("label"),
+ value=REPLACE(
+ legacy_path,
+ "new_identity_restart",
+ {"%1$S": TERM_REFERENCE("brand-short-name")},
+ ),
+ ),
+ ],
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c122e1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c122e1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] Bug 42428: Make RFP spoof the timezone of document.lastModified.
by Pier Angelo Vendrame (@pierov) 20 Mar '24
by Pier Angelo Vendrame (@pierov) 20 Mar '24
20 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
96ab6401 by Pier Angelo Vendrame at 2024-03-20T11:06:04+01:00
Bug 42428: Make RFP spoof the timezone of document.lastModified.
- - - - -
1 changed file:
- dom/base/Document.cpp
Changes:
=====================================
dom/base/Document.cpp
=====================================
@@ -4103,10 +4103,11 @@ void Document::SetDocumentURI(nsIURI* aURI) {
}
}
-static void GetFormattedTimeString(PRTime aTime,
+static void GetFormattedTimeString(PRTime aTime, bool aUniversal,
nsAString& aFormattedTimeString) {
PRExplodedTime prtime;
- PR_ExplodeTime(aTime, PR_LocalTimeParameters, &prtime);
+ PR_ExplodeTime(aTime, aUniversal ? PR_GMTParameters : PR_LocalTimeParameters,
+ &prtime);
// "MM/DD/YYYY hh:mm:ss"
char formatedTime[24];
if (SprintfLiteral(formatedTime, "%02d/%02d/%04d %02d:%02d:%02d",
@@ -4124,7 +4125,9 @@ void Document::GetLastModified(nsAString& aLastModified) const {
if (!mLastModified.IsEmpty()) {
aLastModified.Assign(mLastModified);
} else {
- GetFormattedTimeString(PR_Now(), aLastModified);
+ GetFormattedTimeString(PR_Now(),
+ ShouldResistFingerprinting(RFPTarget::Unknown),
+ aLastModified);
}
}
@@ -11053,7 +11056,8 @@ void Document::RetrieveRelevantHeaders(nsIChannel* aChannel) {
mLastModified.Truncate();
if (modDate != 0) {
- GetFormattedTimeString(modDate, mLastModified);
+ GetFormattedTimeString(
+ modDate, ShouldResistFingerprinting(RFPTarget::Unknown), mLastModified);
}
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/96a…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/96a…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 42428: Make RFP spoof the timezone of document.lastModified.
by Pier Angelo Vendrame (@pierov) 20 Mar '24
by Pier Angelo Vendrame (@pierov) 20 Mar '24
20 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
369e1367 by Pier Angelo Vendrame at 2024-03-20T11:05:38+01:00
Bug 42428: Make RFP spoof the timezone of document.lastModified.
- - - - -
1 changed file:
- dom/base/Document.cpp
Changes:
=====================================
dom/base/Document.cpp
=====================================
@@ -4103,10 +4103,11 @@ void Document::SetDocumentURI(nsIURI* aURI) {
}
}
-static void GetFormattedTimeString(PRTime aTime,
+static void GetFormattedTimeString(PRTime aTime, bool aUniversal,
nsAString& aFormattedTimeString) {
PRExplodedTime prtime;
- PR_ExplodeTime(aTime, PR_LocalTimeParameters, &prtime);
+ PR_ExplodeTime(aTime, aUniversal ? PR_GMTParameters : PR_LocalTimeParameters,
+ &prtime);
// "MM/DD/YYYY hh:mm:ss"
char formatedTime[24];
if (SprintfLiteral(formatedTime, "%02d/%02d/%04d %02d:%02d:%02d",
@@ -4124,7 +4125,9 @@ void Document::GetLastModified(nsAString& aLastModified) const {
if (!mLastModified.IsEmpty()) {
aLastModified.Assign(mLastModified);
} else {
- GetFormattedTimeString(PR_Now(), aLastModified);
+ GetFormattedTimeString(PR_Now(),
+ ShouldResistFingerprinting(RFPTarget::Unknown),
+ aLastModified);
}
}
@@ -11053,7 +11056,8 @@ void Document::RetrieveRelevantHeaders(nsIChannel* aChannel) {
mLastModified.Truncate();
if (modDate != 0) {
- GetFormattedTimeString(modDate, mLastModified);
+ GetFormattedTimeString(
+ modDate, ShouldResistFingerprinting(RFPTarget::Unknown), mLastModified);
}
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/369e136…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/369e136…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] Bug 42428: Make RFP spoof the timezone of document.lastModified.
by Pier Angelo Vendrame (@pierov) 20 Mar '24
by Pier Angelo Vendrame (@pierov) 20 Mar '24
20 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
c122e13b by Pier Angelo Vendrame at 2024-03-20T10:47:58+01:00
Bug 42428: Make RFP spoof the timezone of document.lastModified.
- - - - -
1 changed file:
- dom/base/Document.cpp
Changes:
=====================================
dom/base/Document.cpp
=====================================
@@ -4104,10 +4104,11 @@ void Document::SetDocumentURI(nsIURI* aURI) {
}
}
-static void GetFormattedTimeString(PRTime aTime,
+static void GetFormattedTimeString(PRTime aTime, bool aUniversal,
nsAString& aFormattedTimeString) {
PRExplodedTime prtime;
- PR_ExplodeTime(aTime, PR_LocalTimeParameters, &prtime);
+ PR_ExplodeTime(aTime, aUniversal ? PR_GMTParameters : PR_LocalTimeParameters,
+ &prtime);
// "MM/DD/YYYY hh:mm:ss"
char formatedTime[24];
if (SprintfLiteral(formatedTime, "%02d/%02d/%04d %02d:%02d:%02d",
@@ -4125,7 +4126,9 @@ void Document::GetLastModified(nsAString& aLastModified) const {
if (!mLastModified.IsEmpty()) {
aLastModified.Assign(mLastModified);
} else {
- GetFormattedTimeString(PR_Now(), aLastModified);
+ GetFormattedTimeString(PR_Now(),
+ ShouldResistFingerprinting(RFPTarget::Unknown),
+ aLastModified);
}
}
@@ -11113,7 +11116,8 @@ void Document::RetrieveRelevantHeaders(nsIChannel* aChannel) {
mLastModified.Truncate();
if (modDate != 0) {
- GetFormattedTimeString(modDate, mLastModified);
+ GetFormattedTimeString(
+ modDate, ShouldResistFingerprinting(RFPTarget::Unknown), mLastModified);
}
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c122e13…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c122e13…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] fixup! Bug 42247: Android helpers for the TorProvider
by Pier Angelo Vendrame (@pierov) 20 Mar '24
by Pier Angelo Vendrame (@pierov) 20 Mar '24
20 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
c2461f1d by clairehurst at 2024-03-20T09:39:13+01:00
fixup! Bug 42247: Android helpers for the TorProvider
Moved setSettings and TorLegacyAndroidSettings.setMigrated() into a new
if block in onPostExecute() from doInBackground().
- - - - -
1 changed file:
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
Changes:
=====================================
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
=====================================
@@ -181,8 +181,6 @@ public class TorIntegrationAndroid implements BundleEventListener {
TorSettings settings;
if (TorLegacyAndroidSettings.unmigrated()) {
settings = TorLegacyAndroidSettings.loadTorSettings();
- setSettings(settings, true, true);
- TorLegacyAndroidSettings.setMigrated();
} else {
GeckoBundle bundle = message.getBundle("settings");
settings = new TorSettings(bundle);
@@ -193,6 +191,10 @@ public class TorIntegrationAndroid implements BundleEventListener {
@Override
protected void onPostExecute(TorSettings torSettings) {
mSettings = torSettings;
+ if (TorLegacyAndroidSettings.unmigrated()) {
+ setSettings(mSettings, true, true);
+ TorLegacyAndroidSettings.setMigrated();
+ }
}
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c2461f1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c2461f1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41107: Add new type of URL for downloading signatures from people.tpo
by boklm (@boklm) 20 Mar '24
by boklm (@boklm) 20 Mar '24
20 Mar '24
boklm pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
3ff1d54a by Nicolas Vigier at 2024-03-19T16:14:48+01:00
Bug 41107: Add new type of URL for downloading signatures from people.tpo
- - - - -
1 changed file:
- tools/signing/download-unsigned-sha256sums-gpg-signatures-from-people-tpo
Changes:
=====================================
tools/signing/download-unsigned-sha256sums-gpg-signatures-from-people-tpo
=====================================
@@ -16,6 +16,7 @@ do
file="$file.asc"
urls=( \
"https://people.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$tbb_ve…" \
+ "https://people.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$tbb_ve…" \
"https://tb-build-02.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$t…" \
"https://tb-build-03.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$t…" \
)
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] Bug 41107: Add new type of URL for downloading signatures from people.tpo
by boklm (@boklm) 20 Mar '24
by boklm (@boklm) 20 Mar '24
20 Mar '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
9e7707b6 by Nicolas Vigier at 2024-03-19T16:12:58+01:00
Bug 41107: Add new type of URL for downloading signatures from people.tpo
- - - - -
1 changed file:
- tools/signing/download-unsigned-sha256sums-gpg-signatures-from-people-tpo
Changes:
=====================================
tools/signing/download-unsigned-sha256sums-gpg-signatures-from-people-tpo
=====================================
@@ -16,6 +16,7 @@ do
file="$file.asc"
urls=( \
"https://people.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$tbb_ve…" \
+ "https://people.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$tbb_ve…" \
"https://tb-build-02.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$t…" \
"https://tb-build-03.torproject.org/~$builder/builds/$SIGNING_PROJECTNAME/$t…" \
)
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/9…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/9…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.0-1] 2 commits: fixup! Bug 42377: Hidden fonts should obey the allow list.
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch mullvad-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Mullvad Browser
Commits:
bb650dcc by Pier Angelo Vendrame at 2024-03-19T21:23:18+00:00
fixup! Bug 42377: Hidden fonts should obey the allow list.
Revert "Bug 42377: Hidden fonts should obey the allow list."
This reverts commit 3488619aedbc183d54c794ac9e9a9c2f642df4e0.
- - - - -
02311333 by Tom Ritter at 2024-03-19T21:23:24+00:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/b1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/b1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] 2 commits: fixup! Bug 42377: Hidden fonts should obey the allow list.
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
3e30bb9c by Pier Angelo Vendrame at 2024-03-19T21:21:49+00:00
fixup! Bug 42377: Hidden fonts should obey the allow list.
Revert "Bug 42377: Hidden fonts should obey the allow list."
This reverts commit 3488619aedbc183d54c794ac9e9a9c2f642df4e0.
- - - - -
41286b4a by Tom Ritter at 2024-03-19T21:21:56+00:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/be…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/be…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.0-1] 2 commits: fixup! Bug 42377: Hidden fonts should obey the allow list.
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch base-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
3b45e022 by Pier Angelo Vendrame at 2024-03-19T21:20:21+00:00
fixup! Bug 42377: Hidden fonts should obey the allow list.
Revert "Bug 42377: Hidden fonts should obey the allow list."
This reverts commit 3488619aedbc183d54c794ac9e9a9c2f642df4e0.
- - - - -
9d200f6f by Tom Ritter at 2024-03-19T21:20:28+00:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cce16c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cce16c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] 2 commits: fixup! Bug 42377: Hidden fonts should obey the allow list.
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
776dc982 by Pier Angelo Vendrame at 2024-03-19T21:18:58+00:00
fixup! Bug 42377: Hidden fonts should obey the allow list.
Revert "Bug 42377: Hidden fonts should obey the allow list."
This reverts commit 3488619aedbc183d54c794ac9e9a9c2f642df4e0.
- - - - -
0acc9079 by Tom Ritter at 2024-03-19T21:19:04+00:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/ae9239…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/ae9239…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] 2 commits: fixup! Bug 42377: Hidden fonts should obey the allow list.
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
cc54cc20 by Pier Angelo Vendrame at 2024-03-19T21:17:03+00:00
fixup! Bug 42377: Hidden fonts should obey the allow list.
Revert "Bug 42377: Hidden fonts should obey the allow list."
This reverts commit 3488619aedbc183d54c794ac9e9a9c2f642df4e0.
- - - - -
5a94a796 by Tom Ritter at 2024-03-19T21:17:09+00:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/aefa5f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/aefa5f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 2 commits: fixup! Bug 42377: Hidden fonts should obey the allow list.
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
4f66c661 by Pier Angelo Vendrame at 2024-03-19T21:14:27+00:00
fixup! Bug 42377: Hidden fonts should obey the allow list.
Revert "Bug 42377: Hidden fonts should obey the allow list."
This reverts commit 3488619aedbc183d54c794ac9e9a9c2f642df4e0.
- - - - -
efae771c by Tom Ritter at 2024-03-19T21:14:27+00:00
Bug 1885258: Hidden fonts should obey the allow list r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D204571
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/70684f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/70684f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
70684ff4 by Richard Pospesel at 2024-03-19T21:12:29+00:00
fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Bug 42458: Update the "Submit Feedback" link in "About Tor Browser"
- - - - -
1 changed file:
- browser/app/profile/000-tor-browser.js
Changes:
=====================================
browser/app/profile/000-tor-browser.js
=====================================
@@ -10,7 +10,7 @@ pref("app.releaseNotesURL", "about:blank");
// easily found in about:tor
pref("app.releaseNotesURL.aboutDialog", "about:blank");
// point to our feedback url rather than Mozilla's
-pref("app.feedback.baseURL", "https://support.torproject.org/%LOCALE%/get-in-touch/");
+pref("app.feedback.baseURL", "https://support.torproject.org/%LOCALE%/misc/bug-or-feedback/");
pref("browser.shell.checkDefaultBrowser", false);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/70684ff…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/70684ff…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.0.12
by boklm (@boklm) 19 Mar '24
by boklm (@boklm) 19 Mar '24
19 Mar '24
boklm pushed to branch main at The Tor Project / Applications / Tor Browser update responses
Commits:
0cce8359 by Nicolas Vigier at 2024-03-19T14:52:57+01:00
release: new version, 13.0.12
- - - - -
30 changed files:
- update_3/release/.htaccess
- − update_3/release/13.0.10-13.0.11-linux-i686-ALL.xml
- − update_3/release/13.0.10-13.0.11-linux-x86_64-ALL.xml
- − update_3/release/13.0.10-13.0.11-macos-ALL.xml
- − update_3/release/13.0.10-13.0.11-windows-i686-ALL.xml
- − update_3/release/13.0.10-13.0.11-windows-x86_64-ALL.xml
- + update_3/release/13.0.10-13.0.12-linux-i686-ALL.xml
- + update_3/release/13.0.10-13.0.12-linux-x86_64-ALL.xml
- + update_3/release/13.0.10-13.0.12-macos-ALL.xml
- + update_3/release/13.0.10-13.0.12-windows-i686-ALL.xml
- + update_3/release/13.0.10-13.0.12-windows-x86_64-ALL.xml
- + update_3/release/13.0.11-13.0.12-linux-i686-ALL.xml
- + update_3/release/13.0.11-13.0.12-linux-x86_64-ALL.xml
- + update_3/release/13.0.11-13.0.12-macos-ALL.xml
- + update_3/release/13.0.11-13.0.12-windows-i686-ALL.xml
- + update_3/release/13.0.11-13.0.12-windows-x86_64-ALL.xml
- − update_3/release/13.0.11-linux-i686-ALL.xml
- − update_3/release/13.0.11-linux-x86_64-ALL.xml
- − update_3/release/13.0.11-macos-ALL.xml
- − update_3/release/13.0.11-windows-i686-ALL.xml
- − update_3/release/13.0.11-windows-x86_64-ALL.xml
- + update_3/release/13.0.12-linux-i686-ALL.xml
- + update_3/release/13.0.12-linux-x86_64-ALL.xml
- + update_3/release/13.0.12-macos-ALL.xml
- + update_3/release/13.0.12-windows-i686-ALL.xml
- + update_3/release/13.0.12-windows-x86_64-ALL.xml
- − update_3/release/13.0.8-13.0.11-linux-i686-ALL.xml
- − update_3/release/13.0.8-13.0.11-linux-x86_64-ALL.xml
- − update_3/release/13.0.8-13.0.11-macos-ALL.xml
- − update_3/release/13.0.8-13.0.11-windows-i686-ALL.xml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 20 commits: fixup! Bug 40597: Implement TorSettings module
by Pier Angelo Vendrame (@pierov) 19 Mar '24
by Pier Angelo Vendrame (@pierov) 19 Mar '24
19 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
b8fbdc2b by Pier Angelo Vendrame at 2024-03-19T08:19:47+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Use actual private members in InternetTest, and unify the test and
testAsync methods.
- - - - -
2b75d115 by Pier Angelo Vendrame at 2024-03-19T08:19:54+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
The purpose of this commit is just to make the review easier.
It moves the various state callbacks in another part of the file (and
gives them names, to refer to them).
They are not linted/formatted on purpose, to allow checking that the
changes are minimal with the `--color-moved` option.
- - - - -
0c5e98ab by Pier Angelo Vendrame at 2024-03-19T08:19:54+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
The purpose of this commit is just to make the review easier.
It lints the previous commit to make it closer to the next form it will
take.
To review this commit, you can lint TorConnect.sys.mjs and check you
obtain the same result.
- - - - -
8708b47a by Pier Angelo Vendrame at 2024-03-19T08:19:54+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Add a specialized class for every state.
Removed TorConnectStateTransitions and store the valid transitions
inside the new classes.
- - - - -
d5d15e38 by Pier Angelo Vendrame at 2024-03-19T08:19:55+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Removes the context from StateCallback.
Instead, we will always initialize new objects.
- - - - -
929972af by Pier Angelo Vendrame at 2024-03-19T08:19:55+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Fix no-async-promise-executor on TorConnect.
Move the responsibility of starting the next state callback and broadcat
the state change from the begin function to the transition function.
This is what will actually empower us to remove the async promise
executor, because they will not have to block the state change anymore.
- - - - -
f9d3e162 by Pier Angelo Vendrame at 2024-03-19T08:19:55+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Fix no-async-promise-executor on TorConnect.
Now that callbacks have been lifted from the responsibility of blocking
the transition, they do not have to explicitly resolve anymore.
So, get rid of the various promises, and make the old callbacks regular
methods of the corresponding classes.
Also, updated the documentation.
- - - - -
d214f39b by Pier Angelo Vendrame at 2024-03-19T08:19:56+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Add the changeState method to StateCallback, other minor changes.
- - - - -
0e97bf55 by Pier Angelo Vendrame at 2024-03-19T08:19:56+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Move some parts of BootstrappingState.run to methods on their own, to
make it easier to understand this function.
- - - - -
1243f925 by Pier Angelo Vendrame at 2024-03-19T08:19:56+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Various refactors to AutoBootstrappingState.
- - - - -
34868388 by Pier Angelo Vendrame at 2024-03-19T08:19:57+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
TorConnect does not need to be defined in a function.
- - - - -
7218d77c by Pier Angelo Vendrame at 2024-03-19T08:19:57+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
First batch of changes requested in the review.
- - - - -
546449ce by Pier Angelo Vendrame at 2024-03-19T08:19:57+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
More changes on the InternetTest class.
- - - - -
5fe62195 by Pier Angelo Vendrame at 2024-03-19T08:19:58+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Additional refactor to the AutoBootstrappingState: split the run in
more methods, removed some layers of try-catch.
- - - - -
becb5e4b by Pier Angelo Vendrame at 2024-03-19T08:19:58+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Additional refactor to the AutoBootstrappingState: be consistent in
initializing private members and document that in case of race some
variables might be set to undefined.
Also, do not store the bootstrap as a member, to avoid possible race
conditions.
- - - - -
1343ed70 by Pier Angelo Vendrame at 2024-03-19T08:19:58+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
When simulating censorship, do not trigger an additional change of state
if one is already happening.
- - - - -
6bdd9dcd by Pier Angelo Vendrame at 2024-03-19T08:19:59+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Check if the current state is already transitioning, and refusing any
additional transition request.
- - - - -
22b986b8 by Pier Angelo Vendrame at 2024-03-19T08:19:59+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Do not await TorSettings.applySettings after a successfull bootstrap.
Instead, we use .catch and log any unexpected results.
- - - - -
f59ddd26 by Pier Angelo Vendrame at 2024-03-19T08:19:59+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Ignore cancel requests when in non-bootstrapping states.
- - - - -
3788b1ae by Pier Angelo Vendrame at 2024-03-19T08:20:00+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 41114: Refactor TorConnect.
Pass only the new state's name to StateCallback.end.
- - - - -
2 changed files:
- toolkit/modules/Moat.sys.mjs
- toolkit/modules/TorConnect.sys.mjs
Changes:
=====================================
toolkit/modules/Moat.sys.mjs
=====================================
@@ -85,9 +85,13 @@ export class MoatRPC {
TorLauncherPrefs.bridgedb_reflector
);
const front = Services.prefs.getStringPref(TorLauncherPrefs.bridgedb_front);
- const builder = new lazy.DomainFrontRequestBuilder();
- await builder.init(reflector, front);
- this.#requestBuilder = builder;
+ this.#requestBuilder = new lazy.DomainFrontRequestBuilder();
+ try {
+ await this.#requestBuilder.init(reflector, front);
+ } catch (e) {
+ this.#requestBuilder = null;
+ throw e;
+ }
}
async uninit() {
=====================================
toolkit/modules/TorConnect.sys.mjs
=====================================
@@ -117,52 +117,6 @@ XPCOMUtils.defineLazyGetter(
└───────────────────────┘
*/
-/* Maps allowed state transitions
- TorConnectStateTransitions[state] maps to an array of allowed states to transition to
- This is just an encoding of the above transition diagram that we verify at runtime
-*/
-const TorConnectStateTransitions = Object.freeze(
- new Map([
- [
- TorConnectState.Initial,
- [
- TorConnectState.Disabled,
- TorConnectState.Bootstrapping,
- TorConnectState.Configuring,
- TorConnectState.Error,
- ],
- ],
- [
- TorConnectState.Configuring,
- [
- TorConnectState.AutoBootstrapping,
- TorConnectState.Bootstrapping,
- TorConnectState.Error,
- ],
- ],
- [
- TorConnectState.AutoBootstrapping,
- [
- TorConnectState.Configuring,
- TorConnectState.Bootstrapped,
- TorConnectState.Error,
- ],
- ],
- [
- TorConnectState.Bootstrapping,
- [
- TorConnectState.Configuring,
- TorConnectState.Bootstrapped,
- TorConnectState.Error,
- ],
- ],
- [TorConnectState.Error, [TorConnectState.Configuring]],
- [TorConnectState.Bootstrapped, [TorConnectState.Configuring]],
- // terminal states
- [TorConnectState.Disabled, []],
- ])
-);
-
/* Topics Notified by the TorConnect module */
export const TorConnectTopics = Object.freeze({
StateChange: "torconnect:state-change",
@@ -171,81 +125,612 @@ export const TorConnectTopics = Object.freeze({
BootstrapError: "torconnect:bootstrap-error",
});
-// The StateCallback is a wrapper around an async function which executes during
-// the lifetime of a TorConnect State. A system is also provided to allow this
-// ongoing function to early-out via a per StateCallback on_transition callback
-// which may be called externally when we need to early-out and move on to another
-// state (for example, from Bootstrapping to Configuring in the event the user
-// cancels a bootstrap attempt)
+// The StateCallback is the base class to implement the various states.
+// All states should extend it and implement a `run` function, which can
+// optionally be async, and define an array of valid transitions.
+// The parent class will handle everything else, including the transition to
+// other states when the run function is complete etc...
+// A system is also provided to allow this function to early-out. The runner
+// should check the transitioning getter when appropriate and return.
+// In addition to that, a state can implement a transitionRequested callback,
+// which can be used in conjunction with a mechanism like Promise.race.
+// This allows to handle, for example, users' requests to cancel a bootstrap
+// attempt.
+// A state can optionally define a cleanup function, that will be run in all
+// cases before transitioning to the next state.
class StateCallback {
- constructor(state, callback) {
- this._state = state;
- this._callback = callback;
- this._init();
- }
+ #state;
+ #promise;
+ #transitioning = false;
- _init() {
- // this context object is bound to the callback each time transition is
- // attempted via begin()
- this._context = {
- // This callback may be overwritten in the _callback for each state
- // States may have various pieces of work which need to occur
- // before they can be exited (eg resource cleanup)
- // See the _stateCallbacks map for examples
- on_transition: nextState => {},
-
- // flag used to determine if a StateCallback should early-out
- // its work
- _transitioning: false,
-
- // may be called within the StateCallback to determine if exit is possible
- get transitioning() {
- return this._transitioning;
- },
- };
+ constructor(stateName) {
+ this.#state = stateName;
}
async begin(...args) {
- lazy.logger.trace(`Entering ${this._state} state`);
- this._init();
+ lazy.logger.trace(`Entering ${this.#state} state`);
+ // Make sure we always have an actual promise.
try {
- // this Promise will block until this StateCallback has completed its work
- await Promise.resolve(this._callback.call(this._context, ...args));
- lazy.logger.info(`Exited ${this._state} state`);
-
- // handled state transition
- Services.obs.notifyObservers(
- { state: this._nextState },
- TorConnectTopics.StateChange
- );
- TorConnect._callback(this._nextState).begin(...this._nextStateArgs);
- } catch (obj) {
- TorConnect._changeState(
- TorConnectState.Error,
- obj?.message,
- obj?.details
+ this.#promise = Promise.resolve(this.run(...args));
+ } catch (err) {
+ this.#promise = Promise.reject(err);
+ }
+ try {
+ // If the callback throws, transition to error as soon as possible.
+ await this.#promise;
+ lazy.logger.info(`${this.#state}'s run is done`);
+ } catch (err) {
+ if (this.transitioning) {
+ lazy.logger.error(
+ `A transition from ${
+ this.#state
+ } is already happening, silencing this exception.`,
+ err
+ );
+ return;
+ }
+ lazy.logger.error(
+ `${this.#state}'s run threw, transitioning to the Error state.`,
+ err
);
+ this.changeState(TorConnectState.Error, err?.message, err?.details);
+ }
+ }
+
+ async end(nextState) {
+ lazy.logger.trace(
+ `Ending state ${this.#state} (to transition to ${nextState})`
+ );
+
+ if (this.#transitioning) {
+ // Should we check turn this into an error?
+ // It will make dealing with the error state harder.
+ lazy.logger.warn("this.#transitioning is already true.");
+ }
+
+ // Signal we should bail out ASAP.
+ this.#transitioning = true;
+ if (this.transitionRequested) {
+ this.transitionRequested();
}
+
+ lazy.logger.debug(
+ `Waiting for the ${
+ this.#state
+ }'s callback to return before the transition.`
+ );
+ try {
+ await this.#promise;
+ } finally {
+ lazy.logger.debug(`Calling ${this.#state}'s cleanup, if implemented.`);
+ if (this.cleanup) {
+ try {
+ await this.cleanup(nextState);
+ lazy.logger.debug(`${this.#state}'s cleanup function done.`);
+ } catch (e) {
+ lazy.logger.warn(`${this.#state}'s cleanup function threw.`, e);
+ }
+ }
+ }
+ }
+
+ changeState(stateName, ...args) {
+ TorConnect._changeState(stateName, ...args);
}
- transition(nextState, ...args) {
- this._nextState = nextState;
- this._nextStateArgs = [...args];
+ get transitioning() {
+ return this.#transitioning;
+ }
- // calls the on_transition callback to resolve any async work or do per-state cleanup
- // this call to on_transition should resolve the async work currentlying going on in this.begin()
- this._context.on_transition(nextState);
- this._context._transitioning = true;
+ get state() {
+ return this.#state;
}
}
// async method to sleep for a given amount of time
-const debug_sleep = async ms => {
+const debugSleep = async ms => {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms);
});
};
+class InitialState extends StateCallback {
+ allowedTransitions = Object.freeze([
+ TorConnectState.Disabled,
+ TorConnectState.Bootstrapping,
+ TorConnectState.Configuring,
+ TorConnectState.Error,
+ ]);
+
+ constructor() {
+ super(TorConnectState.Initial);
+ }
+
+ run() {
+ // TODO: Block this transition until we successfully build a TorProvider.
+ }
+}
+
+class ConfiguringState extends StateCallback {
+ allowedTransitions = Object.freeze([
+ TorConnectState.AutoBootstrapping,
+ TorConnectState.Bootstrapping,
+ TorConnectState.Error,
+ ]);
+
+ constructor() {
+ super(TorConnectState.Configuring);
+ }
+
+ run() {
+ // The configuring state does not do anything.
+ }
+}
+
+class BootstrappingState extends StateCallback {
+ #bootstrap = null;
+ #bootstrapError = "";
+ #bootstrapErrorDetails = "";
+ #internetTest = null;
+ #cancelled = false;
+
+ allowedTransitions = Object.freeze([
+ TorConnectState.Configuring,
+ TorConnectState.Bootstrapped,
+ TorConnectState.Error,
+ ]);
+
+ constructor() {
+ super(TorConnectState.Bootstrapping);
+ }
+
+ async run() {
+ if (await this.#simulateCensorship()) {
+ return;
+ }
+
+ this.#bootstrap = new lazy.TorBootstrapRequest();
+ this.#bootstrap.onbootstrapstatus = (progress, status) => {
+ TorConnect._updateBootstrapStatus(progress, status);
+ };
+ this.#bootstrap.onbootstrapcomplete = () => {
+ this.#internetTest.cancel();
+ this.changeState(TorConnectState.Bootstrapped);
+ };
+ this.#bootstrap.onbootstraperror = (message, details) => {
+ if (this.#cancelled) {
+ // We ignore this error since it occurred after cancelling (by the
+ // user). We assume the error is just a side effect of the cancelling.
+ // E.g. If the cancelling is triggered late in the process, we get
+ // "Building circuits: Establishing a Tor circuit failed".
+ // TODO: Maybe move this logic deeper in the process to know when to
+ // filter out such errors triggered by cancelling.
+ lazy.logger.warn(`Post-cancel error => ${message}; ${details}`);
+ return;
+ }
+ // We have to wait for the Internet test to finish before sending the
+ // bootstrap error
+ this.#bootstrapError = message;
+ this.#bootstrapErrorDetails = details;
+ this.#maybeTransitionToError();
+ };
+
+ this.#internetTest = new InternetTest();
+ this.#internetTest.onResult = status => {
+ TorConnect._internetStatus = status;
+ this.#maybeTransitionToError();
+ };
+ this.#internetTest.onError = () => {
+ this.#maybeTransitionToError();
+ };
+
+ this.#bootstrap.bootstrap();
+ }
+
+ async cleanup(nextState) {
+ if (nextState === TorConnectState.Configuring) {
+ // stop bootstrap process if user cancelled
+ this.#cancelled = true;
+ this.#internetTest?.cancel();
+ await this.#bootstrap?.cancel();
+ }
+ }
+
+ #maybeTransitionToError() {
+ if (
+ this.#internetTest.status === InternetStatus.Unknown &&
+ this.#internetTest.error === null &&
+ this.#internetTest.enabled
+ ) {
+ // We have been called by a failed bootstrap, but the internet test has
+ // not run yet - force it to run immediately!
+ this.#internetTest.test();
+ // Return from this call, because the Internet test's callback will call
+ // us again.
+ return;
+ }
+ // Do not transition to the offline error until we are sure that also the
+ // bootstrap failed, in case Moat is down but the bootstrap can proceed
+ // anyway.
+ if (this.#bootstrapError === "") {
+ return;
+ }
+ if (this.#internetTest.status === InternetStatus.Offline) {
+ this.changeState(
+ TorConnectState.Error,
+ TorStrings.torConnect.offline,
+ ""
+ );
+ } else {
+ // Give priority to the bootstrap error, in case the Internet test fails
+ TorConnect._hasBootstrapEverFailed = true;
+ this.changeState(
+ TorConnectState.Error,
+ this.#bootstrapError,
+ this.#bootstrapErrorDetails
+ );
+ }
+ }
+
+ async #simulateCensorship() {
+ // debug hook to simulate censorship preventing bootstrapping
+ const censorshipLevel = Services.prefs.getIntPref(
+ TorConnectPrefs.censorship_level,
+ 0
+ );
+ if (censorshipLevel <= 0) {
+ return false;
+ }
+
+ await debugSleep(1500);
+ if (this.transitioning) {
+ // Already left this state.
+ return true;
+ }
+ TorConnect._hasBootstrapEverFailed = true;
+ if (censorshipLevel === 2) {
+ const codes = Object.keys(TorConnect._countryNames);
+ TorConnect._detectedLocation =
+ codes[Math.floor(Math.random() * codes.length)];
+ }
+ this.changeState(
+ TorConnectState.Error,
+ "Bootstrap failed (for debugging purposes)",
+ "Error: Censorship simulation"
+ );
+ return true;
+ }
+}
+
+class AutoBootstrappingState extends StateCallback {
+ #moat;
+ #settings;
+ #changedSettings = false;
+ #transitionPromise;
+ #transitionResolve;
+
+ allowedTransitions = Object.freeze([
+ TorConnectState.Configuring,
+ TorConnectState.Bootstrapped,
+ TorConnectState.Error,
+ ]);
+
+ constructor() {
+ super(TorConnectState.AutoBootstrapping);
+ this.#transitionPromise = new Promise(resolve => {
+ this.#transitionResolve = resolve;
+ });
+ }
+
+ async run(countryCode) {
+ if (await this.#simulateCensorship(countryCode)) {
+ return;
+ }
+ await this.#initMoat();
+ if (this.transitioning) {
+ return;
+ }
+ await this.#fetchSettings(countryCode);
+ if (this.transitioning) {
+ return;
+ }
+ await this.#trySettings();
+ }
+
+ /**
+ * Simulate a censorship event, if needed.
+ *
+ * @param {string} countryCode The country code passed to the state
+ * @returns {Promise<boolean>} true if we are simulating the censorship and
+ * the bootstrap should stop immediately, or false if the bootstrap should
+ * continue normally.
+ */
+ async #simulateCensorship(countryCode) {
+ const censorshipLevel = Services.prefs.getIntPref(
+ TorConnectPrefs.censorship_level,
+ 0
+ );
+ if (censorshipLevel <= 0) {
+ return false;
+ }
+
+ // Very severe censorship: always fail even after manually selecting
+ // location specific settings.
+ if (censorshipLevel === 3) {
+ await debugSleep(2500);
+ if (!this.transitioning) {
+ this.changeState(
+ TorConnectState.Error,
+ "Error: censorship simulation",
+ ""
+ );
+ }
+ return true;
+ }
+
+ // Severe censorship: only fail after auto selecting, but succeed after
+ // manually selecting a country.
+ if (censorshipLevel === 2 && !countryCode) {
+ await debugSleep(2500);
+ if (!this.transitioning) {
+ this.changeState(
+ TorConnectState.Error,
+ "Error: Severe Censorship simulation",
+ ""
+ );
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Initialize the MoatRPC to communicate with the backend.
+ */
+ async #initMoat() {
+ this.#moat = new lazy.MoatRPC();
+ // We need to wait Moat's initialization even when we are requested to
+ // transition to another state to be sure its uninit will have its intended
+ // effect. So, do not use Promise.race here.
+ await this.#moat.init();
+ }
+
+ /**
+ * Lookup user's potential censorship circumvention settings from Moat
+ * service.
+ */
+ async #fetchSettings(countryCode) {
+ // For now, throw any errors we receive from the backend, except when it was
+ // unable to detect user's country/region.
+ // If we use specialized error objects, we could pass the original errors to
+ // them.
+ const maybeSettings = await Promise.race([
+ this.#moat.circumvention_settings(
+ [...TorSettings.builtinBridgeTypes, "vanilla"],
+ countryCode
+ ),
+ // This might set maybeSettings to undefined.
+ this.#transitionPromise,
+ ]);
+ if (maybeSettings?.country) {
+ TorConnect._detectedLocation = maybeSettings.country;
+ }
+
+ if (maybeSettings?.settings && maybeSettings.settings.length) {
+ this.#settings = maybeSettings.settings;
+ } else if (!this.transitioning) {
+ // Keep consistency with the other call.
+ this.#settings = await Promise.race([
+ this.#moat.circumvention_defaults([
+ ...TorSettings.builtinBridgeTypes,
+ "vanilla",
+ ]),
+ // This might set this.#settings to undefined.
+ this.#transitionPromise,
+ ]);
+ }
+
+ if (!this.#settings?.length && !this.transitioning) {
+ // Both localized and fallback have, we can just throw to transition to
+ // the error state (but only if we aren't already transitioning).
+ // TODO: Let the UI layer localize the strings.
+
+ if (!TorConnect._detectedLocation) {
+ // unable to determine country
+ this.#throwError(
+ TorStrings.torConnect.autoBootstrappingFailed,
+ TorStrings.torConnect.cannotDetermineCountry
+ );
+ } else {
+ // no settings available for country
+ this.#throwError(
+ TorStrings.torConnect.autoBootstrappingFailed,
+ TorStrings.torConnect.noSettingsForCountry
+ );
+ }
+ }
+ }
+
+ /**
+ * Try to apply the settings we fetched.
+ */
+ async #trySettings() {
+ // Otherwise, apply each of our settings and try to bootstrap with each.
+ for (const [index, currentSetting] of this.#settings.entries()) {
+ if (this.transitioning) {
+ break;
+ }
+
+ lazy.logger.info(
+ `Attempting Bootstrap with configuration ${index + 1}/${
+ this.#settings.length
+ }`
+ );
+
+ // Send the new settings directly to the provider. We will save them only
+ // if the bootstrap succeeds.
+ // FIXME: We should somehow signal TorSettings users that we have set
+ // custom settings, and they should not apply theirs until we are done
+ // with trying ours.
+ // Otherwise, the new settings provided by the user while we were
+ // bootstrapping could be the ones that cause the bootstrap to succeed,
+ // but we overwrite them (unless we backup the original settings, and then
+ // save our new settings only if they have not changed).
+ // Another idea (maybe easier to implement) is to disable the settings
+ // UI while *any* bootstrap is going on.
+ // This is also documented in tor-browser#41921.
+ const provider = await lazy.TorProviderBuilder.build();
+ this.#changedSettings = true;
+ // We need to merge with old settings, in case the user is using a proxy
+ // or is behind a firewall.
+ await provider.writeSettings({
+ ...TorSettings.getSettings(),
+ ...currentSetting,
+ });
+
+ // Build out our bootstrap request.
+ const bootstrap = new lazy.TorBootstrapRequest();
+ bootstrap.onbootstrapstatus = (progress, status) => {
+ TorConnect._updateBootstrapStatus(progress, status);
+ };
+ bootstrap.onbootstraperror = (message, details) => {
+ lazy.logger.error(`Auto-Bootstrap error => ${message}; ${details}`);
+ };
+
+ // Begin the bootstrap.
+ const success = await Promise.race([
+ bootstrap.bootstrap(),
+ this.#transitionPromise,
+ ]);
+ // Either the bootstrap request has finished, or a transition (caused by
+ // an error or by user's cancelation) started.
+ // However, we cannot be already transitioning in case of success, so if
+ // we are we should cancel the current bootstrap.
+ // With the current TorProvider, this will set DisableNetwork=1 again,
+ // which is what the user wanted if they canceled.
+ if (this.transitioning) {
+ if (success) {
+ lazy.logger.warn(
+ "We were already transitioning after a success, we were not expecting this."
+ );
+ }
+ bootstrap.cancel();
+ return;
+ }
+ if (success) {
+ // Persist the current settings to preferences.
+ TorSettings.setSettings(currentSetting);
+ TorSettings.saveToPrefs();
+ // Do not await `applySettings`. Otherwise this opens up a window of
+ // time where the user can still "Cancel" the bootstrap.
+ // We are calling `applySettings` just to be on the safe side, but the
+ // settings we are passing now should be exactly the same we already
+ // passed earlier.
+ TorSettings.applySettings().catch(e =>
+ lazy.logger.error("TorSettings.applySettings threw unexpectedly.", e)
+ );
+ this.changeState(TorConnectState.Bootstrapped);
+ return;
+ }
+ }
+
+ // Only explicitly change state here if something else has not transitioned
+ // us.
+ if (!this.transitioning) {
+ this.#throwError(
+ TorStrings.torConnect.autoBootstrappingFailed,
+ TorStrings.torConnect.autoBootstrappingAllFailed
+ );
+ }
+ }
+
+ #throwError(message, details) {
+ let err = new Error(message);
+ err.details = details;
+ throw err;
+ }
+
+ transitionRequested() {
+ this.#transitionResolve();
+ }
+
+ async cleanup(nextState) {
+ // No need to await.
+ this.#moat?.uninit();
+ this.#moat = null;
+
+ if (this.#changedSettings && nextState !== TorConnectState.Bootstrapped) {
+ try {
+ await TorSettings.applySettings();
+ } catch (e) {
+ // We cannot do much if the original settings were bad or
+ // if the connection closed, so just report it in the
+ // console.
+ lazy.logger.warn("Failed to restore original settings.", e);
+ }
+ }
+ }
+}
+
+class BootstrappedState extends StateCallback {
+ // We may need to leave the bootstrapped state if the tor daemon
+ // exits (if it is restarted, we will have to bootstrap again).
+ allowedTransitions = Object.freeze([TorConnectState.Configuring]);
+
+ constructor() {
+ super(TorConnectState.Bootstrapped);
+ }
+
+ run() {
+ // Notify observers of bootstrap completion.
+ Services.obs.notifyObservers(null, TorConnectTopics.BootstrapComplete);
+ }
+}
+
+class ErrorState extends StateCallback {
+ allowedTransitions = Object.freeze([TorConnectState.Configuring]);
+
+ static #hasEverHappened = false;
+
+ constructor() {
+ super(TorConnectState.Error);
+ ErrorState.#hasEverHappened = true;
+ }
+
+ run(errorMessage, errorDetails) {
+ TorConnect._errorMessage = errorMessage;
+ TorConnect._errorDetails = errorDetails;
+ lazy.logger.error(
+ `Entering error state (${errorMessage}, ${errorDetails})`
+ );
+
+ Services.obs.notifyObservers(
+ { message: errorMessage, details: errorDetails },
+ TorConnectTopics.BootstrapError
+ );
+
+ this.changeState(TorConnectState.Configuring);
+ }
+
+ static get hasEverHappened() {
+ return ErrorState.#hasEverHappened;
+ }
+}
+
+class DisabledState extends StateCallback {
+ // Trap state: no way to leave the Disabled state.
+ allowedTransitions = Object.freeze([]);
+
+ constructor() {
+ super(TorConnectState.DisabledState);
+ }
+
+ async run() {
+ lazy.logger.debug("Entered the disabled state.");
+ }
+}
+
export const InternetStatus = Object.freeze({
Unknown: -1,
Offline: 0,
@@ -253,1005 +738,581 @@ export const InternetStatus = Object.freeze({
});
class InternetTest {
+ #enabled;
+ #status = InternetStatus.Unknown;
+ #error = null;
+ #pending = false;
+ #canceled = false;
+ #timeout = 0;
+
constructor() {
- this._enabled = Services.prefs.getBoolPref(
+ this.#enabled = Services.prefs.getBoolPref(
TorConnectPrefs.allow_internet_test,
true
);
-
- this._status = InternetStatus.Unknown;
- this._error = null;
- this._pending = false;
- if (this._enabled) {
- this._timeout = setTimeout(() => {
- this._timeout = null;
+ if (this.#enabled) {
+ this.#timeout = setTimeout(() => {
+ this.#timeout = 0;
this.test();
- }, this.timeoutRand());
+ }, this.#timeoutRand());
}
- this.onResult = (online, date) => {};
+ this.onResult = online => {};
this.onError = err => {};
}
- test() {
- if (this._pending || !this._enabled) {
+ /**
+ * Perform the internet test.
+ *
+ * While this is an async method, the callers are not expected to await it,
+ * as we are also using callbacks.
+ */
+ async test() {
+ if (this.#pending || !this.#enabled) {
return;
}
this.cancel();
- this._pending = true;
+ this.#pending = true;
+ this.#canceled = false;
lazy.logger.info("Starting the Internet test");
- this._testAsync()
- .then(status => {
- this._pending = false;
- this._status = status.successful
- ? InternetStatus.Online
- : InternetStatus.Offline;
- lazy.logger.info(`Performed Internet test, outcome ${this._status}`);
- this.onResult(this.status, status.date);
- })
- .catch(error => {
- this._error = error;
- this._pending = false;
- this.onError(error);
- });
- }
-
- cancel() {
- if (this._timeout !== null) {
- clearTimeout(this._timeout);
- this._timeout = null;
- }
- }
-
- async _testAsync() {
- // Callbacks for the Internet test are desirable, because we will be
- // waiting both for the bootstrap, and for the Internet test.
- // However, managing Moat with async/await is much easier as it avoids a
- // callback hell, and it makes extra explicit that we are uniniting it.
const mrpc = new lazy.MoatRPC();
- let status = null;
- let error = null;
try {
await mrpc.init();
- status = await mrpc.testInternetConnection();
+ const status = await mrpc.testInternetConnection();
+ this.#status = status.successful
+ ? InternetStatus.Online
+ : InternetStatus.Offline;
+ // TODO: We could consume the date we got from the HTTP request to detect
+ // big clock skews that might prevent a successfull bootstrap.
+ lazy.logger.info(`Performed Internet test, outcome ${this.#status}`);
} catch (err) {
lazy.logger.error("Error while checking the Internet connection", err);
- error = err;
+ this.#error = err;
+ this.#pending = false;
} finally {
mrpc.uninit();
}
- if (error !== null) {
- throw error;
+
+ if (this.#canceled) {
+ return;
+ }
+ if (this.#error) {
+ this.onError(this.#error);
+ } else {
+ this.onResult(this.#status);
+ }
+ }
+
+ cancel() {
+ this.#canceled = true;
+ if (this.#timeout) {
+ clearTimeout(this.#timeout);
+ this.#timeout = 0;
}
- return status;
}
get status() {
- return this._status;
+ return this.#status;
}
get error() {
- return this._error;
+ return this.#error;
}
get enabled() {
- return this._enabled;
+ return this.#enabled;
}
- // We randomize the Internet test timeout to make fingerprinting it harder, at least a little bit...
- timeoutRand() {
+ // We randomize the Internet test timeout to make fingerprinting it harder, at
+ // least a little bit...
+ #timeoutRand() {
const offset = 30000;
const randRange = 5000;
return offset + randRange * (Math.random() * 2 - 1);
}
}
-export const TorConnect = (() => {
- let retval = {
- _state: TorConnectState.Initial,
- _bootstrapProgress: 0,
- _bootstrapStatus: null,
- _internetStatus: InternetStatus.Unknown,
- // list of country codes Moat has settings for
- _countryCodes: [],
- _countryNames: Object.freeze(
- (() => {
- const codes = Services.intl.getAvailableLocaleDisplayNames("region");
- const names = Services.intl.getRegionDisplayNames(undefined, codes);
- let codesNames = {};
- for (let i = 0; i < codes.length; i++) {
- codesNames[codes[i]] = names[i];
- }
- return codesNames;
- })()
- ),
- _detectedLocation: "",
- _errorMessage: null,
- _errorDetails: null,
- _logHasWarningOrError: false,
- _hasEverFailed: false,
- _hasBootstrapEverFailed: false,
- _transitionPromise: null,
-
- // This is used as a helper to make the state of about:torconnect persistent
- // during a session, but TorConnect does not use this data at all.
- _uiState: {},
-
- /* These functions represent ongoing work associated with one of our states
- Some of these functions are mostly empty, apart from defining an
- on_transition function used to resolve their Promise */
- _stateCallbacks: Object.freeze(
- new Map([
- /* Initial is never transitioned to */
- [
- TorConnectState.Initial,
- new StateCallback(TorConnectState.Initial, async function () {
- // The initial state doesn't actually do anything, so here is a skeleton for other
- // states which do perform work
- await new Promise(async (resolve, reject) => {
- // This function is provided to signal to the callback that it is complete.
- // It is called as a result of _changeState and at the very least must
- // resolve the root Promise object within the StateCallback function
- // The on_transition callback may also perform necessary cleanup work
- this.on_transition = nextState => {
- resolve();
- };
-
- try {
- // each state may have a sequence of async work to do
- let asyncWork = async () => {};
- await asyncWork();
-
- // after each block we may check for an opportunity to early-out
- if (this.transitioning) {
- return;
- }
-
- // repeat the above pattern as necessary
- } catch (err) {
- // any thrown exceptions here will trigger a transition to the Error state
- TorConnect._changeState(
- TorConnectState.Error,
- err?.message,
- err?.details
- );
- }
- });
- }),
- ],
- /* Configuring */
- [
- TorConnectState.Configuring,
- new StateCallback(TorConnectState.Configuring, async function () {
- await new Promise(async (resolve, reject) => {
- this.on_transition = nextState => {
- resolve();
- };
- });
- }),
- ],
- /* Bootstrapping */
- [
- TorConnectState.Bootstrapping,
- new StateCallback(TorConnectState.Bootstrapping, async function () {
- // wait until bootstrap completes or we get an error
- await new Promise(async (resolve, reject) => {
- // debug hook to simulate censorship preventing bootstrapping
- if (
- Services.prefs.getIntPref(TorConnectPrefs.censorship_level, 0) >
- 0
- ) {
- this.on_transition = nextState => {
- resolve();
- };
- await debug_sleep(1500);
- TorConnect._hasBootstrapEverFailed = true;
- if (
- Services.prefs.getIntPref(
- TorConnectPrefs.censorship_level,
- 0
- ) === 2
- ) {
- const codes = Object.keys(TorConnect._countryNames);
- TorConnect._detectedLocation =
- codes[Math.floor(Math.random() * codes.length)];
- }
- TorConnect._changeState(
- TorConnectState.Error,
- "Bootstrap failed (for debugging purposes)",
- "Error: Censorship simulation",
- true
- );
- return;
- }
-
- const tbr = new lazy.TorBootstrapRequest();
- const internetTest = new InternetTest();
- let cancelled = false;
-
- let bootstrapError = "";
- let bootstrapErrorDetails = "";
- const maybeTransitionToError = () => {
- if (
- internetTest.status === InternetStatus.Unknown &&
- internetTest.error === null &&
- internetTest.enabled
- ) {
- // We have been called by a failed bootstrap, but the internet test has not run yet - force
- // it to run immediately!
- internetTest.test();
- // Return from this call, because the Internet test's callback will call us again
- return;
- }
- // Do not transition to the offline error until we are sure that also the bootstrap failed, in
- // case Moat is down but the bootstrap can proceed anyway.
- if (bootstrapError === "") {
- return;
- }
- if (internetTest.status === InternetStatus.Offline) {
- TorConnect._changeState(
- TorConnectState.Error,
- TorStrings.torConnect.offline,
- "",
- true
- );
- } else {
- // Give priority to the bootstrap error, in case the Internet test fails
- TorConnect._hasBootstrapEverFailed = true;
- TorConnect._changeState(
- TorConnectState.Error,
- bootstrapError,
- bootstrapErrorDetails,
- true
- );
- }
- };
-
- this.on_transition = async nextState => {
- if (nextState === TorConnectState.Configuring) {
- // stop bootstrap process if user cancelled
- cancelled = true;
- internetTest.cancel();
- await tbr.cancel();
- }
- resolve();
- };
-
- tbr.onbootstrapstatus = (progress, status) => {
- TorConnect._updateBootstrapStatus(progress, status);
- };
- tbr.onbootstrapcomplete = () => {
- internetTest.cancel();
- TorConnect._changeState(TorConnectState.Bootstrapped);
- };
- tbr.onbootstraperror = (message, details) => {
- if (cancelled) {
- // We ignore this error since it occurred after cancelling (by
- // the user). We assume the error is just a side effect of the
- // cancelling.
- // E.g. If the cancelling is triggered late in the process, we
- // get "Building circuits: Establishing a Tor circuit failed".
- // TODO: Maybe move this logic deeper in the process to know
- // when to filter out such errors triggered by cancelling.
- lazy.logger.warn(
- `Post-cancel error => ${message}; ${details}`
- );
- return;
- }
- // We have to wait for the Internet test to finish before sending the bootstrap error
- bootstrapError = message;
- bootstrapErrorDetails = details;
- maybeTransitionToError();
- };
-
- internetTest.onResult = (status, date) => {
- // TODO: Use the date to save the clock skew?
- TorConnect._internetStatus = status;
- maybeTransitionToError();
- };
- internetTest.onError = () => {
- maybeTransitionToError();
- };
-
- tbr.bootstrap();
- });
- }),
- ],
- /* AutoBootstrapping */
- [
- TorConnectState.AutoBootstrapping,
- new StateCallback(TorConnectState.AutoBootstrapping, async function (
- countryCode
- ) {
- await new Promise(async (resolve, reject) => {
- this.on_transition = nextState => {
- resolve();
- };
-
- // debug hook to simulate censorship preventing bootstrapping
- {
- const censorshipLevel = Services.prefs.getIntPref(
- TorConnectPrefs.censorship_level,
- 0
- );
- if (censorshipLevel > 1) {
- this.on_transition = nextState => {
- resolve();
- };
- // always fail even after manually selecting location specific settings
- if (censorshipLevel == 3) {
- await debug_sleep(2500);
- TorConnect._changeState(
- TorConnectState.Error,
- "Error: censorship simulation",
- "",
- true
- );
- return;
- // only fail after auto selecting, manually selecting succeeds
- } else if (censorshipLevel == 2 && !countryCode) {
- await debug_sleep(2500);
- TorConnect._changeState(
- TorConnectState.Error,
- "Error: Severe Censorship simulation",
- "",
- true
- );
- return;
- }
- }
- }
-
- const throw_error = (message, details) => {
- let err = new Error(message);
- err.details = details;
- throw err;
- };
-
- // lookup user's potential censorship circumvention settings from Moat service
- try {
- this.mrpc = new lazy.MoatRPC();
- await this.mrpc.init();
-
- if (this.transitioning) {
- return;
- }
-
- const settings = await this.mrpc.circumvention_settings(
- [...TorSettings.builtinBridgeTypes, "vanilla"],
- countryCode
- );
-
- if (this.transitioning) {
- return;
- }
-
- if (settings?.country) {
- TorConnect._detectedLocation = settings.country;
- }
- if (settings?.settings && settings.settings.length) {
- this.settings = settings.settings;
- } else {
- try {
- this.settings = await this.mrpc.circumvention_defaults([
- ...TorSettings.builtinBridgeTypes,
- "vanilla",
- ]);
- } catch (err) {
- lazy.logger.error(
- "We did not get localized settings, and default settings failed as well",
- err
- );
- }
- }
- if (this.settings === null || this.settings.length === 0) {
- // The fallback has failed as well, so throw the original error
- if (!TorConnect._detectedLocation) {
- // unable to determine country
- throw_error(
- TorStrings.torConnect.autoBootstrappingFailed,
- TorStrings.torConnect.cannotDetermineCountry
- );
- } else {
- // no settings available for country
- throw_error(
- TorStrings.torConnect.autoBootstrappingFailed,
- TorStrings.torConnect.noSettingsForCountry
- );
- }
- }
-
- const restoreOriginalSettings = async () => {
- try {
- await TorSettings.applySettings();
- } catch (e) {
- // We cannot do much if the original settings were bad or
- // if the connection closed, so just report it in the
- // console.
- lazy.logger.warn("Failed to restore original settings.", e);
- }
- };
-
- // apply each of our settings and try to bootstrap with each
- try {
- for (const [
- index,
- currentSetting,
- ] of this.settings.entries()) {
- // we want to break here so we can fall through and restore original settings
- if (this.transitioning) {
- break;
- }
-
- lazy.logger.info(
- `Attempting Bootstrap with configuration ${index + 1}/${
- this.settings.length
- }`
- );
-
- // Send the new settings directly to the provider. We will
- // save them only if the bootstrap succeeds.
- // FIXME: We should somehow signal TorSettings users that we
- // have set custom settings, and they should not apply
- // theirs until we are done with trying ours.
- // Otherwise, the new settings provided by the user while we
- // were bootstrapping could be the ones that cause the
- // bootstrap to succeed, but we overwrite them (unless we
- // backup the original settings, and then save our new
- // settings only if they have not changed).
- // Another idea (maybe easier to implement) is to disable
- // the settings UI while *any* bootstrap is going on.
- // This is also documented in tor-browser#41921.
- const provider = await lazy.TorProviderBuilder.build();
- // We need to merge with old settings, in case the user is
- // using a proxy or is behind a firewall.
- await provider.writeSettings({
- ...TorSettings.getSettings(),
- ...currentSetting,
- });
-
- // build out our bootstrap request
- const tbr = new lazy.TorBootstrapRequest();
- tbr.onbootstrapstatus = (progress, status) => {
- TorConnect._updateBootstrapStatus(progress, status);
- };
- tbr.onbootstraperror = (message, details) => {
- lazy.logger.error(
- `Auto-Bootstrap error => ${message}; ${details}`
- );
- };
-
- // update transition callback for user cancel
- this.on_transition = async nextState => {
- if (nextState === TorConnectState.Configuring) {
- await tbr.cancel();
- await restoreOriginalSettings();
- }
- resolve();
- };
-
- // begin bootstrap
- if (await tbr.bootstrap()) {
- // persist the current settings to preferences
- TorSettings.setSettings(currentSetting);
- TorSettings.saveToPrefs();
- await TorSettings.applySettings();
- TorConnect._changeState(TorConnectState.Bootstrapped);
- return;
- }
- }
-
- // Bootstrap failed for all potential settings, so restore the
- // original settings the provider.
- await restoreOriginalSettings();
-
- // Only explicitly change state here if something else has not
- // transitioned us.
- if (!this.transitioning) {
- throw_error(
- TorStrings.torConnect.autoBootstrappingFailed,
- TorStrings.torConnect.autoBootstrappingAllFailed
- );
- }
- return;
- } catch (err) {
- await restoreOriginalSettings();
- // throw to outer catch to transition us.
- throw err;
- }
- } catch (err) {
- if (this.mrpc?.inited) {
- // lookup countries which have settings available
- TorConnect._countryCodes =
- await this.mrpc.circumvention_countries();
- }
- if (!this.transitioning) {
- TorConnect._changeState(
- TorConnectState.Error,
- err?.message,
- err?.details,
- true
- );
- } else {
- lazy.logger.error(
- "Received AutoBootstrapping error after transitioning",
- err
- );
- }
- } finally {
- // important to uninit MoatRPC object or else the pt process will live as long as tor-browser
- this.mrpc?.uninit();
- }
- });
- }),
- ],
- /* Bootstrapped */
- [
- TorConnectState.Bootstrapped,
- new StateCallback(TorConnectState.Bootstrapped, async function () {
- await new Promise((resolve, reject) => {
- // We may need to leave the bootstrapped state if the tor daemon
- // exits (if it is restarted, we will have to bootstrap again).
- this.on_transition = nextState => {
- resolve();
- };
- // notify observers of bootstrap completion
- Services.obs.notifyObservers(
- null,
- TorConnectTopics.BootstrapComplete
- );
- });
- }),
- ],
- /* Error */
- [
- TorConnectState.Error,
- new StateCallback(TorConnectState.Error, async function (
- errorMessage,
- errorDetails,
- bootstrappingFailure
- ) {
- await new Promise((resolve, reject) => {
- this.on_transition = async nextState => {
- resolve();
- };
-
- TorConnect._errorMessage = errorMessage;
- TorConnect._errorDetails = errorDetails;
- lazy.logger.error(
- `Entering error state (${errorMessage}, ${errorDetails})`
- );
-
- Services.obs.notifyObservers(
- { message: errorMessage, details: errorDetails },
- TorConnectTopics.BootstrapError
- );
-
- TorConnect._changeState(TorConnectState.Configuring);
- });
- }),
- ],
- /* Disabled */
- [
- TorConnectState.Disabled,
- new StateCallback(TorConnectState.Disabled, async function () {
- await new Promise((resolve, reject) => {
- // no-op, on_transition not defined because no way to leave Disabled state
- });
- }),
- ],
- ])
- ),
-
- _callback(state) {
- return this._stateCallbacks.get(state);
- },
-
- _changeState(newState, ...args) {
- if (newState === TorConnectState.Error) {
- this._hasEverFailed = true;
+export const TorConnect = {
+ _stateHandler: new InitialState(),
+ _bootstrapProgress: 0,
+ _bootstrapStatus: null,
+ _internetStatus: InternetStatus.Unknown,
+ // list of country codes Moat has settings for
+ _countryCodes: [],
+ _countryNames: Object.freeze(
+ (() => {
+ const codes = Services.intl.getAvailableLocaleDisplayNames("region");
+ const names = Services.intl.getRegionDisplayNames(undefined, codes);
+ let codesNames = {};
+ for (let i = 0; i < codes.length; i++) {
+ codesNames[codes[i]] = names[i];
}
- const prevState = this._state;
+ return codesNames;
+ })()
+ ),
+ _detectedLocation: "",
+ _errorMessage: null,
+ _errorDetails: null,
+ _logHasWarningOrError: false,
+ _hasBootstrapEverFailed: false,
+ _transitionPromise: null,
+
+ // This is used as a helper to make the state of about:torconnect persistent
+ // during a session, but TorConnect does not use this data at all.
+ _uiState: {},
+
+ _stateCallbacks: Object.freeze(
+ new Map([
+ // Initial is never transitioned to
+ [TorConnectState.Initial, InitialState],
+ [TorConnectState.Configuring, ConfiguringState],
+ [TorConnectState.Bootstrapping, BootstrappingState],
+ [TorConnectState.AutoBootstrapping, AutoBootstrappingState],
+ [TorConnectState.Bootstrapped, BootstrappedState],
+ [TorConnectState.Error, ErrorState],
+ [TorConnectState.Disabled, DisabledState],
+ ])
+ ),
+
+ _makeState(state) {
+ const klass = this._stateCallbacks.get(state);
+ if (!klass) {
+ throw new Error(`${state} is not a valid state.`);
+ }
+ return new klass();
+ },
+
+ async _changeState(newState, ...args) {
+ if (this._stateHandler.transitioning) {
+ // Avoid an exception to prevent it to be propagated to the original
+ // begin call.
+ lazy.logger.warn("Already transitioning");
+ return;
+ }
+ const prevState = this._stateHandler;
+
+ // ensure this is a valid state transition
+ if (!prevState.allowedTransitions.includes(newState)) {
+ throw Error(
+ `TorConnect: Attempted invalid state transition from ${prevState.state} to ${newState}`
+ );
+ }
- // ensure this is a valid state transition
- if (!TorConnectStateTransitions.get(prevState)?.includes(newState)) {
- throw Error(
- `TorConnect: Attempted invalid state transition from ${prevState} to ${newState}`
+ lazy.logger.trace(
+ `Try transitioning from ${prevState.state} to ${newState}`,
+ args
+ );
+ try {
+ await prevState.end(newState);
+ } catch (e) {
+ // We take for granted that the begin of this state will call us again,
+ // to request the transition to the error state.
+ if (newState !== TorConnectState.Error) {
+ lazy.logger.debug(
+ `Refusing the transition from ${prevState.state} to ${newState} because the previous state threw.`
);
+ return;
}
+ }
- lazy.logger.trace(`Try transitioning from ${prevState} to ${newState}`);
-
- // set our new state first so that state transitions can themselves trigger
- // a state transition
- this._state = newState;
-
- // call our state function and forward any args
- this._callback(prevState).transition(newState, ...args);
- },
+ // Set our new state first so that state transitions can themselves
+ // trigger a state transition.
+ this._stateHandler = this._makeState(newState);
+ Services.obs.notifyObservers(
+ { state: newState },
+ TorConnectTopics.StateChange
+ );
+ this._stateHandler.begin(...args);
+ },
- _updateBootstrapStatus(progress, status) {
- this._bootstrapProgress = progress;
- this._bootstrapStatus = status;
+ _updateBootstrapStatus(progress, status) {
+ this._bootstrapProgress = progress;
+ this._bootstrapStatus = status;
- lazy.logger.info(
- `Bootstrapping ${this._bootstrapProgress}% complete (${this._bootstrapStatus})`
- );
- Services.obs.notifyObservers(
- {
- progress: TorConnect._bootstrapProgress,
- status: TorConnect._bootstrapStatus,
- hasWarnings: TorConnect._logHasWarningOrError,
- },
- TorConnectTopics.BootstrapProgress
- );
- },
+ lazy.logger.info(
+ `Bootstrapping ${this._bootstrapProgress}% complete (${this._bootstrapStatus})`
+ );
+ Services.obs.notifyObservers(
+ {
+ progress: TorConnect._bootstrapProgress,
+ status: TorConnect._bootstrapStatus,
+ hasWarnings: TorConnect._logHasWarningOrError,
+ },
+ TorConnectTopics.BootstrapProgress
+ );
+ },
+
+ // init should be called by TorStartupService
+ init() {
+ lazy.logger.debug("TorConnect.init()");
+ this._stateHandler.begin();
+
+ if (!this.enabled) {
+ // Disabled
+ this._changeState(TorConnectState.Disabled);
+ } else {
+ let observeTopic = addTopic => {
+ Services.obs.addObserver(this, addTopic);
+ lazy.logger.debug(`Observing topic '${addTopic}'`);
+ };
+
+ // Wait for TorSettings, as we will need it.
+ // We will wait for a TorProvider only after TorSettings is ready,
+ // because the TorProviderBuilder initialization might not have finished
+ // at this point, and TorSettings initialization is a prerequisite for
+ // having a provider.
+ // So, we prefer initializing TorConnect as soon as possible, so that
+ // the UI will be able to detect it is in the Initializing state and act
+ // consequently.
+ TorSettings.initializedPromise.then(() => this._settingsInitialized());
+
+ // register the Tor topics we always care about
+ observeTopic(TorTopics.ProcessExited);
+ observeTopic(TorTopics.LogHasWarnOrErr);
+ }
+ },
- // init should be called by TorStartupService
- init() {
- lazy.logger.debug("TorConnect.init()");
- this._callback(TorConnectState.Initial).begin();
+ async observe(subject, topic, data) {
+ lazy.logger.debug(`Observed ${topic}`);
- if (!this.enabled) {
- // Disabled
- this._changeState(TorConnectState.Disabled);
- } else {
- let observeTopic = addTopic => {
- Services.obs.addObserver(this, addTopic);
- lazy.logger.debug(`Observing topic '${addTopic}'`);
- };
-
- // Wait for TorSettings, as we will need it.
- // We will wait for a TorProvider only after TorSettings is ready,
- // because the TorProviderBuilder initialization might not have finished
- // at this point, and TorSettings initialization is a prerequisite for
- // having a provider.
- // So, we prefer initializing TorConnect as soon as possible, so that
- // the UI will be able to detect it is in the Initializing state and act
- // consequently.
- TorSettings.initializedPromise.then(() => this._settingsInitialized());
-
- // register the Tor topics we always care about
- observeTopic(TorTopics.ProcessExited);
- observeTopic(TorTopics.LogHasWarnOrErr);
+ switch (topic) {
+ case TorTopics.LogHasWarnOrErr: {
+ this._logHasWarningOrError = true;
+ break;
}
- },
-
- async observe(subject, topic, data) {
- lazy.logger.debug(`Observed ${topic}`);
-
- switch (topic) {
- case TorTopics.LogHasWarnOrErr: {
- this._logHasWarningOrError = true;
- break;
+ case TorTopics.ProcessExited: {
+ // Treat a failure as a possibly broken configuration.
+ // So, prevent quickstart at the next start.
+ Services.prefs.setBoolPref(TorLauncherPrefs.prompt_at_startup, true);
+ switch (this.state) {
+ case TorConnectState.Bootstrapping:
+ case TorConnectState.AutoBootstrapping:
+ case TorConnectState.Bootstrapped:
+ // If we are in the bootstrap or auto bootstrap, we could go
+ // through the error phase (and eventually we might do it, if some
+ // transition calls fail). However, this would start the
+ // connection assist, so we go directly to configuring.
+ // FIXME: Find a better way to handle this.
+ this._changeState(TorConnectState.Configuring);
+ break;
+ // Other states naturally resolve in configuration.
}
- case TorTopics.ProcessExited: {
- // Treat a failure as a possibly broken configuration.
- // So, prevent quickstart at the next start.
- Services.prefs.setBoolPref(TorLauncherPrefs.prompt_at_startup, true);
- switch (this._state) {
- case TorConnectState.Bootstrapping:
- case TorConnectState.AutoBootstrapping:
- case TorConnectState.Bootstrapped:
- // If we are in the bootstrap or auto bootstrap, we could go
- // through the error phase (and eventually we might do it, if some
- // transition calls fail). However, this would start the
- // connection assist, so we go directly to configuring.
- // FIXME: Find a better way to handle this.
- this._changeState(TorConnectState.Configuring);
- break;
- // Other states naturally resolve in configuration.
- }
- break;
- }
- default:
- // ignore
- break;
- }
- },
-
- async _settingsInitialized() {
- // TODO: Handle failures here, instead of the prompt to restart the
- // daemon when it exits (tor-browser#21053, tor-browser#41921).
- await lazy.TorProviderBuilder.build();
-
- // tor-browser#41907: This is only a workaround to avoid users being
- // bounced back to the initial panel without any explanation.
- // Longer term we should disable the clickable elements, or find a UX
- // to prevent this from happening (e.g., allow buttons to be clicked,
- // but show an intermediate starting state, or a message that tor is
- // starting while the butons are disabled, etc...).
- // See also tor-browser#41921.
- if (this.state !== TorConnectState.Initial) {
- lazy.logger.warn(
- "The TorProvider was built after the state had already changed."
- );
- return;
- }
- lazy.logger.debug("The TorProvider is ready, changing state.");
- if (this.shouldQuickStart) {
- // Quickstart
- this._changeState(TorConnectState.Bootstrapping);
- } else {
- // Configuring
- this._changeState(TorConnectState.Configuring);
+ break;
}
- },
-
- /*
- Various getters
- */
-
- /**
- * Whether TorConnect is enabled.
- *
- * @type {boolean}
- */
- get enabled() {
- // FIXME: This is called before the TorProvider is ready.
- // As a matter of fact, at the moment it is equivalent to the following
- // line, but this might become a problem in the future.
- return TorLauncherUtil.shouldStartAndOwnTor;
- },
-
- get shouldShowTorConnect() {
- // TorBrowser must control the daemon
- return (
- this.enabled &&
- // if we have succesfully bootstraped, then no need to show TorConnect
- this.state !== TorConnectState.Bootstrapped
- );
- },
-
- /**
- * Whether bootstrapping can currently begin.
- *
- * The value may change with TorConnectTopics.StateChanged.
- *
- * @param {boolean}
- */
- get canBeginBootstrap() {
- return TorConnectStateTransitions.get(this.state).includes(
- TorConnectState.Bootstrapping
- );
- },
-
- /**
- * Whether auto-bootstrapping can currently begin.
- *
- * The value may change with TorConnectTopics.StateChanged.
- *
- * @param {boolean}
- */
- get canBeginAutoBootstrap() {
- return TorConnectStateTransitions.get(this.state).includes(
- TorConnectState.AutoBootstrapping
- );
- },
-
- get shouldQuickStart() {
- // quickstart must be enabled
- return (
- TorSettings.quickstart.enabled &&
- // and the previous bootstrap attempt must have succeeded
- !Services.prefs.getBoolPref(TorLauncherPrefs.prompt_at_startup, true)
+ default:
+ // ignore
+ break;
+ }
+ },
+
+ async _settingsInitialized() {
+ // TODO: Handle failures here, instead of the prompt to restart the
+ // daemon when it exits (tor-browser#21053, tor-browser#41921).
+ await lazy.TorProviderBuilder.build();
+
+ // tor-browser#41907: This is only a workaround to avoid users being
+ // bounced back to the initial panel without any explanation.
+ // Longer term we should disable the clickable elements, or find a UX
+ // to prevent this from happening (e.g., allow buttons to be clicked,
+ // but show an intermediate starting state, or a message that tor is
+ // starting while the butons are disabled, etc...).
+ // Notice that currently the initial state does not do anything.
+ // Instead of just waiting, we could move this code in its callback.
+ // See also tor-browser#41921.
+ if (this.state !== TorConnectState.Initial) {
+ lazy.logger.warn(
+ "The TorProvider was built after the state had already changed."
);
- },
-
- get state() {
- return this._state;
- },
-
- get bootstrapProgress() {
- return this._bootstrapProgress;
- },
+ return;
+ }
+ lazy.logger.debug("The TorProvider is ready, changing state.");
+ if (this.shouldQuickStart) {
+ // Quickstart
+ this._changeState(TorConnectState.Bootstrapping);
+ } else {
+ // Configuring
+ this._changeState(TorConnectState.Configuring);
+ }
+ },
- get bootstrapStatus() {
- return this._bootstrapStatus;
- },
+ /*
+ Various getters
+ */
- get internetStatus() {
- return this._internetStatus;
- },
+ /**
+ * Whether TorConnect is enabled.
+ *
+ * @type {boolean}
+ */
+ get enabled() {
+ // FIXME: This is called before the TorProvider is ready.
+ // As a matter of fact, at the moment it is equivalent to the following
+ // line, but this might become a problem in the future.
+ return TorLauncherUtil.shouldStartAndOwnTor;
+ },
+
+ get shouldShowTorConnect() {
+ // TorBrowser must control the daemon
+ return (
+ this.enabled &&
+ // if we have succesfully bootstraped, then no need to show TorConnect
+ this.state !== TorConnectState.Bootstrapped
+ );
+ },
+
+ /**
+ * Whether bootstrapping can currently begin.
+ *
+ * The value may change with TorConnectTopics.StateChanged.
+ *
+ * @param {boolean}
+ */
+ get canBeginBootstrap() {
+ return this._stateHandler.allowedTransitions.includes(
+ TorConnectState.Bootstrapping
+ );
+ },
+
+ /**
+ * Whether auto-bootstrapping can currently begin.
+ *
+ * The value may change with TorConnectTopics.StateChanged.
+ *
+ * @param {boolean}
+ */
+ get canBeginAutoBootstrap() {
+ return this._stateHandler.allowedTransitions.includes(
+ TorConnectState.AutoBootstrapping
+ );
+ },
+
+ get shouldQuickStart() {
+ // quickstart must be enabled
+ return (
+ TorSettings.quickstart.enabled &&
+ // and the previous bootstrap attempt must have succeeded
+ !Services.prefs.getBoolPref(TorLauncherPrefs.prompt_at_startup, true)
+ );
+ },
+
+ get state() {
+ return this._stateHandler.state;
+ },
+
+ get bootstrapProgress() {
+ return this._bootstrapProgress;
+ },
+
+ get bootstrapStatus() {
+ return this._bootstrapStatus;
+ },
+
+ get internetStatus() {
+ return this._internetStatus;
+ },
+
+ get countryCodes() {
+ return this._countryCodes;
+ },
+
+ get countryNames() {
+ return this._countryNames;
+ },
+
+ get detectedLocation() {
+ return this._detectedLocation;
+ },
+
+ get errorMessage() {
+ return this._errorMessage;
+ },
+
+ get errorDetails() {
+ return this._errorDetails;
+ },
+
+ get logHasWarningOrError() {
+ return this._logHasWarningOrError;
+ },
+
+ /**
+ * Whether we have ever entered the Error state.
+ *
+ * @type {boolean}
+ */
+ get hasEverFailed() {
+ return ErrorState.hasEverHappened;
+ },
+
+ /**
+ * Whether the Bootstrapping process has ever failed, not including when it
+ * failed due to not being connected to the internet.
+ *
+ * This does not include a failure in AutoBootstrapping.
+ *
+ * @type {boolean}
+ */
+ get potentiallyBlocked() {
+ return this._hasBootstrapEverFailed;
+ },
+
+ get uiState() {
+ return this._uiState;
+ },
+ set uiState(newState) {
+ this._uiState = newState;
+ },
+
+ /*
+ These functions allow external consumers to tell TorConnect to transition states
+ */
+
+ beginBootstrap() {
+ lazy.logger.debug("TorConnect.beginBootstrap()");
+ this._changeState(TorConnectState.Bootstrapping);
+ },
+
+ cancelBootstrap() {
+ lazy.logger.debug("TorConnect.cancelBootstrap()");
+ if (
+ this.state !== TorConnectState.AutoBootstrapping &&
+ this.state !== TorConnectState.Bootstrapping
+ ) {
+ lazy.logger.warn(
+ `Cannot cancel bootstrapping in the ${this.state} state`
+ );
+ return;
+ }
+ this._changeState(TorConnectState.Configuring);
+ },
+
+ beginAutoBootstrap(countryCode) {
+ lazy.logger.debug("TorConnect.beginAutoBootstrap()");
+ this._changeState(TorConnectState.AutoBootstrapping, countryCode);
+ },
+
+ /*
+ Further external commands and helper methods
+ */
+ openTorPreferences() {
+ if (TorLauncherUtil.isAndroid) {
+ lazy.EventDispatcher.instance.sendRequest({
+ type: "GeckoView:Tor:OpenSettings",
+ });
+ return;
+ }
+ const win = lazy.BrowserWindowTracker.getTopWindow();
+ win.switchToTabHavingURI("about:preferences#connection", true);
+ },
+
+ /**
+ * Open the "about:torconnect" tab.
+ *
+ * Bootstrapping or AutoBootstrapping can also be automatically triggered at
+ * the same time, if the current state allows for it.
+ *
+ * Bootstrapping will not be triggered if the connection is
+ * potentially blocked.
+ *
+ * @param {object} [options] - extra options.
+ * @property {boolean} [options.beginBootstrap=false] - Whether to try and
+ * begin Bootstrapping.
+ * @property {string} [options.beginAutoBootstrap] - The location to use to
+ * begin AutoBootstrapping, if possible.
+ */
+ openTorConnect(options) {
+ const win = lazy.BrowserWindowTracker.getTopWindow();
+ win.switchToTabHavingURI("about:torconnect", true, {
+ ignoreQueryString: true,
+ });
+ if (
+ options?.beginBootstrap &&
+ this.canBeginBootstrap &&
+ !this.potentiallyBlocked
+ ) {
+ this.beginBootstrap();
+ }
+ // options.beginAutoBootstrap can be an empty string.
+ if (
+ options?.beginAutoBootstrap !== undefined &&
+ this.canBeginAutoBootstrap
+ ) {
+ this.beginAutoBootstrap(options.beginAutoBootstrap);
+ }
+ },
- get countryCodes() {
- return this._countryCodes;
- },
-
- get countryNames() {
- return this._countryNames;
- },
-
- get detectedLocation() {
- return this._detectedLocation;
- },
-
- get errorMessage() {
- return this._errorMessage;
- },
-
- get errorDetails() {
- return this._errorDetails;
- },
-
- get logHasWarningOrError() {
- return this._logHasWarningOrError;
- },
-
- /**
- * Whether we have ever entered the Error state.
- *
- * @type {boolean}
- */
- get hasEverFailed() {
- return this._hasEverFailed;
- },
-
- /**
- * Whether the Bootstrapping process has ever failed, not including when it
- * failed due to not being connected to the internet.
- *
- * This does not include a failure in AutoBootstrapping.
- *
- * @type {boolean}
- */
- get potentiallyBlocked() {
- return this._hasBootstrapEverFailed;
- },
-
- get uiState() {
- return this._uiState;
- },
- set uiState(newState) {
- this._uiState = newState;
- },
-
- /*
- These functions allow external consumers to tell TorConnect to transition states
- */
-
- beginBootstrap() {
- lazy.logger.debug("TorConnect.beginBootstrap()");
- this._changeState(TorConnectState.Bootstrapping);
- },
+ viewTorLogs() {
+ const win = lazy.BrowserWindowTracker.getTopWindow();
+ win.switchToTabHavingURI("about:preferences#connection-viewlogs", true);
+ },
- cancelBootstrap() {
- lazy.logger.debug("TorConnect.cancelBootstrap()");
- this._changeState(TorConnectState.Configuring);
- },
-
- beginAutoBootstrap(countryCode) {
- lazy.logger.debug("TorConnect.beginAutoBootstrap()");
- this._changeState(TorConnectState.AutoBootstrapping, countryCode);
- },
-
- /*
- Further external commands and helper methods
- */
- openTorPreferences() {
- if (TorLauncherUtil.isAndroid) {
- lazy.EventDispatcher.instance.sendRequest({
- type: "GeckoView:Tor:OpenSettings",
- });
- return;
- }
- const win = lazy.BrowserWindowTracker.getTopWindow();
- win.switchToTabHavingURI("about:preferences#connection", true);
- },
-
- /**
- * Open the "about:torconnect" tab.
- *
- * Bootstrapping or AutoBootstrapping can also be automatically triggered at
- * the same time, if the current state allows for it.
- *
- * Bootstrapping will not be triggered if the connection is
- * potentially blocked.
- *
- * @param {object} [options] - extra options.
- * @property {boolean} [options.beginBootstrap=false] - Whether to try and
- * begin Bootstrapping.
- * @property {string} [options.beginAutoBootstrap] - The location to use to
- * begin AutoBootstrapping, if possible.
- */
- openTorConnect(options) {
- const win = lazy.BrowserWindowTracker.getTopWindow();
- win.switchToTabHavingURI("about:torconnect", true, {
- ignoreQueryString: true,
- });
- if (
- options?.beginBootstrap &&
- this.canBeginBootstrap &&
- !this.potentiallyBlocked
- ) {
- this.beginBootstrap();
- }
- // options.beginAutoBootstrap can be an empty string.
- if (
- options?.beginAutoBootstrap !== undefined &&
- this.canBeginAutoBootstrap
- ) {
- this.beginAutoBootstrap(options.beginAutoBootstrap);
- }
- },
-
- viewTorLogs() {
- const win = lazy.BrowserWindowTracker.getTopWindow();
- win.switchToTabHavingURI("about:preferences#connection-viewlogs", true);
- },
-
- async getCountryCodes() {
- // Difference with the getter: this is to be called by TorConnectParent, and downloads
- // the country codes if they are not already in cache.
- if (this._countryCodes.length) {
- return this._countryCodes;
- }
- const mrpc = new lazy.MoatRPC();
- try {
- await mrpc.init();
- this._countryCodes = await mrpc.circumvention_countries();
- } catch (err) {
- lazy.logger.error(
- "An error occurred while fetching country codes",
- err
- );
- } finally {
- mrpc.uninit();
- }
+ async getCountryCodes() {
+ // Difference with the getter: this is to be called by TorConnectParent, and
+ // downloads the country codes if they are not already in cache.
+ if (this._countryCodes.length) {
return this._countryCodes;
- },
-
- getRedirectURL(url) {
- return `about:torconnect?redirect=${encodeURIComponent(url)}`;
- },
-
- /**
- * Convert the given object into a list of valid URIs.
- *
- * The object is either from the user's homepage preference (which may
- * contain multiple domains separated by "|") or uris passed to the browser
- * via command-line.
- *
- * @param {string|string[]} uriVariant - The string to extract uris from.
- *
- * @return {string[]} - The array of uris found.
- */
- fixupURIs(uriVariant) {
- let uriArray;
- if (typeof uriVariant === "string") {
- uriArray = uriVariant.split("|");
- } else if (
- Array.isArray(uriVariant) &&
- uriVariant.every(entry => typeof entry === "string")
- ) {
- uriArray = uriVariant;
- } else {
- // about:tor as safe fallback
- lazy.logger.error(
- `Received unknown variant '${JSON.stringify(uriVariant)}'`
- );
- uriArray = ["about:tor"];
- }
-
- // Attempt to convert user-supplied string to a uri, fallback to
- // about:tor if cannot convert to valid uri object
- return uriArray.map(
- uriString =>
- Services.uriFixup.getFixupURIInfo(
- uriString,
- Ci.nsIURIFixup.FIXUP_FLAG_NONE
- ).preferredURI?.spec ?? "about:tor"
+ }
+ const mrpc = new lazy.MoatRPC();
+ try {
+ await mrpc.init();
+ this._countryCodes = await mrpc.circumvention_countries();
+ } catch (err) {
+ lazy.logger.error("An error occurred while fetching country codes", err);
+ } finally {
+ mrpc.uninit();
+ }
+ return this._countryCodes;
+ },
+
+ getRedirectURL(url) {
+ return `about:torconnect?redirect=${encodeURIComponent(url)}`;
+ },
+
+ /**
+ * Convert the given object into a list of valid URIs.
+ *
+ * The object is either from the user's homepage preference (which may
+ * contain multiple domains separated by "|") or uris passed to the browser
+ * via command-line.
+ *
+ * @param {string|string[]} uriVariant - The string to extract uris from.
+ *
+ * @return {string[]} - The array of uris found.
+ */
+ fixupURIs(uriVariant) {
+ let uriArray;
+ if (typeof uriVariant === "string") {
+ uriArray = uriVariant.split("|");
+ } else if (
+ Array.isArray(uriVariant) &&
+ uriVariant.every(entry => typeof entry === "string")
+ ) {
+ uriArray = uriVariant;
+ } else {
+ // about:tor as safe fallback
+ lazy.logger.error(
+ `Received unknown variant '${JSON.stringify(uriVariant)}'`
);
- },
-
- // called from browser.js on browser startup, passed in either the user's homepage(s)
- // or uris passed via command-line; we want to replace them with about:torconnect uris
- // which redirect after bootstrapping
- getURIsToLoad(uriVariant) {
- const uris = this.fixupURIs(uriVariant);
- lazy.logger.debug(`Will load after bootstrap => [${uris.join(", ")}]`);
- return uris.map(uri => this.getRedirectURL(uri));
- },
- };
- return retval;
-})(); /* TorConnect */
+ uriArray = ["about:tor"];
+ }
+
+ // Attempt to convert user-supplied string to a uri, fallback to
+ // about:tor if cannot convert to valid uri object
+ return uriArray.map(
+ uriString =>
+ Services.uriFixup.getFixupURIInfo(
+ uriString,
+ Ci.nsIURIFixup.FIXUP_FLAG_NONE
+ ).preferredURI?.spec ?? "about:tor"
+ );
+ },
+
+ // called from browser.js on browser startup, passed in either the user's homepage(s)
+ // or uris passed via command-line; we want to replace them with about:torconnect uris
+ // which redirect after bootstrapping
+ getURIsToLoad(uriVariant) {
+ const uris = this.fixupURIs(uriVariant);
+ lazy.logger.debug(`Will load after bootstrap => [${uris.join(", ")}]`);
+ return uris.map(uri => this.getRedirectURL(uri));
+ },
+};
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/522337…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/522337…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/rbm][main] Bug 40075: Create destination directory when creating input_files with `content`
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch main at The Tor Project / Applications / RBM
Commits:
05e32169 by Nicolas Vigier at 2024-03-18T13:52:40+01:00
Bug 40075: Create destination directory when creating input_files with `content`
- - - - -
1 changed file:
- lib/RBM.pm
Changes:
=====================================
lib/RBM.pm
=====================================
@@ -1001,6 +1001,8 @@ sub input_files {
my $file_gpg_id = gpg_id($t->('file_gpg_id'));
if (input_file_need_dl($input_file, $t, $fname, $action)) {
if ($t->('content')) {
+ my $dname = dirname("$proj_out_dir/$name");
+ make_path($dname) unless -d $dname;
path("$proj_out_dir/$name")->spew_utf8($t->('content'));
} elsif ($t->('URL')) {
urlget($project, {%$options, %$input_file, filename => $name}, 1);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/rbm/-/commit/05e32169dfad9f3…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/rbm/-/commit/05e32169dfad9f3…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.0.12-build2
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed new tag tbb-13.0.12-build2 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/tbb…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41084: Prepare Tor Browser 13.0.12 Part 3
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
bbafe0a0 by Richard Pospesel at 2024-03-19T00:49:01+00:00
Bug 41084: Prepare Tor Browser 13.0.12 Part 3
- - - - -
1 changed file:
- rbm.conf
Changes:
=====================================
rbm.conf
=====================================
@@ -74,7 +74,7 @@ buildconf:
var:
torbrowser_version: '13.0.12'
- torbrowser_build: 'build1'
+ torbrowser_build: 'build2'
torbrowser_incremental_from:
- '[% IF c("var/tor-browser") %]13.0.11[% END %]'
- '13.0.10'
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41084: Prepare Tor Browser 13.0.12 Part 2
by richard (@richard) 19 Mar '24
by richard (@richard) 19 Mar '24
19 Mar '24
richard pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
c92c6b96 by Richard Pospesel at 2024-03-18T22:54:21+00:00
Bug 41084: Prepare Tor Browser 13.0.12 Part 2
- - - - -
4 changed files:
- projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
- projects/firefox/config
- projects/geckoview/config
- projects/translation/config
Changes:
=====================================
projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
=====================================
@@ -1,17 +1,19 @@
Tor Browser 13.0.12 - March 19 2024
* All Platforms
+ * Updated Snowflake to 2.9.2
* Bug 42376: The placeholder of datetime inputs keeps being localized when spoof English is on [tor-browser]
* Bug 42378: spoof english + htmlform <details> can leak app language [tor-browser]
* Bug 42444: Remove the "Prioritize .onion sites when known" option [tor-browser]
* Bug 42448: Rebase Tor Browser stable onto Firefox 115.9.0esr [tor-browser]
* Bug 42459: Add startpage onion service to list of search providers [tor-browser]
+ * Bug 41105: Bump version of snowflake to v2.9.2 [tor-browser-build]
* Windows + macOS + Linux
* Updated Firefox to 115.9.0esr
+ * Windows
+ * Bug 42377: Hidden fonts are automatically added to the allow list [tor-browser]
* Android
* Updated GeckoView to 115.9.0esr
* Bug 42407: TTP-03-010 WP3: Potential phishing [tor-browser]
- * Windows
- * Bug 42377: Hidden fonts are automatically added to the allow list [tor-browser]
* Build System
* All Platforms
* Updated Go to 1.21.8
=====================================
projects/firefox/config
=====================================
@@ -18,7 +18,9 @@ var:
firefox_version: '[% c("var/firefox_platform_version") %]esr'
browser_series: '13.0'
browser_branch: '[% c("var/browser_series") %]-1'
- browser_build: 2
+ # update the mullvadbrowser specific override for 115.10.0
+ # torbrowser had an extra firefox build tag
+ browser_build: 3
branding_directory_prefix: 'tb'
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]'
@@ -102,6 +104,7 @@ targets:
mullvadbrowser:
git_url: https://gitlab.torproject.org/tpo/applications/mullvad-browser.git
var:
+ browser_build: 2
branding_directory_prefix: 'mb'
gitlab_project: https://gitlab.torproject.org/tpo/applications/mullvad-browser
updater_url: 'https://cdn.mullvad.net/browser/update_responses/update_1/'
=====================================
projects/geckoview/config
=====================================
@@ -16,7 +16,7 @@ container:
var:
geckoview_version: 115.9.0esr
browser_branch: 13.0-1
- browser_build: 2
+ browser_build: 3
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
git_commit: '[% exec("git rev-parse HEAD") %]'
=====================================
projects/translation/config
=====================================
@@ -12,13 +12,13 @@ compress_tar: 'gz'
steps:
base-browser:
base-browser: '[% INCLUDE build %]'
- git_hash: 595dcd5efe752cddc1b6ba47082ad9f5f4917fee
+ git_hash: a4d224e82808529e135259e04fb58fb39b90da2d
targets:
nightly:
git_hash: 'base-browser'
tor-browser:
tor-browser: '[% INCLUDE build %]'
- git_hash: 9b6914a85be61ad6975e8bf483d4484d39bf5f7a
+ git_hash: e7aabc54138211e23bc60af1abe492c8bc68ce4b
targets:
nightly:
git_hash: 'tor-browser'
@@ -32,7 +32,7 @@ steps:
fenix: '[% INCLUDE build %]'
# We need to bump the commit before releasing but just pointing to a branch
# might cause too much rebuidling of the Firefox part.
- git_hash: 7374fbc72d2c37a4d5354447dec3b5c543fd0380
+ git_hash: ef6bef5e373108c4e633998b517e4bc8c297770a
compress_tar: 'zst'
targets:
nightly:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 4 commits: fixup! Bug 2176: Rebrand Firefox to TorBrowser
by richard (@richard) 18 Mar '24
by richard (@richard) 18 Mar '24
18 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
ce6c08c3 by Henry Wilkes at 2024-03-14T17:44:43+00:00
fixup! Bug 2176: Rebrand Firefox to TorBrowser
Bug 42203: Migrate about dialog strings to Fluent.
- - - - -
ef8821c9 by Henry Wilkes at 2024-03-14T17:44:44+00:00
fixup! Add TorStrings module for localization
Bug 42203: Migrate about dialog strings to Fluent.
- - - - -
eb190fbe by Henry Wilkes at 2024-03-14T17:45:50+00:00
fixup! Tor Browser strings
Bug 42203: Migrate about dialog strings to Fluent.
Also renew the trademark description:
+ Use double-quotes rather than ASCII single quotes.
+ Capitalize "The" and include it as part of the trademark name and the
corporation name.
+ Add a note to translators to not translate the trademark names. The
previous translations often translated "Onion Logo" even though it is
a trademark name.
- - - - -
52233769 by Henry Wilkes at 2024-03-14T17:45:57+00:00
fixup! Tor Browser localization migration scripts.
Bug 42203: Migrate about dialog strings to Fluent.
We do not migrate the trademark description since the en-US string
changed.
- - - - -
5 changed files:
- browser/base/content/aboutDialog.xhtml
- browser/base/content/browser-doctype.inc
- browser/locales/en-US/browser/tor-browser.ftl
- − toolkit/torbutton/chrome/locale/en-US/aboutDialog.dtd
- + tools/torbrowser/l10n/migrations/bug-42203-about-dialog.py
Changes:
=====================================
browser/base/content/aboutDialog.xhtml
=====================================
@@ -9,11 +9,6 @@
<?xml-stylesheet href="chrome://branding/content/aboutDialog.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/aboutDialogTor.css" type="text/css"?>
-<!-- We need to include the localization DTDs until we migrate to Fluent -->
-<!DOCTYPE window [
-#include browser-doctype.inc
-]>
-
<window xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
id="aboutDialog"
@@ -37,6 +32,7 @@
<html:link rel="localization" href="branding/brand.ftl"/>
<html:link rel="localization" href="browser/aboutDialog.ftl"/>
<html:link rel="localization" href="browser/base-browser.ftl"/>
+ <html:link rel="localization" href="browser/tor-browser.ftl"/>
</linkset>
<html:div id="aboutDialogContainer">
@@ -135,35 +131,26 @@
</description>
</vbox>
<!-- Keep communityDesc and contributeDesc to avoid JS errors trying to hide them -->
- <description class="text-blurb" id="communityDesc" data-l10n-id="community-2" hidden="true"></description>
- <description class="text-blurb" id="contributeDesc" data-l10n-id="helpus" hidden="true"></description>
- <description class="text-blurb" id="projectDesc">
- &project.start;
- <label is="text-link" href="https://www.torproject.org/">
- &project.tpoLink;
- </label>&project.end;
+ <description class="text-blurb" id="communityDesc" hidden="true"></description>
+ <description class="text-blurb" id="contributeDesc" hidden="true"></description>
+ <description class="text-blurb" id="projectDesc" data-l10n-id="about-dialog-tor-project">
+ <label is="text-link" href="https://www.torproject.org/" data-l10n-name="project-link"></label>
</description>
- <description class="text-blurb" id="helpDesc">
- &help.start;
- <label is="text-link" href="https://donate.torproject.org/">
- &help.donateLink;
- </label>
- &help.or;
- <label is="text-link" href="https://community.torproject.org/">
- &help.getInvolvedLink;
- </label>&help.end;
+ <description class="text-blurb" id="helpDesc" data-l10n-id="about-dialog-help-out">
+ <label is="text-link" href="https://donate.torproject.org/" data-l10n-name="donate-link"></label>
+ <label is="text-link" href="https://community.torproject.org/" data-l10n-name="community-link"></label>
</description>
</vbox>
</vbox>
</hbox>
<vbox id="bottomBox">
<hbox id="newBottom" pack="center" position="1">
- <label is="text-link" class="bottom-link" href="https://support.torproject.org/">&bottomLinks.questions;</label>
- <label is="text-link" class="bottom-link" href="https://community.torproject.org/relay/">&bottomLinks.grow;</label>
- <label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license">&bottomLinks.license;</label>
+ <label is="text-link" class="bottom-link" href="https://support.torproject.org/" data-l10n-id="about-dialog-questions-link"></label>
+ <label is="text-link" class="bottom-link" href="https://community.torproject.org/relay/" data-l10n-id="about-dialog-grow-tor-network-link"></label>
+ <label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license" data-l10n-id="about-dialog-browser-license-link"></label>
</hbox>
<description id="trademark" data-l10n-id="trademarkInfo"></description>
- <description id="trademarkTor">&tor.TrademarkStatement;</description>
+ <description id="trademarkTor" data-l10n-id="about-dialog-trademark-statement"></description>
</vbox>
</html:div>
=====================================
browser/base/content/browser-doctype.inc
=====================================
@@ -2,5 +2,3 @@
%brandDTD;
<!ENTITY % torbuttonDTD SYSTEM "chrome://torbutton/locale/torbutton.dtd">
%torbuttonDTD;
-<!ENTITY % aboutDialogDTD SYSTEM "chrome://torbutton/locale/aboutDialog.dtd">
-%aboutDialogDTD;
=====================================
browser/locales/en-US/browser/tor-browser.ftl
=====================================
@@ -304,3 +304,25 @@ user-provide-bridge-dialog-next-button =
# The "aria-label" should use the same text, but include some ending punctuation to separate it from the sentence that follows. This is used for screen reader users.
built-in-dialog-current-bridge-label = Current bridge
.aria-label = Current bridge.
+
+## About Tor Browser dialog.
+
+# '<label data-l10n-name="project-link">' and '</label>' should wrap the link text for the Tor Project, and will link to the Tor Project web page.
+# -brand-short-name refers to 'Tor Browser', localized.
+# -vendor-short-name refers to 'Tor Project', localized.
+about-dialog-tor-project = { -brand-short-name } is developed by <label data-l10n-name="project-link">the { -vendor-short-name }</label>, a nonprofit working to defend your privacy and freedom online.
+
+# '<label data-l10n-name="donate-link">' and '</label>' should wrap the link text for donating to Tor Project, and will link to the Tor Project donation page.
+# '<label data-l10n-name="community-link">' and '</label>' should wrap the link text for getting involved with Tor Project, and will link to the Tor Project community page.
+about-dialog-help-out = Want to help? <label data-l10n-name="donate-link">Donate</label> or <label data-l10n-name="community-link">get involved</label>!
+
+# Link text for the Tor Project support page.
+about-dialog-questions-link = Questions?
+# Link text for the Tor Project page for Tor Network relay operators.
+about-dialog-grow-tor-network-link = Help the Tor Network Grow!
+# Link text for the Tor Browser license page (about:license).
+about-dialog-browser-license-link = Licensing Information
+
+# "Tor" and "The Onion Logo" are trademark names, so should not be translated (not including the quote marks, which can be localized).
+# "The Tor Project, Inc." is an organisation name.
+about-dialog-trademark-statement = “Tor” and “The Onion Logo” are registered trademarks of The Tor Project, Inc.
=====================================
toolkit/torbutton/chrome/locale/en-US/aboutDialog.dtd deleted
=====================================
@@ -1,24 +0,0 @@
-<!-- Copyright (c) 2022, The Tor Project, Inc.
- - This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<!ENTITY project.start "&brandShortName; is developed by ">
-<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
-<!ENTITY project.tpoLink "the &vendorShortName;">
-<!ENTITY project.end ", a nonprofit working to defend your privacy and freedom online.">
-
-<!ENTITY help.start "Want to help? ">
-<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://donate.torproject.org/ -->
-<!ENTITY help.donateLink "Donate">
-<!ENTITY help.or " or ">
-<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://community.torproject.org/ -->
-<!ENTITY help.getInvolvedLink "get involved">
-<!ENTITY help.end "!">
-<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://support.torproject.org/ -->
-<!ENTITY bottomLinks.questions "Questions?">
-<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://community.torproject.org/relay/ -->
-<!ENTITY bottomLinks.grow "Help the Tor Network Grow!">
-<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
-<!ENTITY bottomLinks.license "Licensing Information">
-<!ENTITY tor.TrademarkStatement "'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.">
=====================================
tools/torbrowser/l10n/migrations/bug-42203-about-dialog.py
=====================================
@@ -0,0 +1,75 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
+from fluent.migrate.transforms import CONCAT, COPY, REPLACE
+
+
+def migrate(ctx):
+ legacy_path = "aboutDialog.dtd"
+ ctx.add_transforms(
+ "tor-browser.ftl",
+ "tor-browser.ftl",
+ transforms_from(
+ """
+about-dialog-questions-link = { COPY(path, "bottomLinks.questions") }
+about-dialog-grow-tor-network-link = { COPY(path, "bottomLinks.grow") }
+about-dialog-browser-license-link = { COPY(path, "bottomLinks.license") }
+""",
+ path=legacy_path,
+ )
+ + [
+ # Concatenate as
+ # &project.start;
+ # <label data-l10n-name="project-link">&project.tpoLink;</a>
+ # &project.end;
+ #
+ # And replace any occurrence of "&brandShortName;" and
+ # "&vendorShortName;" with "-brand-short-name" and
+ # "-vendor-short-name", wherever they may appear.
+ FTL.Message(
+ id=FTL.Identifier("about-dialog-tor-project"),
+ value=CONCAT(
+ REPLACE(
+ legacy_path,
+ "project.start",
+ {
+ "&brandShortName;": TERM_REFERENCE("brand-short-name"),
+ "&vendorShortName;": TERM_REFERENCE("vendor-short-name"),
+ },
+ ),
+ FTL.TextElement('<label data-l10n-name="project-link">'),
+ REPLACE(
+ legacy_path,
+ "project.tpoLink",
+ {
+ "&brandShortName;": TERM_REFERENCE("brand-short-name"),
+ "&vendorShortName;": TERM_REFERENCE("vendor-short-name"),
+ },
+ ),
+ FTL.TextElement("</label>"),
+ REPLACE(
+ legacy_path,
+ "project.end",
+ {
+ "&brandShortName;": TERM_REFERENCE("brand-short-name"),
+ "&vendorShortName;": TERM_REFERENCE("vendor-short-name"),
+ },
+ ),
+ ),
+ ),
+ # Concatenate with two link labels.
+ FTL.Message(
+ id=FTL.Identifier("about-dialog-help-out"),
+ value=CONCAT(
+ COPY(legacy_path, "help.start"),
+ FTL.TextElement('<label data-l10n-name="donate-link">'),
+ COPY(legacy_path, "help.donateLink"),
+ FTL.TextElement("</label>"),
+ COPY(legacy_path, "help.or"),
+ FTL.TextElement('<label data-l10n-name="community-link">'),
+ COPY(legacy_path, "help.getInvolvedLink"),
+ FTL.TextElement("</label>"),
+ COPY(legacy_path, "help.end"),
+ ),
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/018c55…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/018c55…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.9.0esr-13.0-1-build3
by richard (@richard) 18 Mar '24
by richard (@richard) 18 Mar '24
18 Mar '24
richard pushed new tag tor-browser-115.9.0esr-13.0-1-build3 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41105: Bump Snowflake version to v2.9.2
by richard (@richard) 18 Mar '24
by richard (@richard) 18 Mar '24
18 Mar '24
richard pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
bba452b3 by Cecylia Bocovich at 2024-03-18T20:47:49+00:00
Bug 41105: Bump Snowflake version to v2.9.2
- - - - -
1 changed file:
- projects/snowflake/config
Changes:
=====================================
projects/snowflake/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…
-git_hash: v2.9.0
+git_hash: v2.9.2
gpg_keyring: anti-censorship.gpg
tag_gpg_id: 1
@@ -22,6 +22,6 @@ steps:
pkg_type: go_vendor
project: snowflake
norec:
- sha256sum: a081c55db822f9f26121e9f986d1a74c212b01303daf43eef1ea3f808b1b8c0b
+ sha256sum: be96eed0509e9bee22c71a9145fea90e3d63ec972e17324a119d16a3e931eebc
target_replace:
'^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64'
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] Bug 41105: Bump Snowflake version to v2.9.2
by richard (@richard) 18 Mar '24
by richard (@richard) 18 Mar '24
18 Mar '24
richard pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
5a54c1cc by Cecylia Bocovich at 2024-03-18T20:44:14+00:00
Bug 41105: Bump Snowflake version to v2.9.2
- - - - -
1 changed file:
- projects/snowflake/config
Changes:
=====================================
projects/snowflake/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…
-git_hash: v2.9.0
+git_hash: v2.9.2
gpg_keyring: anti-censorship.gpg
tag_gpg_id: 1
@@ -22,6 +22,6 @@ steps:
pkg_type: go_vendor
project: snowflake
norec:
- sha256sum: a081c55db822f9f26121e9f986d1a74c212b01303daf43eef1ea3f808b1b8c0b
+ sha256sum: be96eed0509e9bee22c71a9145fea90e3d63ec972e17324a119d16a3e931eebc
target_replace:
'^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64'
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] Deleted 1 commit: Bug 41105: Bump Snowflake version to v2.9.2
by richard (@richard) 18 Mar '24
by richard (@richard) 18 Mar '24
18 Mar '24
richard pushed to branch main at The Tor Project / Applications / tor-browser-build
WARNING: The push did not contain any new commits, but force pushed to delete the commits and changes below.
Deleted commits:
1fbacc7a by Cecylia Bocovich at 2024-03-18T15:11:18-04:00
Bug 41105: Bump Snowflake version to v2.9.2
- - - - -
2 changed files:
- projects/snowflake/config
- rbm
Changes:
=====================================
projects/snowflake/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…
-git_hash: v2.9.0
+git_hash: v2.9.2
gpg_keyring: anti-censorship.gpg
tag_gpg_id: 1
@@ -22,6 +22,6 @@ steps:
pkg_type: go_vendor
project: snowflake
norec:
- sha256sum: a081c55db822f9f26121e9f986d1a74c212b01303daf43eef1ea3f808b1b8c0b
+ sha256sum: be96eed0509e9bee22c71a9145fea90e3d63ec972e17324a119d16a3e931eebc
target_replace:
'^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64'
=====================================
rbm
=====================================
@@ -1 +1 @@
-Subproject commit 10c6b24e90e3dc9c2578290a7d82a87b7f4eb9a3
+Subproject commit b5e5b04aaf677c4bacfb5ace45598313286bfdf6
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] Bug 41105: Bump Snowflake version to v2.9.2
by richard (@richard) 18 Mar '24
by richard (@richard) 18 Mar '24
18 Mar '24
richard pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
1fbacc7a by Cecylia Bocovich at 2024-03-18T15:11:18-04:00
Bug 41105: Bump Snowflake version to v2.9.2
- - - - -
2 changed files:
- projects/snowflake/config
- rbm
Changes:
=====================================
projects/snowflake/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
git_url: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…
-git_hash: v2.9.0
+git_hash: v2.9.2
gpg_keyring: anti-censorship.gpg
tag_gpg_id: 1
@@ -22,6 +22,6 @@ steps:
pkg_type: go_vendor
project: snowflake
norec:
- sha256sum: a081c55db822f9f26121e9f986d1a74c212b01303daf43eef1ea3f808b1b8c0b
+ sha256sum: be96eed0509e9bee22c71a9145fea90e3d63ec972e17324a119d16a3e931eebc
target_replace:
'^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64'
=====================================
rbm
=====================================
@@ -1 +1 @@
-Subproject commit 10c6b24e90e3dc9c2578290a7d82a87b7f4eb9a3
+Subproject commit b5e5b04aaf677c4bacfb5ace45598313286bfdf6
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] fixup! Add TorStrings module for localization
by Pier Angelo Vendrame (@pierov) 18 Mar '24
by Pier Angelo Vendrame (@pierov) 18 Mar '24
18 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
ae92391a by hackademix at 2024-03-18T17:15:20+01:00
fixup! Add TorStrings module for localization
Bug 42440: Remove the "Prioritize .onion sites when known" option
- - - - -
2 changed files:
- browser/modules/TorStrings.jsm
- toolkit/torbutton/chrome/locale/en-US/onionLocation.properties
Changes:
=====================================
browser/modules/TorStrings.jsm
=====================================
@@ -471,20 +471,15 @@ const Loader = {
*/
onionLocation() {
const strings = {
- alwaysPrioritize: "Always Prioritize Onionsites",
- alwaysPrioritizeAccessKey: "a",
+ learnMore: "Learn more…",
+ loadOnion: "Visit the .onion",
+ loadOnionAccessKey: "V",
notNow: "Not Now",
notNowAccessKey: "n",
description:
- "Website publishers can protect users by adding a security layer. This prevents eavesdroppers from knowing that you are the one visiting that website.",
- tryThis: "Try this: Onionsite",
- onionAvailable: "Onionsite available",
- learnMore: "Learn more",
- always: "Always",
- askEverytime: "Ask you every time",
- prioritizeOnionsDescription:
- "Prioritize onionsites when they are available.",
- onionServicesTitle: "Onion Services",
+ "There's a more private and secure version of this site available over the Tor network via onion services. Onion services help website publishers and their visitors defeat surveillance and censorship.",
+ tryThis: "Try Onion Services",
+ onionAvailable: ".onion available",
};
const tsb = new TorPropertyStringBundle(
=====================================
toolkit/torbutton/chrome/locale/en-US/onionLocation.properties
=====================================
@@ -4,10 +4,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Onion-Location strings.
-onionLocation.alwaysPrioritize=Always Prioritize Onions
-# Localization note: this is the access key for "Always Prioritize Onions".
+onionLocation.loadOnion=Visit the .onion
+# Localization note: this is the access key for "Visit the .onion".
# It should be a character that appears in that string.
-onionLocation.alwaysPrioritizeAccessKey=a
+onionLocation.loadOnionAccessKey=V
onionLocation.notNow=Not Now
# Localization note: this is the access key for "Not now".
# It should be a character that appears in that string.
@@ -16,7 +16,3 @@ onionLocation.description=There's a more private and secure version of this site
onionLocation.tryThis=Try Onion Services
onionLocation.onionAvailable=.onion available
onionLocation.learnMore=Learn more…
-onionLocation.always=Always
-onionLocation.askEverytime=Ask every time
-onionLocation.prioritizeOnionsDescription=Prioritize .onion sites when known.
-onionLocation.onionServicesTitle=Onion Services
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/ae92391…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/ae92391…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] fixup! Bug 21952: Implement Onion-Location
by Pier Angelo Vendrame (@pierov) 18 Mar '24
by Pier Angelo Vendrame (@pierov) 18 Mar '24
18 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
03ee248c by Pier Angelo Vendrame at 2024-03-18T16:59:33+01:00
fixup! Bug 21952: Implement Onion-Location
Fix some errors introduced while cherry-picking
9920c7225592aac5e05aff56d48bb0bdcc6d9193 as
4b69c25929cce11ca9758996f04ec830bb53e670.
- - - - -
1 changed file:
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
Changes:
=====================================
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
=====================================
@@ -476,9 +476,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
getSettings().mSecurityLevel.set(level);
return this;
}
-
- return this;
- }
}
private GeckoRuntime mRuntime;
@@ -1322,9 +1319,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
- return this;
- }
-
@Override // Parcelable
public void writeToParcel(final Parcel out, final int flags) {
super.writeToParcel(out, flags);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/03ee248…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/03ee248…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in...
by richard (@richard) 14 Mar '24
by richard (@richard) 14 Mar '24
14 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
cdfc3cf2 by Henry Wilkes at 2024-03-14T16:38:30+00:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42446: Improve accessible description of built-in radio options.
- - - - -
0a704bcc by Henry Wilkes at 2024-03-14T16:38:30+00:00
fixup! Tor Browser strings
Bug 42446: Add ending-punctuation to the "Current bridge" accessible
name to separate it from the rest of the built-bridge description.
- - - - -
018c552b by Henry Wilkes at 2024-03-14T16:38:30+00:00
fixup! Add TorStrings module for localization
Bug 42446: Drop old "Current bridge" string.
- - - - -
5 changed files:
- browser/components/torpreferences/content/builtinBridgeDialog.js
- browser/components/torpreferences/content/builtinBridgeDialog.xhtml
- browser/locales/en-US/browser/tor-browser.ftl
- toolkit/modules/TorStrings.sys.mjs
- toolkit/torbutton/chrome/locale/en-US/settings.properties
Changes:
=====================================
browser/components/torpreferences/content/builtinBridgeDialog.js
=====================================
@@ -57,18 +57,27 @@ const gBuiltinBridgeDialog = {
const type = radio.value;
optionEl.hidden = !TorSettings.builtinBridgeTypes.includes(type);
radio.label = typeStrings[type].label;
- optionEl.querySelector(
+ const descriptionEl = optionEl.querySelector(
".builtin-bridges-option-description"
- ).textContent = typeStrings[type].descr;
- optionEl.querySelector(
- ".torPreferences-current-bridge-label"
- ).textContent = TorStrings.settings.currentBridge;
- optionEl
- .querySelector(".bridge-status-badge")
- .classList.toggle(
- "bridge-status-current-built-in",
- type === currentBuiltinType
+ );
+ descriptionEl.textContent = typeStrings[type].descr;
+ const currentBadge = optionEl.querySelector(".bridge-status-badge");
+ if (type === currentBuiltinType) {
+ const currentLabelEl = optionEl.querySelector(
+ ".torPreferences-current-bridge-label"
);
+ // Described by both the current badge and the full description.
+ // These will be concatenated together in the screen reader output.
+ radio.setAttribute(
+ "aria-describedby",
+ `${currentLabelEl.id} ${descriptionEl.id}`
+ );
+ // Make visible.
+ currentBadge.classList.add("bridge-status-current-built-in");
+ } else {
+ // No visible badge.
+ radio.setAttribute("aria-describedby", descriptionEl.id);
+ }
}
if (currentBuiltinType) {
=====================================
browser/components/torpreferences/content/builtinBridgeDialog.xhtml
=====================================
@@ -9,6 +9,10 @@
xmlns:html="http://www.w3.org/1999/xhtml"
>
<dialog id="torPreferences-builtinBridge-dialog" buttons="accept,cancel">
+ <linkset>
+ <html:link rel="localization" href="browser/tor-browser.ftl" />
+ </linkset>
+
<script src="chrome://browser/content/torpreferences/builtinBridgeDialog.js" />
<description id="torPreferences-builtinBridge-description"> </description>
@@ -18,15 +22,13 @@
<!-- The radio option is described by both the "Current bridge" label
- and the full description. If the "Connected" label is hidden, then
- only the latter description should contribute. -->
- <radio
- aria-describedby="obfs-bridges-current obfs-bridges-description"
- value="obfs4"
- />
+ <radio value="obfs4" />
<html:span class="bridge-status-badge">
<html:div class="bridge-status-icon"></html:div>
<html:span
id="obfs-bridges-current"
class="torPreferences-current-bridge-label"
+ data-l10n-id="built-in-dialog-current-bridge-label"
>
</html:span>
</html:span>
@@ -39,15 +41,13 @@
</vbox>
<vbox class="builtin-bridges-option">
<hbox>
- <radio
- aria-describedby="snowflake-bridges-current snowflake-bridges-description"
- value="snowflake"
- />
+ <radio value="snowflake" />
<html:span class="bridge-status-badge">
<html:div class="bridge-status-icon"></html:div>
<html:span
id="snowflake-bridges-current"
class="torPreferences-current-bridge-label"
+ data-l10n-id="built-in-dialog-current-bridge-label"
>
</html:span>
</html:span>
@@ -60,15 +60,13 @@
</vbox>
<vbox class="builtin-bridges-option">
<hbox>
- <radio
- aria-describedby="meek-bridges-current meek-bridges-description"
- value="meek-azure"
- />
+ <radio value="meek-azure" />
<html:span class="bridge-status-badge">
<html:div class="bridge-status-icon"></html:div>
<html:span
id="meek-bridges-current"
class="torPreferences-current-bridge-label"
+ data-l10n-id="built-in-dialog-current-bridge-label"
>
</html:span>
</html:span>
=====================================
browser/locales/en-US/browser/tor-browser.ftl
=====================================
@@ -297,3 +297,10 @@ user-provide-bridge-dialog-result-invite = The following bridges were shared wit
user-provide-bridge-dialog-result-addresses = The following bridges were entered by you.
user-provide-bridge-dialog-next-button =
.label = Next
+
+## Built-in bridges dialog.
+
+# Label attached to the built-in bridge option that is already in use.
+# The "aria-label" should use the same text, but include some ending punctuation to separate it from the sentence that follows. This is used for screen reader users.
+built-in-dialog-current-bridge-label = Current bridge
+ .aria-label = Current bridge.
=====================================
toolkit/modules/TorStrings.sys.mjs
=====================================
@@ -98,7 +98,6 @@ const Loader = {
bridgeLocationFrequent: "Frequently selected locations",
bridgeLocationOther: "Other locations",
bridgeChooseForMe: "Choose a Bridge For Me…",
- currentBridge: "Current bridge",
remove: "Remove",
bridgeDisableBuiltIn: "Disable built-in bridges",
copied: "Copied!",
=====================================
toolkit/torbutton/chrome/locale/en-US/settings.properties
=====================================
@@ -33,7 +33,6 @@ settings.bridgeLocationFrequent=Frequently selected locations
settings.bridgeLocationOther=Other locations
settings.bridgeChooseForMe=Choose a Bridge For Me…
-settings.currentBridge=Current bridge
settings.remove=Remove
settings.bridgeDisableBuiltIn=Disable built-in bridges
settings.copied=Copied!
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/788a92…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/788a92…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser-update-responses][main] release: new version, 13.0.12
by richard (@richard) 14 Mar '24
by richard (@richard) 14 Mar '24
14 Mar '24
richard pushed to branch main at The Tor Project / Applications / mullvad-browser-update-responses
Commits:
b28dbabb by Richard Pospesel at 2024-03-14T16:26:46+00:00
release: new version, 13.0.12
- - - - -
29 changed files:
- update_1/release/.htaccess
- + update_1/release/13.0.10-13.0.12-linux-x86_64-ALL.xml
- + update_1/release/13.0.10-13.0.12-macos-ALL.xml
- + update_1/release/13.0.10-13.0.12-windows-x86_64-ALL.xml
- − update_1/release/13.0.10-linux-x86_64-ALL.xml
- − update_1/release/13.0.10-macos-ALL.xml
- − update_1/release/13.0.10-windows-x86_64-ALL.xml
- + update_1/release/13.0.12-linux-x86_64-ALL.xml
- + update_1/release/13.0.12-macos-ALL.xml
- + update_1/release/13.0.12-windows-x86_64-ALL.xml
- − update_1/release/13.0.6-13.0.10-linux-x86_64-ALL.xml
- − update_1/release/13.0.6-13.0.10-macos-ALL.xml
- − update_1/release/13.0.6-13.0.10-windows-x86_64-ALL.xml
- − update_1/release/13.0.7-13.0.10-linux-x86_64-ALL.xml
- − update_1/release/13.0.7-13.0.10-macos-ALL.xml
- − update_1/release/13.0.7-13.0.10-windows-x86_64-ALL.xml
- + update_1/release/13.0.7-13.0.12-linux-x86_64-ALL.xml
- + update_1/release/13.0.7-13.0.12-macos-ALL.xml
- + update_1/release/13.0.7-13.0.12-windows-x86_64-ALL.xml
- − update_1/release/13.0.9-13.0.10-linux-x86_64-ALL.xml
- − update_1/release/13.0.9-13.0.10-macos-ALL.xml
- − update_1/release/13.0.9-13.0.10-windows-x86_64-ALL.xml
- + update_1/release/13.0.9-13.0.12-linux-x86_64-ALL.xml
- + update_1/release/13.0.9-13.0.12-macos-ALL.xml
- + update_1/release/13.0.9-13.0.12-windows-x86_64-ALL.xml
- update_1/release/download-linux-x86_64.json
- update_1/release/download-macos.json
- update_1/release/download-windows-x86_64.json
- update_1/release/downloads.json
Changes:
=====================================
update_1/release/.htaccess
=====================================
@@ -1,22 +1,22 @@
RewriteEngine On
-RewriteRule ^[^/]+/13.0.10/ no-update.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.6/ALL 13.0.6-13.0.10-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.10-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.10-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.10-linux-x86_64-ALL.xml [last]
-RewriteRule ^Linux_x86_64-gcc3/ 13.0.10-linux-x86_64-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.6/ALL 13.0.6-13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_x86_64-gcc3/ 13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.6/ALL 13.0.6-13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.7/ALL 13.0.7-13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/13.0.9/ALL 13.0.9-13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.10-macos-ALL.xml [last]
-RewriteRule ^Darwin_aarch64-gcc3/ 13.0.10-macos-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.6/ALL 13.0.6-13.0.10-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.7/ALL 13.0.7-13.0.10-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.9/ALL 13.0.9-13.0.10-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.10-windows-x86_64-ALL.xml [last]
-RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.10-windows-x86_64-ALL.xml [last]
+RewriteRule ^[^/]+/13.0.12/ no-update.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.12-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.12-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.12-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/[^/]+/ALL 13.0.12-linux-x86_64-ALL.xml [last]
+RewriteRule ^Linux_x86_64-gcc3/ 13.0.12-linux-x86_64-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.10/ALL 13.0.10-13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.7/ALL 13.0.7-13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/13.0.9/ALL 13.0.9-13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/[^/]+/ALL 13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_x86_64-gcc3/ 13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.10/ALL 13.0.10-13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.7/ALL 13.0.7-13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/13.0.9/ALL 13.0.9-13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/[^/]+/ALL 13.0.12-macos-ALL.xml [last]
+RewriteRule ^Darwin_aarch64-gcc3/ 13.0.12-macos-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.10/ALL 13.0.10-13.0.12-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.7/ALL 13.0.7-13.0.12-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/13.0.9/ALL 13.0.9-13.0.12-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/[^/]+/ALL 13.0.12-windows-x86_64-ALL.xml [last]
+RewriteRule ^WINNT_x86_64-gcc3-x64/ 13.0.12-windows-x86_64-ALL.xml [last]
=====================================
update_1/release/13.0.10-13.0.12-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="7ad00dc2b0acd1e4fe72797e0be720a5df5675580de689ff7dec0d032fee7c037ced1027ff5107e140d149537cc04d74a6b4bcff6f641e5037fcf580095ea84f" size="7848684" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.12-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.10-13.0…" hashFunction="SHA512" hashValue="4f8bcee04e7ddc9684f0f264b12a81dce94a179a7ceaa686427079021d18b17b5ac21d27d612abab50cd6f77560351e1edb8721f68b75b3e57185db65d7ae96f" size="12124599" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-13.0.12-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="72df0c72c97068315d781a017da91d6279d4026f94db5e5d58eb7a711f04509a659142d60fe335559afa713dc026f998cc1de6c8e6383ec4896888d607837b17" size="8560367" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.10-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="94ec6248cc9ac47c36527fe9c4be8af5793f9b94e8b7508af0999d8fa872c87d002a38349866e0de8e806f6df8c836b7f258572d0455634ec4df5561ac42214a" size="107245515" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.10-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10_ALL.m…" hashFunction="SHA512" hashValue="30de8b89fb7c67130225b823d59e813949ca55c58e59b4da389394835436f69125e2be6ac5aa8da4d915a7dc0fa7c0a1ede5f0dae104cc0400bbca306f76add4" size="115293951" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.10-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bb71ce5cbb6e7a11e1e12e165dae922c0bc600324577b4b7e3af59247764db7ca4a2a8af0d9560b925b6bc5a0b7bba9d3a4f46598ec7d291ab4638239e38543e" size="89214292" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.12-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.12-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.12-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch></update></updates>
=====================================
update_1/release/13.0.6-13.0.10-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="94ec6248cc9ac47c36527fe9c4be8af5793f9b94e8b7508af0999d8fa872c87d002a38349866e0de8e806f6df8c836b7f258572d0455634ec4df5561ac42214a" size="107245515" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="ab1835e09c012ce8ff962b109afbe12db3d82bcf252b5e75e4d865f0546e4abddff89a045f4524f4307164c793c62e406770795d1affacf27b9042c9739a5cf0" size="11516951" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.6-13.0.10-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10_ALL.m…" hashFunction="SHA512" hashValue="30de8b89fb7c67130225b823d59e813949ca55c58e59b4da389394835436f69125e2be6ac5aa8da4d915a7dc0fa7c0a1ede5f0dae104cc0400bbca306f76add4" size="115293951" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos--13.0.6-13.0.…" hashFunction="SHA512" hashValue="b1dd45b032e73c357763ba48c7cb7062b8028fc686ab409a6dfb6bfdb7f4a763832fed386892c03ec4ecc747e552a0c79f770ab69d545aa5b0d1bb5fae9866ab" size="16654317" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.6-13.0.10-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bb71ce5cbb6e7a11e1e12e165dae922c0bc600324577b4b7e3af59247764db7ca4a2a8af0d9560b925b6bc5a0b7bba9d3a4f46598ec7d291ab4638239e38543e" size="89214292" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="b139243c78b05d4d4258c0be34db84eeab70920e66dc7f8e6bb35352095df1d0a92b8f405a2ac7ac3dbedaf3fcf233c02cff6c1586ccfd86187628b46cf29d46" size="11993550" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.10-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="94ec6248cc9ac47c36527fe9c4be8af5793f9b94e8b7508af0999d8fa872c87d002a38349866e0de8e806f6df8c836b7f258572d0455634ec4df5561ac42214a" size="107245515" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="51f18033eb60aec69955043ec83ae96a3f273bf2bb83728f4e03442f0fd2293122b83a781f29ef5d63248aca7f9bcd6125e34ef0010c7c934f444ef43f3c8a07" size="10482606" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.10-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10_ALL.m…" hashFunction="SHA512" hashValue="30de8b89fb7c67130225b823d59e813949ca55c58e59b4da389394835436f69125e2be6ac5aa8da4d915a7dc0fa7c0a1ede5f0dae104cc0400bbca306f76add4" size="115293951" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos--13.0.7-13.0.…" hashFunction="SHA512" hashValue="01aa8a7b9367e16e7ee7255031348bcd06c85eb6bca2c38fed8e9553fdbeb0c50f9faba6bdd1aa2636d6c9a1c65335403af4c344d322a702430c1ec6a13ab7d3" size="15148501" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.10-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bb71ce5cbb6e7a11e1e12e165dae922c0bc600324577b4b7e3af59247764db7ca4a2a8af0d9560b925b6bc5a0b7bba9d3a4f46598ec7d291ab4638239e38543e" size="89214292" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="554e91c0de3da995f1000d3043443c8d85b4f35c90e6a7b5344817389fc64327a03ec55e4755bbbd1a091cb602bedbac840e36d932a4c4d58d1d930b245d3994" size="10964217" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.12-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="6fecc36a34bd3d38aa5c34d53bd6d71c6794d07287447f6f70b203f7d210ab485b7face9c7f831c5c526b5549cbf1458a074c146945219b5d8c6561bce2496ed" size="12369078" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.12-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.7-13.0.…" hashFunction="SHA512" hashValue="5dcb89d5f4565bb8513a20efaf84f25f6f85229181400ead93095783553a7ff57abea8643c4196ffc07f33f6c22b3d1d96f2f97a2c32f163397db9a711443629" size="17020253" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.7-13.0.12-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="e0cf078c426841dd4b80e3efbbc33c577a95ffd0af5ea64303989f265b274311725948ec6ffcd832867c7bf9cca51e76078a02aa107663dae22b58791d439c64" size="13174209" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.10-linux-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="94ec6248cc9ac47c36527fe9c4be8af5793f9b94e8b7508af0999d8fa872c87d002a38349866e0de8e806f6df8c836b7f258572d0455634ec4df5561ac42214a" size="107245515" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="526ad1569cde8630b81c65ca82edd6930e0b1d0985bc2f68a13e63c6bdefcb57c2f3327f95ad824e735576463050a107facee6285b984e8b5d92bb402377947d" size="5058062" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.10-macos-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10_ALL.m…" hashFunction="SHA512" hashValue="30de8b89fb7c67130225b823d59e813949ca55c58e59b4da389394835436f69125e2be6ac5aa8da4d915a7dc0fa7c0a1ede5f0dae104cc0400bbca306f76add4" size="115293951" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos--13.0.9-13.0.…" hashFunction="SHA512" hashValue="d46b98a5bb2354f33d5e58eeba285939c228981d62c207bd066b86892fb84f857544dfad90e2392ffc87ae3065d53e33915725c4d4c9818afd459e037cf077ed" size="9678114" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.10-windows-x86_64-ALL.xml deleted
=====================================
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<updates><update type="minor" displayVersion="13.0.10" appVersion="13.0.10" platformVersion="115.8.0" buildID="20240213150358" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.10" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="bb71ce5cbb6e7a11e1e12e165dae922c0bc600324577b4b7e3af59247764db7ca4a2a8af0d9560b925b6bc5a0b7bba9d3a4f46598ec7d291ab4638239e38543e" size="89214292" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="47c998cc3f194235bac50754c3ea72d4b077aa7c43298e1847ecc7c014802aa42e66cbe5fc83ee9d0bc392be5f3e7efd1ac726b5273599f30b16287fdba92b93" size="5497521" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.12-linux-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…" hashFunction="SHA512" hashValue="376b402661d94c1b3d485fc380095a8ad9546eed3ff9f4cf4abfb6765c5248c0f17e0bf568a9fd698c27dd7041aabed087eec015023a856296702e7ff48bc828" size="107414187" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64--13.0.…" hashFunction="SHA512" hashValue="27584d28396169d940626225c8ea910b586995de8fcdf0df305585dd2ae62b4f96c8a84135c52cc10d501b3db35fdbdcae8aa96d78a1e89f5c62fe2195dba090" size="8755552" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.12-macos-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="16.0.0"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12_ALL.m…" hashFunction="SHA512" hashValue="8facedccd5a4d1a5802b286683d36716ecd6e11b44aabd365a29c53d1c1c401ddb1a3913c95e4db1e38be03f12079f545e8ee3054bd4778ce61fc5fe9f562c7e" size="115462583" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos--13.0.9-13.0.…" hashFunction="SHA512" hashValue="689f37db7be6488773db9e405f7742869cb0885135ab231690fd6b424f4c3a54aedd01f98547e5fffacffe11bd902f77bf3b80279ba2202d16732f221bc71dba" size="13343215" type="partial"></patch></update></updates>
=====================================
update_1/release/13.0.9-13.0.12-windows-x86_64-ALL.xml
=====================================
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<updates><update type="minor" displayVersion="13.0.12" appVersion="13.0.12" platformVersion="115.9.0" buildID="20240313183935" detailsURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" actions="showURL" openURL="https://github.com/mullvad/mullvad-browser/releases/13.0.12" minSupportedOSVersion="6.1" minSupportedInstructionSet="SSE2"><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-13.0…" hashFunction="SHA512" hashValue="3c30c836e8de5492cffded24e31aae556449da223906706f12af44875401b889fd0609a840bfe1d6a8a845ef2c141bc907cf1c7b3a5d2e0b7e4757f0b66bc9ba" size="89384780" type="complete"></patch><patch URL="https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64--13.…" hashFunction="SHA512" hashValue="2c0d987c01caee4d38ed9fddfd7f34403f9c00aadf90dadc792a2e9bc062276d6253db468b25e3448a94163a22f94da18f34fafd32e2ca2efb78ac46bdaef286" size="9488151" type="partial"></patch></update></updates>
=====================================
update_1/release/download-linux-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.10-build2","sig":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.10"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","version":"13.0.12"}
\ No newline at end of file
=====================================
update_1/release/download-macos.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10.dmg","git_tag":"mb-13.0.10-build2","sig":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10.dmg.a…","version":"13.0.10"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg.a…","version":"13.0.12"}
\ No newline at end of file
=====================================
update_1/release/download-windows-x86_64.json
=====================================
@@ -1 +1 @@
-{"binary":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.10-build2","sig":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-port…","version":"13.0.10"}
\ No newline at end of file
+{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","git_tag":"mb-13.0.12-build1","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","version":"13.0.12"}
\ No newline at end of file
=====================================
update_1/release/downloads.json
=====================================
@@ -1 +1 @@
-{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10.dmg","sig":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-macos-13.0.10.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.10/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.10-build2","version":"13.0.10"}
\ No newline at end of file
+{"downloads":{"linux-x86_64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-linux-x86_64-13.0.1…"}},"macos":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-macos-13.0.12.dmg.a…"}},"win64":{"ALL":{"binary":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…","sig":"https://cdn.mullvad.net/browser/13.0.12/mullvad-browser-windows-x86_64-port…"}}},"tag":"mb-13.0.12-build1","version":"13.0.12"}
\ No newline at end of file
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser-update-respo…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] Bug 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
by ma1 (@ma1) 13 Mar '24
by ma1 (@ma1) 13 Mar '24
13 Mar '24
ma1 pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
bec1f691 by hackademix at 2024-03-13T20:37:37+01:00
Bug 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
- - - - -
1 changed file:
- toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
Changes:
=====================================
toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
=====================================
@@ -750,8 +750,27 @@ class _RFPHelper {
});
}
+ // We will attach this method to each browser window. When called
+ // it will instantly resize the window to exactly fit the selected
+ // (possibly letterboxed) browser.
+ shrinkToLetterbox() {
+ let { selectedBrowser } = this.gBrowser;
+ let stack = selectedBrowser.closest(".browserStack");
+ const outer = stack.getBoundingClientRect();
+ const inner = selectedBrowser.getBoundingClientRect();
+ this.resizeBy(inner.width - outer.width, inner.height - outer.height);
+ }
+
+ _onWindowDoubleClick(e) {
+ if (e.target.classList.contains("browserStack")) {
+ e.currentTarget.shrinkToLetterbox();
+ }
+ }
+
_attachWindow(aWindow) {
aWindow.addEventListener("sizemodechange", windowResizeHandler);
+ aWindow.shrinkToLetterbox = this.shrinkToLetterbox;
+ aWindow.addEventListener("dblclick", this._onWindowDoubleClick);
aWindow.gBrowser.addTabsProgressListener(this);
aWindow.addEventListener("TabOpen", this);
const resizeObserver = (aWindow._rfpResizeObserver =
@@ -783,9 +802,12 @@ class _RFPHelper {
let browser = tab.linkedBrowser;
this._resetContentSize(browser);
}
+ aWindow.removeEventListener("dblclick", this._onWindowDoubleClick);
+ delete aWindow.shrinkToLetterbox;
aWindow.removeEventListener("sizemodechange", windowResizeHandler);
}
+
_handleDOMWindowOpened(win) {
let self = this;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/bec…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/bec…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.5-1] Bug 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
by ma1 (@ma1) 13 Mar '24
by ma1 (@ma1) 13 Mar '24
13 Mar '24
ma1 pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
aefa5f37 by hackademix at 2024-03-13T20:35:54+01:00
Bug 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
- - - - -
1 changed file:
- toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
Changes:
=====================================
toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
=====================================
@@ -750,8 +750,27 @@ class _RFPHelper {
});
}
+ // We will attach this method to each browser window. When called
+ // it will instantly resize the window to exactly fit the selected
+ // (possibly letterboxed) browser.
+ shrinkToLetterbox() {
+ let { selectedBrowser } = this.gBrowser;
+ let stack = selectedBrowser.closest(".browserStack");
+ const outer = stack.getBoundingClientRect();
+ const inner = selectedBrowser.getBoundingClientRect();
+ this.resizeBy(inner.width - outer.width, inner.height - outer.height);
+ }
+
+ _onWindowDoubleClick(e) {
+ if (e.target.classList.contains("browserStack")) {
+ e.currentTarget.shrinkToLetterbox();
+ }
+ }
+
_attachWindow(aWindow) {
aWindow.addEventListener("sizemodechange", windowResizeHandler);
+ aWindow.shrinkToLetterbox = this.shrinkToLetterbox;
+ aWindow.addEventListener("dblclick", this._onWindowDoubleClick);
aWindow.gBrowser.addTabsProgressListener(this);
aWindow.addEventListener("TabOpen", this);
const resizeObserver = (aWindow._rfpResizeObserver =
@@ -783,9 +802,12 @@ class _RFPHelper {
let browser = tab.linkedBrowser;
this._resetContentSize(browser);
}
+ aWindow.removeEventListener("dblclick", this._onWindowDoubleClick);
+ delete aWindow.shrinkToLetterbox;
aWindow.removeEventListener("sizemodechange", windowResizeHandler);
}
+
_handleDOMWindowOpened(win) {
let self = this;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/aefa5f3…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/aefa5f3…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build] Pushed new tag mb-13.0.12-build1
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed new tag mb-13.0.12-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/mb-…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.0.12-build1
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed new tag tbb-13.0.12-build1 at The Tor Project / Applications / tor-browser-build
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/tbb…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][maint-13.0] Bug 41086, 41087: Prepare Tor and Mullvad Browser Stable 13.0.12
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed to branch maint-13.0 at The Tor Project / Applications / tor-browser-build
Commits:
21242cea by Pier Angelo Vendrame at 2024-03-13T19:27:13+01:00
Bug 41086,41087: Prepare Tor and Mullvad Browser Stable 13.0.12
- - - - -
11 changed files:
- projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
- projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
- projects/browser/allowed_addons.json
- projects/browser/config
- projects/firefox-android/config
- projects/firefox/config
- projects/geckoview/config
- projects/go/config
- projects/manual/config
- projects/translation/config
- rbm.conf
Changes:
=====================================
projects/browser/Bundle-Data/Docs-MB/ChangeLog.txt
=====================================
@@ -1,3 +1,54 @@
+Mullvad Browser 13.0.12 - March 19 2024
+ * All Platforms
+ * Updated Firefox to 115.9.0esr
+ * Updated mullvad-browser-extension to 0.9.0
+ * Updated uBlock Origin to 1.56.0
+ * Bug 270: Mullvad support email has changed from `support(a)mullvad.net` to `support(a)mullvadvpn.net` [mullvad-browser]
+ * Bug 273: Rebase Mullvad Browser stable onto Firefox 115.9.0esr [mullvad-browser]
+ * Bug 42376: The placeholder of datetime inputs keeps being localized when spoof English is on [tor-browser]
+ * Bug 42378: spoof english + htmlform <details> can leak app language [tor-browser]
+ * Windows
+ * Bug 42377: Hidden fonts are automatically added to the allow list [tor-browser]
+ * Build System
+ * All Platforms
+ * Bug 41085: kick_devmole_build script prints wrong URL for Mullvad's build hashes [tor-browser-build]
+ * Bug 41097: authenticode-timestamping.sh fails to run again because tmp-timestamp already exists [tor-browser-build]
+ * Bug 41102: src archive does not match likely due to mismatched xz-utils version [tor-browser-build]
+
+Mullvad Browser 13.5a5 - February 27 2024
+ * All Platforms
+ * Updated Firefox to 115.8.0esr
+ * Updated uBlock Origin to 1.56.0
+ * Updated mullvad-browser-extension to 0.8.5
+ * Bug 262: Mouse-over long links causes the browser element to re-center relative to width of status tooltip [mullvad-browser]
+ * Bug 268: Rebase Mullvad Browser Alpha onto 115.8.0esr [mullvad-browser]
+ * Bug 42376: The placeholder of datetime inputs keeps being localized when spoof English is on [tor-browser]
+ * Bug 42378: spoof english + htmlform <details> can leak app language [tor-browser]
+ * Bug 42387: Visual noise in 13.5a4 letterboxing [tor-browser]
+ * Bug 42389: Betterboxing: gradient is never shown [tor-browser]
+ * Bug 42390: Betterboxing: make the decorator border disappear when the corners are flat [tor-browser]
+ * Bug 42397: Change RFP-spoofed Timezone from UTC to a real-world, less discriminable one [tor-browser]
+ * Bug 42398: Include Alpha and Nightly in MOZ_APP_DISPLAYNAME (and possibly in other places) [tor-browser]
+ * Bug 42423: Move temporary Lox Fluent strings to new file [tor-browser]
+ * macOS
+ * Bug 40569: Create build-specific installer for macOS [tor-browser-build]
+ * Build System
+ * All Platforms
+ * Bug 41038: Add RPM dependencies to README [tor-browser-build]
+ * Bug 41067: Use Capture::Tiny instead of IO::CaptureOutput [tor-browser-build]
+ * Bug 41072: Set correct updater_url for Mullvad Browser nightly builds [tor-browser-build]
+ * Bug 41081: Update detailsURL in tools/signing/nightly/update-responses-base-config.yml [tor-browser-build]
+ * Bug 41085: kick_devmole_build script prints wrong URL for Mullvad's build hashes [tor-browser-build]
+ * Bug 40068: Switch from IO::CaptureOutput to Capture::Tiny [rbm]
+ * Bug 40069: Make stdout and stderr utf8 [rbm]
+ * Bug 40071: Add an option to create zip files using 7z [rbm]
+ * Bug 40072: Move capture_exec to a separate module [rbm]
+ * Windows
+ * Bug 41076: Include the ShellLink plugin in NSIS [tor-browser-build]
+ * Bug 41077: Draft the new installer for Mullvad Browser [tor-browser-build]
+ * macOS
+ * Bug 41084: $app_bundle is missing the final .app in projects/firefox/build [tor-browser-build]
+
Mullvad Browser 13.0.10 - February 20 2024
* All Platforms
* Updated Firefox to 115.8.0esr
@@ -49,6 +100,7 @@ Mullvad Browser 13.0.9 - January 23 2024
* Bug 41043: Create script to push build requests to Mullvad build servers [tor-browser-build]
* Bug 41056: Make it possible to use templates in var/torbrowser_incremental_from [tor-browser-build]
* Bug 41059: Update keyring/torbrowser.gpg with updated key [tor-browser-build]
+ * Bug 40067: Use --no-verbose wget option when not running in a terminal [rbm]
* Windows + macOS
* Bug 41016: Switch from bullseye to bookworm for desktop platforms [tor-browser-build]
* Windows
=====================================
projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
=====================================
@@ -1,3 +1,22 @@
+Tor Browser 13.0.12 - March 19 2024
+ * All Platforms
+ * Bug 42376: The placeholder of datetime inputs keeps being localized when spoof English is on [tor-browser]
+ * Bug 42378: spoof english + htmlform <details> can leak app language [tor-browser]
+ * Bug 42444: Remove the "Prioritize .onion sites when known" option [tor-browser]
+ * Bug 42448: Rebase Tor Browser stable onto Firefox 115.9.0esr [tor-browser]
+ * Bug 42459: Add startpage onion service to list of search providers [tor-browser]
+ * Windows + macOS + Linux
+ * Updated Firefox to 115.9.0esr
+ * Android
+ * Updated GeckoView to 115.9.0esr
+ * Bug 42407: TTP-03-010 WP3: Potential phishing [tor-browser]
+ * Windows
+ * Bug 42377: Hidden fonts are automatically added to the allow list [tor-browser]
+ * Build System
+ * All Platforms
+ * Updated Go to 1.21.8
+ * Bug 41102: src archive does not match likely due to mismatched xz-utils version [tor-browser-build]
+
Tor Browser 13.0.11 - March 06 2024
* All Platforms
* Bug 42435: Update moat domain fronting configuration [tor-browser]
=====================================
projects/browser/allowed_addons.json
=====================================
@@ -17,7 +17,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/34/9734/13299734/13299734.pn…"
}
],
- "average_daily_users": 1156101,
+ "average_daily_users": 1159924,
"categories": {
"firefox": [
"web-development",
@@ -218,10 +218,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5383,
- "bayesian_average": 4.537199119336593,
- "count": 5475,
- "text_count": 1727
+ "average": 4.5365,
+ "bayesian_average": 4.535401175675945,
+ "count": 5491,
+ "text_count": 1733
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/",
"requires_payment": false,
@@ -318,7 +318,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/versions/",
- "weekly_downloads": 23635
+ "weekly_downloads": 23726
},
"notes": null
},
@@ -334,7 +334,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/56/7656/6937656/6937656.png?…"
}
],
- "average_daily_users": 267126,
+ "average_daily_users": 267400,
"categories": {
"firefox": [
"privacy-security"
@@ -547,9 +547,9 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7977,
- "bayesian_average": 4.793130609775481,
- "count": 1409,
+ "average": 4.7982,
+ "bayesian_average": 4.793635080149146,
+ "count": 1412,
"text_count": 254
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/",
@@ -635,7 +635,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/versions/",
- "weekly_downloads": 3273
+ "weekly_downloads": 3038
},
"notes": null
},
@@ -651,7 +651,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/73/4073/5474073/5474073.png?…"
}
],
- "average_daily_users": 1233259,
+ "average_daily_users": 1235058,
"categories": {
"firefox": [
"privacy-security"
@@ -1170,9 +1170,9 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7974,
- "bayesian_average": 4.79471376173004,
- "count": 2399,
+ "average": 4.7979,
+ "bayesian_average": 4.795218830409015,
+ "count": 2405,
"text_count": 457
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/",
@@ -1197,7 +1197,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/versions/",
- "weekly_downloads": 20288
+ "weekly_downloads": 19773
},
"notes": null
},
@@ -1213,7 +1213,7 @@
"picture_url": null
}
],
- "average_daily_users": 7782292,
+ "average_daily_users": 7806685,
"categories": {
"firefox": [
"privacy-security"
@@ -1379,7 +1379,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2024-03-04T01:35:20Z",
+ "last_updated": "2024-03-11T17:35:25Z",
"name": {
"ar": "uBlock Origin",
"bg": "uBlock Origin",
@@ -1524,10 +1524,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7889,
- "bayesian_average": 4.78852910141135,
- "count": 17348,
- "text_count": 4523
+ "average": 4.7893,
+ "bayesian_average": 4.78892933338675,
+ "count": 17378,
+ "text_count": 4532
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/",
"requires_payment": false,
@@ -1590,7 +1590,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/versions/",
- "weekly_downloads": 164561
+ "weekly_downloads": 159165
},
"notes": null
},
@@ -1606,7 +1606,7 @@
"picture_url": null
}
],
- "average_daily_users": 178548,
+ "average_daily_users": 178990,
"categories": {
"firefox": [
"photos-music-videos",
@@ -1702,10 +1702,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4478,
- "bayesian_average": 4.442927736258425,
- "count": 1206,
- "text_count": 462
+ "average": 4.4476,
+ "bayesian_average": 4.442740710153104,
+ "count": 1211,
+ "text_count": 466
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…",
"requires_payment": false,
@@ -1727,7 +1727,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/ve…",
- "weekly_downloads": 351
+ "weekly_downloads": 350
},
"notes": null
},
@@ -1743,7 +1743,7 @@
"picture_url": null
}
],
- "average_daily_users": 78821,
+ "average_daily_users": 78537,
"categories": {
"firefox": [
"privacy-security",
@@ -1853,10 +1853,10 @@
],
"promoted": null,
"ratings": {
- "average": 4.3787,
- "bayesian_average": 4.364570736907983,
- "count": 404,
- "text_count": 113
+ "average": 4.3753,
+ "bayesian_average": 4.3611016639271964,
+ "count": 405,
+ "text_count": 114
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/reviews/",
"requires_payment": false,
@@ -1878,7 +1878,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/versions/",
- "weekly_downloads": 1812
+ "weekly_downloads": 1672
},
"notes": null
},
@@ -1894,7 +1894,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/64/9064/12929064/12929064.pn…"
}
],
- "average_daily_users": 307636,
+ "average_daily_users": 308991,
"categories": {
"firefox": [
"search-tools",
@@ -2111,10 +2111,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.6443,
- "bayesian_average": 4.639930009440798,
- "count": 1417,
- "text_count": 274
+ "average": 4.6435,
+ "bayesian_average": 4.639139586780839,
+ "count": 1422,
+ "text_count": 276
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/",
"requires_payment": false,
@@ -2137,7 +2137,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/versions/",
- "weekly_downloads": 5954
+ "weekly_downloads": 5686
},
"notes": null
},
@@ -2160,7 +2160,7 @@
"picture_url": null
}
],
- "average_daily_users": 124882,
+ "average_daily_users": 125273,
"categories": {
"firefox": [
"search-tools",
@@ -2441,9 +2441,9 @@
"category": "recommended"
},
"ratings": {
- "average": 4.3743,
- "bayesian_average": 4.369989496152543,
- "count": 1336,
+ "average": 4.3752,
+ "bayesian_average": 4.37089257689689,
+ "count": 1338,
"text_count": 378
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/",
@@ -2464,7 +2464,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/versions/",
- "weekly_downloads": 44
+ "weekly_downloads": 22
},
"notes": null
},
@@ -2480,7 +2480,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/43/0143/143/143.png?modified…"
}
],
- "average_daily_users": 309662,
+ "average_daily_users": 309704,
"categories": {
"firefox": [
"web-development",
@@ -2667,10 +2667,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.396,
- "bayesian_average": 4.393343568847512,
- "count": 2182,
- "text_count": 840
+ "average": 4.3973,
+ "bayesian_average": 4.394644655920732,
+ "count": 2187,
+ "text_count": 841
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/",
"requires_payment": false,
@@ -2714,7 +2714,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/versions/",
- "weekly_downloads": 7462
+ "weekly_downloads": 7679
},
"notes": null
},
@@ -2730,7 +2730,7 @@
"picture_url": null
}
],
- "average_daily_users": 163018,
+ "average_daily_users": 163565,
"categories": {
"firefox": [
"photos-music-videos",
@@ -2839,10 +2839,10 @@
"category": "recommended"
},
"ratings": {
- "average": 3.8731,
- "bayesian_average": 3.8690686700002854,
- "count": 1229,
- "text_count": 445
+ "average": 3.8716,
+ "bayesian_average": 3.867573249528433,
+ "count": 1231,
+ "text_count": 446
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…",
"requires_payment": false,
@@ -2861,7 +2861,7 @@
"type": "extension",
"url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/",
"versions_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/vers…",
- "weekly_downloads": 2750
+ "weekly_downloads": 2672
},
"notes": null
}
=====================================
projects/browser/config
=====================================
@@ -99,13 +99,13 @@ input_files:
- URL: https://addons.mozilla.org/firefox/downloads/file/4206186/noscript-11.4.29.…
name: noscript
sha256sum: 05b98840b05ef2acbac333543e4b7c3d40fee2ce5fb4e29260b05e2ff6fe24cd
- - URL: https://addons.mozilla.org/firefox/downloads/file/4216633/ublock_origin-1.5…
+ - URL: https://addons.mozilla.org/firefox/downloads/file/4237670/ublock_origin-1.5…
name: ublock-origin
- sha256sum: a02ca1d32737c3437f97553e5caaead6479a66ac1f8ff3b84a06cfa6bb0c7647
+ sha256sum: f5fbeeac511ca4e10a74723413727fda8e6f9236c726d16eb54ade1fbe7be5be
enable: '[% c("var/mullvad-browser") %]'
- - URL: https://cdn.mullvad.net/browser-extension/0.8.5/mullvad-browser-extension-0…
+ - URL: https://cdn.mullvad.net/browser-extension/0.9.0/mullvad-browser-extension-0…
name: mullvad-extension
- sha256sum: b8208cc73d3c3c87342b25367b1a5fa330cb528f3213a4c4de30512f1662ff45
+ sha256sum: 65bf235aa1015054ae0a54a40c5a663e67fe1d0f0799e7b4726f98cccc7f3eab
enable: '[% c("var/mullvad-browser") %]'
- filename: 'gtk3-settings.ini'
enable: '[% c("var/linux") %]'
=====================================
projects/firefox-android/config
=====================================
@@ -16,7 +16,7 @@ container:
var:
fenix_version: 115.2.1
browser_branch: 13.0-1
- browser_build: 14
+ browser_build: 15
variant: Beta
# This should be updated when the list of gradle dependencies is changed.
gradle_dependencies_version: 1
=====================================
projects/firefox/config
=====================================
@@ -14,7 +14,7 @@ container:
use_container: 1
var:
- firefox_platform_version: 115.8.0
+ firefox_platform_version: 115.9.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
browser_series: '13.0'
browser_branch: '[% c("var/browser_series") %]-1'
=====================================
projects/geckoview/config
=====================================
@@ -14,9 +14,9 @@ container:
use_container: 1
var:
- geckoview_version: 115.8.0esr
+ geckoview_version: 115.9.0esr
browser_branch: 13.0-1
- browser_build: 1
+ browser_build: 2
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
git_commit: '[% exec("git rev-parse HEAD") %]'
=====================================
projects/go/config
=====================================
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: '[% IF c("var/use_go_1_20") %]1.20.14[% ELSE %]1.21.7[% END %]'
+version: '[% IF c("var/use_go_1_20") %]1.20.14[% ELSE %]1.21.8[% END %]'
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
container:
use_container: 1
@@ -121,7 +121,7 @@ input_files:
enable: '[% ! c("var/linux") %]'
- URL: 'https://go.dev/dl/go[% c("version") %].src.tar.gz'
name: go
- sha256sum: 00197ab20f33813832bff62fd93cca1c42a08cc689a32a6672ca49591959bff6
+ sha256sum: dc806cf75a87e1414b5b4c3dcb9dd3e9cc98f4cfccec42b7af617d5a658a3c43
enable: '[% !c("var/use_go_1_20") %]'
- URL: 'https://go.dev/dl/go[% c("version") %].src.tar.gz'
name: go
=====================================
projects/manual/config
=====================================
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
# To update, see doc/how-to-update-the-manual.txt
# Remember to update also the package's hash, with the version!
-version: 148707
+version: 150100
filename: 'manual-[% c("version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
container:
use_container: 1
@@ -23,6 +23,6 @@ input_files:
- project: container-image
- URL: 'https://build-sources.tbb.torproject.org/manual_[% c("version") %].zip'
name: manual
- sha256sum: a765497eaec3a926823812930a78d25048a1df0c4d765b53e87888db09f5d8d8
+ sha256sum: 039bdb04f97b803f0db2f12a6ba0a03a2091e8d8bd794e178c297e571f04eb7f
- filename: packagemanual.py
name: package_script
=====================================
projects/translation/config
=====================================
@@ -12,13 +12,13 @@ compress_tar: 'gz'
steps:
base-browser:
base-browser: '[% INCLUDE build %]'
- git_hash: 16211a4b8524d71525f0ea73c07771c634132b30
+ git_hash: 595dcd5efe752cddc1b6ba47082ad9f5f4917fee
targets:
nightly:
git_hash: 'base-browser'
tor-browser:
tor-browser: '[% INCLUDE build %]'
- git_hash: 012f643d2d6b04ebf868bf62cdb7ad5b727734f5
+ git_hash: 9b6914a85be61ad6975e8bf483d4484d39bf5f7a
targets:
nightly:
git_hash: 'tor-browser'
@@ -32,7 +32,7 @@ steps:
fenix: '[% INCLUDE build %]'
# We need to bump the commit before releasing but just pointing to a branch
# might cause too much rebuidling of the Firefox part.
- git_hash: e7d263c7ee81d7d9db3410ca880b1aeb107ef784
+ git_hash: 7374fbc72d2c37a4d5354447dec3b5c543fd0380
compress_tar: 'zst'
targets:
nightly:
=====================================
rbm.conf
=====================================
@@ -73,13 +73,12 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '13.0.11'
+ torbrowser_version: '13.0.12'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- # 13.0.11 is Tor Browser-only
+ - '[% IF c("var/tor-browser") %]13.0.11[% END %]'
- '13.0.10'
- '13.0.9'
- - '[% IF c("var/tor-browser") %]13.0.8[% END %]'
- '[% IF c("var/mullvad-browser") %]13.0.7[% END %]'
updater_enabled: 1
build_mar: 1
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/2…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/2…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/firefox-android] Pushed new tag firefox-android-115.2.1-13.0-1-build15
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed new tag firefox-android-115.2.1-13.0-1-build15 at The Tor Project / Applications / firefox-android
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/tree/firef…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.9.0esr-13.0-1-build2
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed new tag tor-browser-115.9.0esr-13.0-1-build2 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-115.9.0esr-13.0-1-build2
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed new tag mullvad-browser-115.9.0esr-13.0-1-build2 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
769fd867 by Dan Ballard at 2024-03-13T19:08:24+00:00
fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 42459: Add Startpage Onion search provider
- - - - -
4 changed files:
- + browser/components/search/extensions/startpage-onion/favicon.png
- + browser/components/search/extensions/startpage-onion/manifest.json
- tbb-tests/browser_tor_omnibox.js
- toolkit/components/search/SearchService.sys.mjs
Changes:
=====================================
browser/components/search/extensions/startpage-onion/favicon.png
=====================================
Binary files /dev/null and b/browser/components/search/extensions/startpage-onion/favicon.png differ
=====================================
browser/components/search/extensions/startpage-onion/manifest.json
=====================================
@@ -0,0 +1,26 @@
+{
+ "name": "StartpageOnion",
+ "description": "Startpage Onion",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "startpage-onion(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.png"
+ },
+ "web_accessible_resources": [
+ "favicon.png"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "StartpageOnion",
+ "search_url": "http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…",
+ "search_form": "http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…",
+ "search_url_post_params": "q={searchTerms}"
+ }
+ }
+}
=====================================
tbb-tests/browser_tor_omnibox.js
=====================================
@@ -17,7 +17,8 @@ add_task(async function() {
is(engineIDs[3], "blockchair", "Blockchair is fourth search engine");
is(engineIDs[4], "ddg-onion", "Duck Duck Go Onion is fifth search engine");
is(engineIDs[5], "startpage", "Startpage is sixth search engine");
- is(engineIDs[6], "twitter", "Twitter is sixth search engine");
- is(engineIDs[7], "wikipedia", "Wikipedia is seventh search engine");
- is(engineIDs[8], "yahoo", "Yahoo is eighth search engine");
+ is(engineIDs[6], "startpage-onion", "Startpage Onion is the seventh search engine");
+ is(engineIDs[7], "twitter", "Twitter is eighth search engine");
+ is(engineIDs[8], "wikipedia", "Wikipedia is ninth search engine");
+ is(engineIDs[9], "yahoo", "Yahoo is tenth search engine");
});
=====================================
toolkit/components/search/SearchService.sys.mjs
=====================================
@@ -2284,9 +2284,10 @@ export class SearchService {
{ webExtension: { id: "google(a)search.mozilla.org" }, orderHint: 80 },
{ webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 70 },
{ webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 60 },
- { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 50 },
- { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 40 },
- { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 30 },
+ { webExtension: { id: "startpage-onion(a)search.mozilla.org" }, orderHint: 50 },
+ { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 40 },
+ { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 30 },
+ { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 20 },
];
for (let e of engines) {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/769fd86…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/769fd86…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by richard (@richard) 13 Mar '24
by richard (@richard) 13 Mar '24
13 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
788a92e2 by Dan Ballard at 2024-03-13T11:51:50-07:00
fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 42459: Add Startpage Onion search provider
- - - - -
4 changed files:
- + browser/components/search/extensions/startpage-onion/favicon.png
- + browser/components/search/extensions/startpage-onion/manifest.json
- tbb-tests/browser_tor_omnibox.js
- toolkit/components/search/SearchService.sys.mjs
Changes:
=====================================
browser/components/search/extensions/startpage-onion/favicon.png
=====================================
Binary files /dev/null and b/browser/components/search/extensions/startpage-onion/favicon.png differ
=====================================
browser/components/search/extensions/startpage-onion/manifest.json
=====================================
@@ -0,0 +1,26 @@
+{
+ "name": "StartpageOnion",
+ "description": "Startpage Onion",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "startpage-onion(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.png"
+ },
+ "web_accessible_resources": [
+ "favicon.png"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "StartpageOnion",
+ "search_url": "http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…",
+ "search_form": "http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…",
+ "search_url_post_params": "q={searchTerms}"
+ }
+ }
+}
=====================================
tbb-tests/browser_tor_omnibox.js
=====================================
@@ -17,7 +17,8 @@ add_task(async function() {
is(engineIDs[3], "blockchair", "Blockchair is fourth search engine");
is(engineIDs[4], "ddg-onion", "Duck Duck Go Onion is fifth search engine");
is(engineIDs[5], "startpage", "Startpage is sixth search engine");
- is(engineIDs[6], "twitter", "Twitter is sixth search engine");
- is(engineIDs[7], "wikipedia", "Wikipedia is seventh search engine");
- is(engineIDs[8], "yahoo", "Yahoo is eighth search engine");
+ is(engineIDs[6], "startpage-onion", "Startpage Onion is the seventh search engine");
+ is(engineIDs[7], "twitter", "Twitter is eighth search engine");
+ is(engineIDs[8], "wikipedia", "Wikipedia is ninth search engine");
+ is(engineIDs[9], "yahoo", "Yahoo is tenth search engine");
});
=====================================
toolkit/components/search/SearchService.sys.mjs
=====================================
@@ -2284,9 +2284,10 @@ export class SearchService {
{ webExtension: { id: "google(a)search.mozilla.org" }, orderHint: 80 },
{ webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 70 },
{ webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 60 },
- { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 50 },
- { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 40 },
- { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 30 },
+ { webExtension: { id: "startpage-onion(a)search.mozilla.org" }, orderHint: 50 },
+ { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 40 },
+ { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 30 },
+ { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 20 },
];
for (let e of engines) {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/788a92e…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/788a92e…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.0-1] fixup! Bug 40009: Change the default search engines
by Dan Ballard (@dan) 13 Mar '24
by Dan Ballard (@dan) 13 Mar '24
13 Mar '24
Dan Ballard pushed to branch firefox-android-115.2.1-13.0-1 at The Tor Project / Applications / firefox-android
Commits:
f937a405 by Dan Ballard at 2024-03-13T11:28:23-07:00
fixup! Bug 40009: Change the default search engines
Bug 42459: Add Starpage Onion to list of search providers
- - - - -
3 changed files:
- android-components/components/feature/search/src/main/assets/search/list.json
- + android-components/components/feature/search/src/main/assets/searchplugins/startpage-onion.xml
- android-components/components/feature/search/src/main/java/mozilla/components/feature/search/storage/SearchEngineReader.kt
Changes:
=====================================
android-components/components/feature/search/src/main/assets/search/list.json
=====================================
@@ -1,9 +1,9 @@
{
"default": {
"searchDefault": "DuckDuckGo",
- "searchOrder": ["DuckDuckGo", "YouTube", "Google", "DuckDuckGoOnion", "Startpage", "Twitter", "Wikipedia", "Yahoo"],
+ "searchOrder": ["DuckDuckGo", "YouTube", "Google", "DuckDuckGoOnion", "Startpage", "StartpageOnion", "Twitter", "Wikipedia", "Yahoo"],
"visibleDefaultEngines": [
- "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage", "startpage-onion"
]
},
"regionOverrides": {
=====================================
android-components/components/feature/search/src/main/assets/searchplugins/startpage-onion.xml
=====================================
@@ -0,0 +1,11 @@
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>StartpageOnion</ShortName>
+<Description>Start Page Onion</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAASsUlEQVR42qSXXWoCQRCElzxKTiOeSMBLhuAZgscQAR/dXU2aBfnggykaIpTTU9aU3fO3OtXro7C1y/LcFY7zvH4Xbsuy/lZ/wzwTgxWIG2rpqxXy+L4u51+89G2soe/vft6rPRdO6/r6fM/3hndQHx5K+IORk9yM3sUoebSMYTLQo8EPrvoFPODXOIH4AHjGhlg52ROu4AUd1EMsr0thzyLUqwT7Iq8qhsJVcNgNWhgVKA06ChfgKdq8NZ4QeBYZvTSatKQJ34V24HMtHLYFeDxen/XBxRP+HlwIhVmjogQKt6fjcVs69RlPzoAxWUMtLDy8a8BLebj+MHa7bXZTdU7hDvUJsMY8eiF4tjR4DxEW2SfMnj6VQHXJX2jw8jxO9XYOiScT0DqSGXnX+JnSf3ZYj681juUvfS//AYfn11TB3XeWJ9JHzn34NRz3yNPCA1090vmaCt72NWfPkW94FihP8Z7n2+RdTCuT/NNS0A7KC5fAjst5mnfuLt65CT1PanHN8PYyPw0mV6tMrCNtTXpgd+KwCI77z5LC6GpreMKHuttXkjFx/FKy8P04JIPGY80L0sJ3Y+Mf9dlTdcf/EGzwqXNcQG/HEftEdTzQ3/94NQsey2EYCPfHHjMzMzMzMzMzMzMzM1HsOyvqKoo+PW+PJFnPTbPJBjyZcfou6JNnQe89DHrzzi+7HfT+Qyuzd9ReIIZDRmKsIpup0T+zLqxbgAJ0pDxQu5yj88GEB3xa/+6DoDv2BZ2+QLT3cNF2vUWbdRZt2F60gVk7860svus1TNTq7tof9N4D3OEwaT+A1QSqD9HnQo/7Po+mAk5+EmPOhAL7gPYofJ+/DLphW9Dew0SbdLJJjlZOesP4HBcg95OFsb/tO0J04/agL16FPNQdRsT/Mws8H9o4QpgZFbUPM/8g4br+e9ux0xaUO1zrrIH9/olZhHQRnbNU9MGjAJTQ27EY3b4+YshyWVXBGJ51Ds/McHy28uZt0KVr4iQ1bFc3+eWONj+Wt4tl+bsYBeSr5uUtuor1ZX3CjgQm5pIDWKg/PMwLDp28w6wcfumUz9s7fzlojyEZlJRw0y61EnrA2gMEpX8Hz10Hip67mOM/CsMMSsj3oYi1D58thRNClK10cuKsBdZtDdrU4KadDyMMSXFn+3W5vvW9ZnPQr19rwoVzsFKmt0LikSGIGmfOy8KkrM/Zws+fg85eInFnlvCSQA1ObgYl7GvFOuaLTpoj+ukzirT6wocjQtnnqEhoKHcCUIP2A2Hn06egMxfahLjwYZPO5clzUk7PXB/aHTdD9MNHTE/TJGZ1kOl5rNGMUuiQimCYYeNbsLjzvwSdu1Q8ePgPxsxq8hzRj59C1WtRj/H5Io2FGB2edP3IORHKpm7aEcrBI7yk0FBCk/1GS+qY385ftNiG+Va/9MmkDgaXrBE+E6LhbvYXgJgVlpcLkIUgYppPzdL3F6+GUlT9qSWUlNkRl2tZhvXLhWzUQfTw8aB8fuFuBtjxoKt8Zis4xPyQ4nvgmKMx2ldBWGU7Pv4ahx88TnTBCtEtu4LuPRR03+Ggm3cGnb9cdMBo0eZd0ogQiBAf5lr3EH36HFiKn1rwYco3oqGcH/EvpqO/dK3HcJLJycptRw4cI7rnUEwn5JGZ+0+f2YKYtoC+KvgTZwv3xT7Dj79gWF5kDaO48G/6Y/nDx0FbdkvDXDn8gf10HiB65GSwwxvZCV/GR3v3Pi5Eq+65MmaxZpZS3cYdRC9c9oQk53KYFdX71i5NR3up55Tzkx907jJh9tGuNiuZOEv05eua4W/mvIvZ1J5Ds2hz/Vjf4O7rV0wdcyqG56nSTZtZ4Sk4Fh15hxEODLdzAcQwJBoXQWzRTKxB+Hqsg9+9fhPsfLBJTvqGhW9nJnV+446il6/57TNT+n2/AMWbVCIRxtCwYXsAeGH2UtLF6Qts8pN2mNK6H0Tl59TLV8HuE0DUKfrlppg+XxzqmZW7F/e+cC2q5UX42bh0v5HiCqDU+gwXw273do3f+f6tu3YmVBN7bXqKRRDMh8cQ/4gFBWVhFQj3acXt8DUG47AOKf1fdVWvXPcv25l1oGbBOhujGIyRaL8JNKZ+Ckknz1K/3L4v0DwDCHJui9JFKMvsSjANdVcEjZ8pGI7R5wVhsZjVy8Lckm49BmcCDZhYujlMd/gQYv0hbFY/A/zP6PikT/3pC6qF+oUr3F/1jwJ8ArH7YHD/nzQS7ACP6QnOhrJeqgRXeSqCuS03wrdkvYaWOyoNccrViHYbFJNgHMKQWUU4oPcYHXbOGDvjSU9yTZEwmDKOmVL6+jrf/f5OT/6GP3nML+V/eFicQ5OxGEsJ2GCcmy57VouWfJKIWSEL4sHVVqpmk2aX8JOkPtLUdZa+KFMTDD98PvlwxYtWMLTQd/gMSc+eB+PQJY56Zoq1FuxAH39u2/eGShB57eaf5Hf81H46pwVdMnNalS9rbt+LDCiKK/tlAVaWHz6RsS341DHzcedxOde3BOGVG/W3SI/99pmRVRdimFb2GUn8u+u34gKkjMIwt1M/UdMGY6eLzlosumiV6Ir1P5s7B5hLliyOdzbevNh+tm3btm3btm3btm1LY+OzdCe1de5MZTv5Tf1zUuPkbJ+tru66X3fX/wivniqSSOTlYE1PyjeuwXheiykoCsH9wMu8pEoYYC4aEQ0e8yY+9+q08NnX01MIp0ydZoLWYcSR95OEsrJrdT0arhHz3GtXdCJxIrcXHHSZr1DXDNCVkKsdA2E9PQ7eoSryA9GZgCIzW3hYkRmX9f1wu6qCC5BOZxTrymv1uK4VK78n749cV/d4hcRcfAWebamznI10bZa37pc8DbAMD2I6DpHAVx+n19K/IUEQ3A0+oZItzMgE8LXxxPmMzOn8HdYv9/cPhocffznc99DzLvrks+/d9+ccV+DKCAUa+GKFcaS2OBYQBpfY5i4DR8JhOn7z3W9hwSU3/T8ttVk8GtX+f42/6bZHZfql1mzgtJSyz6gSW0uVn2KcQovnBwaG4hc5ZEeupbWlIrI1Tz/nOnuwbnrz7U+dmd/ZsldVvI5rKiaqqtLMhswM7unpD1OmtIU//xoR3nzns3D/wy+ES668Mxx3ymVhrwNPC9vtekzYfLtDw/GnXj7jJeisPPKqfIrz/x0+Jiy54jbp4aavPcsvscLWYeSo8bi/r8CwUcRXOf96Im4dZkm8Eb+avQ88PWy01UFhmVW3T9u89scl2rR5XGSZLcIPP/3JFwCVUkGTjel8nBNOuyLBS1ofVP+tW+14RPRtDQAedUW+zv3RcoJpKQ4PKOHmsy9+dGzv2tcWae+DTrdd4NCusAsSyTov24GLLrdldv36eDp3xbX3qixoVahd2DkAFTIiDCh8LT29/fHrP5B/bOKXrPPTzy209Gbh3gefUxnFAo40/++wMWG19fYA1Ch+kWW3DN/98EfhuuV8lSu71BXsNN5uu+sJbPMZfyQgKG37JSI+v/Xu5zLVUfth+PLGjp0UNtv20Pp6aU1AkfGJdtj92LQjeX+qoq48KkKkESDImwGtgyITJ7WEldfeNVDgaThaZpXtw2tvfCyEWm6c5v8//46OQv4wrOehx596TbhecohgBNvJrVEmLYg3oBvaVRt1wy0PA1cJSaTFltsqXHPDA6GjozvdU6m3GLcv99U3PgprbLBn0cNfd5N9Q2dnj1cbEy0PRF8j3AdaEOFFGxEMuU2OKui6m+6XtnWiuvED7ah+tK/3hZffM03E7Sf6/Y9h4egTL4kYvsXMNBwX/+CjL2r4peVv5PNr6TFHgQZ4Pefl1z4IC0c1068VcXesE7/Ii6+4M3z48TfRtd0eY7R9sdpmIPTGF9Pd3dfU1Z9+7q1w4OHnmPDE9Xo9rtXV1ev4u43g/3Jfk3P5VMq6TbzOXKPFe9LpV+XwX42Dt6O9TNNoNtrywKadsdJau8w4J65z8kZPPvNGifYieuGBpMOxypRrQtDQ7503OFpaOurCMEEPtCBqJ+DTXEAH5lPzktfacdtdjrYdBYjw18NhTLZ8I8+AjMiIloYGzv3598iw6nq7Kwjg+Owntaa5Rkzwy0igf5y8vo6GGIuYyatSTfBffPVTWGGNnYofuh9SyiHonAtvgkUu3PCe5n1FlfJYIOukI58rRDCylwDcNoKfSGJ68+iHsaU4x4jzzSLfPDz74jsCKlRigoJoldOEgIzcWunmaivJ63/7fVjYYIsDhDD2jGP3SM2K44l4zbKr7RB+/f1fqQkRkksiYezMWClJrRtw4GVIN+74CVPCwUeeaz4gPDDBzzXacocjwtSWDpEOqcbLqRLuUxXxSnPFeW7R3ui0e+jRl0wu5CJU1GyW0scmUdvCXMynhhVOOuMqC2ESZgkxSivU7ZV1qwIjfv0MNfKYiPUGXHjU6Anh5DOvNheEgJG5TwtFeuCRFx2FIcXBevBITcw06cBXLnpEO9PyGuHnX/4OZ553fdwRO88WLWj51XdsWtBX33C/CdfcLpHjS628ncWRXUaZTl/UXSKpBdFVSmjSEt9hzBG6knx49MlXw0FHnGMaE2AEcFTj7YHtvNcJ4a77ngmjx0y0+zV9SSeefmWaU6ckzDFWW8sUBvNrAT5EwoKI0tGDUB+vdDWkL/9Fa0j+fv/JirYv0FJJLrv6rhg/vqIpvPc95MxwyFHnxfjy5eGiy28P9zzwbPjgo6/DxIkthtv4LS2tHdHQOrrYCDziuAvjixwU8V+k9Od6XUvNsYJ7OePnAP5jYeNL++eoOeX8sOFjw6rr7lYCZwZhFmTyuKYBv+R1UJ7SWTfqED4RGmNaZcs7+HROjj/V0Tyqiy+/FbQtusrJW8Tuo0++FXBcUiNmvxVBeboZSMiMwLgPhijg+VKyaY8Y5xg9liYf6vYHKckVGnRrb7yPyRZHdjXX5zh/byXaxIu8HPq3Ne47Glxwjib/fBPKpuMXq6f7HnyGxSPU+p4SWxWU123jncaa7p/DOSKQzW1NaOQHoRyLbW1dFnifadSMWhENtmtufAAQ44BDPAcVlHcGxlU3cu4m3WNI3F82T2XuDs/z9w8fOc7ixgUu8k0t8mYZHFifMezcruZvNb6iDeDpuY86L4dA4rieXwo7es7Hn34XFl9ha48qijkWmbOcIynj/BVA6QXMVL8FEZ5YcOB/4JxDyJKalS6Q0AaUJYTBhV2DIuE23zTsus9JseivB+s7C0EAs5Wjr40YU5oOrhUE2CCv0wKFLUIIMMPt1LOvhbvaa6hdeNntdj+t6fh7RyOoLoUaH65uAa9lhCPcV0wajtrau8Iue51Q5rSzIM4L78yu1ERZjCAgiEV1frVMQIvISypIB5S5TiOiUF5ro73toaqEACOMr7jmzpYyI7S4hlML0lADnpR7AfpFcA7y8OXa2gDzw6qVJC250rYlLnFLy+ffR/iRNRYVBB21IglPumM4eKTtOQS00/gp15osM441DTo0anTnvU/L6hz+Nn6oFaFE14SRz5UrqRqwEkNGV63r++sIlmVFnHHu9ZmcosQz7+jaGx8ocEcrCNK8hgU97pzbKLi3V/PS45YfZComv/ichpTqG8QajvHK0ZI3TRaYjmt1hTphhu3RtJMP17pc3BoqLOfUckUJP9wRzeqbP/4cAYPV7YpOL0D4LIQhJoPzYq4ytvBScOR53T+O62Mc8z/74ocklKU8OOv8G+EJSCQgHOOV16ynAC3QOvQc/zh3jfY16XvCs/vamx+HpVfZvp7oVU/2ssicQZa7pZtu1qG3rTMArb9I8mK+XsvbxxpqL8bltVZnNjqcFmuMLR5giVvmBzrmpEvDl1//LFzw0AJVR10644x02zDhHqafSLqu6W4WvEoP1B+FKHvFHKyZqm9a2zpDX/8g1hJQU9IvqMz092swLqGkzpH3+2Kc/1lDrCnWKno+oEpbr9qq1V3FBa+/fCGDClRl37Ug/bJ1VxnhX8Muq0QQvGDbN9yQItb19CzSc8rHC3jRrAP//TGOVwUuaDWuoUT3IHUeRTQO6xWOk/BVS9jTBS9oXdzi8Pkrw0s9GKG9ZHNQFSarB6ITx7QM0vP9YVPhmsF8O3bYC3gv0y8IhPPC8ICsUBBDEvgpHYRcQ8ooDaVaNdYRQ8I15tp9PrAXcHBBt0RvDpBf8PnTGP3ndUazKrSQvHhenKv5w80X9N/4Rn4CbMgsOUCJ2w2tx3lfrdU452i+/P4U5qKdDhLPfmk0pi1Q2b84edVIU7C1RNW4q5EHYU3BE+fwmtnEGznm6Plunw+P9qwbK1f1f3Fw5Ui/iC0+G6kxr++pr/HbCCXX/WQffFVV/2lS+h/7F/vmLxBPHh7pg0gdiOpo3ki4kItly3zL+w3NRkukd+ILONgg3551eu7/AxK2F7WQPNQ+AAAAAElFTkSuQmCC</Image>
+
+<Url type="text/html" method="POST" template="http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…">
+ <Param name="q" value="{searchTerms}"/>
+</Url>
+<SearchForm>http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…</SearchForm>
+</SearchPlugin>
=====================================
android-components/components/feature/search/src/main/java/mozilla/components/feature/search/storage/SearchEngineReader.kt
=====================================
@@ -29,6 +29,9 @@ internal const val GOOGLE_ID = "google"
internal val GENERAL_SEARCH_ENGINE_IDS = setOf(
GOOGLE_ID,
"ddg",
+ "ddg-onion",
+ "startpage",
+ "startpage-onion",
"bing",
"baidu",
"ecosia",
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/f93…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/f93…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] fixup! Bug 21952: Implement Onion-Location
by ma1 (@ma1) 13 Mar '24
by ma1 (@ma1) 13 Mar '24
13 Mar '24
ma1 pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
4b69c259 by hackademix at 2024-03-13T19:21:59+01:00
fixup! Bug 21952: Implement Onion-Location
Bug 42444: Remove the "Prioritize .onion sites when known" option
- - - - -
10 changed files:
- browser/components/onionservices/OnionLocationParent.jsm
- − browser/components/onionservices/content/onionlocationPreferences.inc.xhtml
- − browser/components/onionservices/content/onionlocationPreferences.js
- browser/components/onionservices/jar.mn
- browser/components/preferences/privacy.inc.xhtml
- browser/components/preferences/privacy.js
- dom/base/Document.cpp
- mobile/android/geckoview/api.txt
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
- modules/libpref/init/StaticPrefList.yaml
Changes:
=====================================
browser/components/onionservices/OnionLocationParent.jsm
=====================================
@@ -8,8 +8,10 @@ const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
// Prefs
+
+// We keep the "prioritizeonions" name, even if obsolete, in order to
+// prevent the notification from being shown again to upgrading users.
const NOTIFICATION_PREF = "privacy.prioritizeonions.showNotification";
-const PRIORITIZE_ONIONS_PREF = "privacy.prioritizeonions.enabled";
// Element IDs
const ONIONLOCATION_BOX_ID = "onion-location-box";
@@ -23,9 +25,8 @@ const NOTIFICATION_ANCHOR_ID = "onion-location-box";
const STRING_ONION_AVAILABLE = TorStrings.onionLocation.onionAvailable;
const NOTIFICATION_CANCEL_LABEL = TorStrings.onionLocation.notNow;
const NOTIFICATION_CANCEL_ACCESSKEY = TorStrings.onionLocation.notNowAccessKey;
-const NOTIFICATION_OK_LABEL = TorStrings.onionLocation.alwaysPrioritize;
-const NOTIFICATION_OK_ACCESSKEY =
- TorStrings.onionLocation.alwaysPrioritizeAccessKey;
+const NOTIFICATION_OK_LABEL = TorStrings.onionLocation.loadOnion;
+const NOTIFICATION_OK_ACCESSKEY = TorStrings.onionLocation.loadOnionAccessKey;
const NOTIFICATION_TITLE = TorStrings.onionLocation.tryThis;
const NOTIFICATION_DESCRIPTION = TorStrings.onionLocation.description;
const NOTIFICATION_LEARN_MORE_URL =
@@ -95,9 +96,7 @@ class OnionLocationParent extends JSWindowActorParent {
label: NOTIFICATION_OK_LABEL,
accessKey: NOTIFICATION_OK_ACCESSKEY,
callback() {
- Services.prefs.setBoolPref(PRIORITIZE_ONIONS_PREF, true);
OnionLocationParent.redirect(browser);
- win.openPreferences("privacy-onionservices");
},
};
=====================================
browser/components/onionservices/content/onionlocationPreferences.inc.xhtml deleted
=====================================
@@ -1,11 +0,0 @@
-# Copyright (c) 2020, The Tor Project, Inc.
-
-<groupbox id="onionServicesGroup" data-category="panePrivacy" data-subcategory="onionservices" hidden="true">
- <label><html:h2 id="onionServicesTitle"></html:h2></label>
- <label><label class="tail-with-learn-more" id="prioritizeOnionsDesc"></label><label
- class="learnMore" is="text-link" id="onionServicesLearnMore"></label></label>
- <radiogroup id="prioritizeOnionsRadioGroup" aria-labelledby="prioritizeOnionsDesc" preference="privacy.prioritizeonions.enabled">
- <radio id="onionServicesRadioAlways" value="true"/>
- <radio id="onionServicesRadioAsk" value="false"/>
- </radiogroup>
-</groupbox>
=====================================
browser/components/onionservices/content/onionlocationPreferences.js deleted
=====================================
@@ -1,34 +0,0 @@
-// Copyright (c) 2020, The Tor Project, Inc.
-
-"use strict";
-
-ChromeUtils.defineModuleGetter(
- this,
- "TorStrings",
- "resource:///modules/TorStrings.jsm"
-);
-
-const OnionLocationPreferences = {
- init() {
- document.getElementById("onionServicesTitle").textContent =
- TorStrings.onionLocation.onionServicesTitle;
- document.getElementById("prioritizeOnionsDesc").textContent =
- TorStrings.onionLocation.prioritizeOnionsDescription;
- const learnMore = document.getElementById("onionServicesLearnMore");
- learnMore.textContent = TorStrings.onionLocation.learnMore;
- learnMore.href = TorStrings.onionLocation.learnMoreURL;
- if (TorStrings.onionLocation.learnMoreURL.startsWith("about:")) {
- learnMore.setAttribute("useoriginprincipal", "true");
- }
- document.getElementById("onionServicesRadioAlways").label =
- TorStrings.onionLocation.always;
- document.getElementById("onionServicesRadioAsk").label =
- TorStrings.onionLocation.askEverytime;
- },
-};
-
-Object.defineProperty(this, "OnionLocationPreferences", {
- value: OnionLocationPreferences,
- enumerable: true,
- writable: false,
-});
=====================================
browser/components/onionservices/jar.mn
=====================================
@@ -6,5 +6,4 @@ browser.jar:
content/browser/onionservices/onionservices.css (content/onionservices.css)
content/browser/onionservices/savedKeysDialog.js (content/savedKeysDialog.js)
content/browser/onionservices/savedKeysDialog.xhtml (content/savedKeysDialog.xhtml)
- content/browser/onionservices/onionlocationPreferences.js (content/onionlocationPreferences.js)
skin/classic/browser/onionlocation.css (content/onionlocation.css)
=====================================
browser/components/preferences/privacy.inc.xhtml
=====================================
@@ -14,8 +14,6 @@
<html:h1 data-l10n-id="privacy-header"/>
</hbox>
-#include ../onionservices/content/onionlocationPreferences.inc.xhtml
-
<!-- Tracking / Content Blocking -->
<groupbox id="trackingGroup" data-category="panePrivacy" hidden="true" aria-describedby="contentBlockingDescription" class="highlighting-group">
<label id="contentBlockingHeader"><html:h2 data-l10n-id="content-blocking-enhanced-tracking-protection"/></label>
=====================================
browser/components/preferences/privacy.js
=====================================
@@ -75,12 +75,6 @@ XPCOMUtils.defineLazyScriptGetter(
"chrome://browser/content/securitylevel/securityLevel.js"
);
-XPCOMUtils.defineLazyScriptGetter(
- this,
- ["OnionLocationPreferences"],
- "chrome://browser/content/onionservices/onionlocationPreferences.js"
-);
-
XPCOMUtils.defineLazyPreferenceGetter(
this,
"OS_AUTH_ENABLED",
@@ -167,9 +161,6 @@ Preferences.addAll([
// Do not track
{ id: "privacy.donottrackheader.enabled", type: "bool" },
- // Onion Location
- { id: "privacy.prioritizeonions.enabled", type: "bool" },
-
// Media
{ id: "media.autoplay.default", type: "int" },
@@ -349,13 +340,6 @@ var gPrivacyPane = {
});
},
- /**
- * Show the OnionLocation preferences UI
- */
- _initOnionLocation() {
- OnionLocationPreferences.init();
- },
-
/**
* Whether the prompt to restart Firefox should appear when changing the autostart pref.
*/
@@ -899,7 +883,6 @@ var gPrivacyPane = {
this._initTrackingProtectionExtensionControl();
OnionServicesAuthPreferences.init();
this._initSecurityLevel();
- this._initOnionLocation();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
=====================================
dom/base/Document.cpp
=====================================
@@ -6976,14 +6976,7 @@ void Document::SetHeaderData(nsAtom* aHeaderField, const nsAString& aData) {
nsCOMPtr<nsIURI> onionURI;
if (NS_SUCCEEDED(NS_NewURI(getter_AddRefs(onionURI), aData)) &&
IsValidOnionLocation(Document::GetDocumentURI(), onionURI)) {
- if (StaticPrefs::privacy_prioritizeonions_enabled()) {
- nsCOMPtr<nsIRefreshURI> refresher(mDocumentContainer);
- if (refresher) {
- refresher->RefreshURI(onionURI, NodePrincipal(), 0);
- }
- } else {
- mOnionLocationURI = onionURI;
- }
+ mOnionLocationURI = onionURI;
}
}
}
=====================================
mobile/android/geckoview/api.txt
=====================================
@@ -801,7 +801,6 @@ package org.mozilla.geckoview {
method public boolean getLoginAutofillEnabled();
method public boolean getPauseForDebuggerEnabled();
method public int getPreferredColorScheme();
- method public boolean getPrioritizeOnions();
method public boolean getRemoteDebuggingEnabled();
method @Nullable public GeckoRuntime getRuntime();
method @Nullable public Rect getScreenSizeOverride();
@@ -827,7 +826,6 @@ package org.mozilla.geckoview {
method public void setLocales(@Nullable String[]);
method @NonNull public GeckoRuntimeSettings setLoginAutofillEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setPreferredColorScheme(int);
- method @NonNull public GeckoRuntimeSettings setPrioritizeOnions(boolean);
method @NonNull public GeckoRuntimeSettings setRemoteDebuggingEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setSpoofEnglish(boolean);
method @NonNull public GeckoRuntimeSettings setTorSecurityLevel(int);
@@ -867,7 +865,6 @@ package org.mozilla.geckoview {
method @NonNull public GeckoRuntimeSettings.Builder locales(@Nullable String[]);
method @NonNull public GeckoRuntimeSettings.Builder loginAutofillEnabled(boolean);
method @NonNull public GeckoRuntimeSettings.Builder pauseForDebugger(boolean);
- method @NonNull public GeckoRuntimeSettings.Builder prioritizeOnions(boolean);
method @NonNull public GeckoRuntimeSettings.Builder preferredColorScheme(int);
method @NonNull public GeckoRuntimeSettings.Builder remoteDebuggingEnabled(boolean);
method @NonNull public GeckoRuntimeSettings.Builder screenSizeOverride(int, int);
=====================================
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
=====================================
@@ -477,14 +477,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
- /**
- * Sets whether the browser should prioritize .onion sites when available.
- *
- * @param flag True if we should prioritize .onion sites, false otherwise
- * @return This Builder instance.
- */
- public @NonNull Builder prioritizeOnions(final boolean flag) {
- getSettings().mPrioritizeOnions.set(flag);
return this;
}
}
@@ -538,8 +530,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
/* package */ final Pref<Integer> mSpoofEnglish = new Pref<>("privacy.spoof_english", 0);
/* package */ final Pref<Integer> mSecurityLevel =
new Pref<>("browser.security_level.security_slider", 4);
- /* package */ final Pref<Boolean> mPrioritizeOnions =
- new Pref<>("privacy.prioritizeonions.enabled", false);
/* package */ int mPreferredColorScheme = COLOR_SCHEME_SYSTEM;
@@ -1332,23 +1322,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
- /**
- * Gets whether we should prioritize .onion sites.
- *
- * @return Whether we should prioritize .onion sites.
- */
- public boolean getPrioritizeOnions() {
- return mPrioritizeOnions.get();
- }
-
- /**
- * Sets whether we should prioritize .onion sites.
- *
- * @param flag Whether we should prioritize .onion sites.
- * @return This GeckoRuntimeSettings instance.
- */
- public @NonNull GeckoRuntimeSettings setPrioritizeOnions(final boolean flag) {
- mPrioritizeOnions.commit(flag);
return this;
}
=====================================
modules/libpref/init/StaticPrefList.yaml
=====================================
@@ -13578,11 +13578,6 @@
value: ""
mirror: never
-- name: privacy.prioritizeonions.enabled
- type: RelaxedAtomicBool
- value: false
- mirror: always
-
#---------------------------------------------------------------------------
# Prefs starting with "prompts."
#---------------------------------------------------------------------------
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4b69c25…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4b69c25…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.0-1] Bug 42376: Pass the locale list when constructing l10n in datetimebox
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Mullvad Browser
Commits:
b12aff4c by Pier Angelo Vendrame at 2024-03-13T19:17:43+01:00
Bug 42376: Pass the locale list when constructing l10n in datetimebox
The datetime input is inconsistent with other inputs when using spoof
English: its placeholder is not translated, unlike the default values
and texts of all the other inputs.
- - - - -
1 changed file:
- toolkit/content/widgets/datetimebox.js
Changes:
=====================================
toolkit/content/widgets/datetimebox.js
=====================================
@@ -22,7 +22,9 @@ this.DateTimeBoxWidget = class {
// createEditFieldAndAppend() call.
this.l10n = new this.window.DOMLocalization(
["toolkit/global/datetimebox.ftl"],
- /* aSync = */ true
+ /* aSync = */ true,
+ undefined,
+ this.window.getWebExposedLocales()
);
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/b12…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/b12…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][base-browser-115.9.0esr-13.0-1] Bug 42376: Pass the locale list when constructing l10n in datetimebox
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed to branch base-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
cce16c6e by Pier Angelo Vendrame at 2024-03-13T19:17:21+01:00
Bug 42376: Pass the locale list when constructing l10n in datetimebox
The datetime input is inconsistent with other inputs when using spoof
English: its placeholder is not translated, unlike the default values
and texts of all the other inputs.
- - - - -
1 changed file:
- toolkit/content/widgets/datetimebox.js
Changes:
=====================================
toolkit/content/widgets/datetimebox.js
=====================================
@@ -22,7 +22,9 @@ this.DateTimeBoxWidget = class {
// createEditFieldAndAppend() call.
this.l10n = new this.window.DOMLocalization(
["toolkit/global/datetimebox.ftl"],
- /* aSync = */ true
+ /* aSync = */ true,
+ undefined,
+ this.window.getWebExposedLocales()
);
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cce16c6…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cce16c6…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] Bug 42376: Pass the locale list when constructing l10n in datetimebox
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
d297cb60 by Pier Angelo Vendrame at 2024-03-13T19:16:43+01:00
Bug 42376: Pass the locale list when constructing l10n in datetimebox
The datetime input is inconsistent with other inputs when using spoof
English: its placeholder is not translated, unlike the default values
and texts of all the other inputs.
- - - - -
1 changed file:
- toolkit/content/widgets/datetimebox.js
Changes:
=====================================
toolkit/content/widgets/datetimebox.js
=====================================
@@ -22,7 +22,9 @@ this.DateTimeBoxWidget = class {
// createEditFieldAndAppend() call.
this.l10n = new this.window.DOMLocalization(
["toolkit/global/datetimebox.ftl"],
- /* aSync = */ true
+ /* aSync = */ true,
+ undefined,
+ this.window.getWebExposedLocales()
);
}
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d297cb6…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d297cb6…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.0-1] fixup! Add Tor integration and UI
by ma1 (@ma1) 13 Mar '24
by ma1 (@ma1) 13 Mar '24
13 Mar '24
ma1 pushed to branch firefox-android-115.2.1-13.0-1 at The Tor Project / Applications / firefox-android
Commits:
df68d28d by hackademix at 2024-03-13T19:03:07+01:00
fixup! Add Tor integration and UI
Bug 42444: Remove the "Prioritize .onion sites when known" option
- - - - -
8 changed files:
- android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
- android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
- fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
- fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
- fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
- fenix/app/src/main/res/values/preference_keys.xml
- fenix/app/src/main/res/values/torbrowser_strings.xml
- fenix/app/src/main/res/xml/preferences.xml
Changes:
=====================================
android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
=====================================
@@ -796,9 +796,6 @@ class GeckoEngine(
localeUpdater.updateValue()
}
}
- override var prioritizeOnions: Boolean
- get() = runtime.settings.prioritizeOnions
- set(value) { runtime.settings.prioritizeOnions = value }
}.apply {
defaultSettings?.let {
this.javascriptEnabled = it.javascriptEnabled
@@ -823,7 +820,6 @@ class GeckoEngine(
this.cookieBannerHandlingDetectOnlyMode = it.cookieBannerHandlingDetectOnlyMode
this.torSecurityLevel = it.torSecurityLevel
this.spoofEnglish = it.spoofEnglish
- this.prioritizeOnions = it.prioritizeOnions
}
}
=====================================
android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
=====================================
@@ -213,7 +213,6 @@ abstract class Settings {
open var spoofEnglish: Boolean by UnsupportedSetting()
- open var prioritizeOnions: Boolean by UnsupportedSetting()
}
/**
@@ -258,7 +257,6 @@ data class DefaultSettings(
override var cookieBannerHandlingDetectOnlyMode: Boolean = false,
override var torSecurityLevel: Int = 4,
override var spoofEnglish: Boolean = false,
- override var prioritizeOnions: Boolean = false,
) : Settings()
class UnsupportedSetting<T> {
=====================================
fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt
=====================================
@@ -145,7 +145,6 @@ class Core(
.shouldShowCookieBannerReEngagementDialog(),
torSecurityLevel = context.settings().torSecurityLevel().intRepresentation,
spoofEnglish = context.settings().spoofEnglish,
- prioritizeOnions = context.settings().prioritizeOnions,
)
GeckoEngine(
=====================================
fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
=====================================
@@ -462,10 +462,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
private fun setupPreferences() {
- val prioritizeOnionsKey = getPreferenceKey(R.string.pref_key_tor_prioritize_onions)
val leakKey = getPreferenceKey(R.string.pref_key_leakcanary)
val debuggingKey = getPreferenceKey(R.string.pref_key_remote_debugging)
- val preferencePrioritizeOnions = findPreference<Preference>(prioritizeOnionsKey)
val preferenceLeakCanary = findPreference<Preference>(leakKey)
val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey)
val preferenceMakeDefaultBrowser =
@@ -484,13 +482,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
}
- preferencePrioritizeOnions?.setOnPreferenceChangeListener<Boolean> { preference, newValue ->
- preference.context.settings().preferences.edit()
- .putBoolean(preference.key, newValue).apply()
- requireComponents.core.engine.settings.prioritizeOnions = newValue
- true
- }
-
if (!Config.channel.isReleased) {
preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue ->
val isEnabled = newValue == true
=====================================
fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
=====================================
@@ -335,11 +335,6 @@ class Settings(private val appContext: Context) : PreferencesHolder {
default = false
)
- var prioritizeOnions by booleanPreference(
- appContext.getPreferenceKey(R.string.pref_key_tor_prioritize_onions),
- default = false
- )
-
var defaultSearchEngineName by stringPreference(
appContext.getPreferenceKey(R.string.pref_key_search_engine),
default = "",
=====================================
fenix/app/src/main/res/values/preference_keys.xml
=====================================
@@ -390,6 +390,4 @@
<string name="pref_key_tor_network_settings_bridges_enabled">pref_key_tor_network_settings_bridges_enabled</string>
<string name="pref_key_spoof_english" translatable="false">pref_key_spoof_english</string>
-
- <string name="pref_key_tor_prioritize_onions" translatable="false">pref_key_tor_prioritize_onions</string>
</resources>
=====================================
fenix/app/src/main/res/values/torbrowser_strings.xml
=====================================
@@ -72,7 +72,5 @@
<!-- Spoof locale to English -->
<string name="tor_spoof_english">Request English versions of web pages for enhanced privacy</string>
- <!-- Onion location -->
- <string name="preferences_tor_prioritize_onions">Prioritize .onion sites</string>
</resources>
=====================================
fenix/app/src/main/res/xml/preferences.xml
=====================================
@@ -122,11 +122,6 @@
app:iconSpaceReserved="false"
android:title="@string/preferences_tor_network_settings" />
- <SwitchPreference
- android:key="@string/pref_key_tor_prioritize_onions"
- app:iconSpaceReserved="false"
- android:title="@string/preferences_tor_prioritize_onions" />
-
<androidx.preference.Preference
android:key="@string/pref_key_tracking_protection_settings"
app:iconSpaceReserved="false"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/df6…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/df6…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] fixup! Bug 40009: Change the default search engines
by Dan Ballard (@dan) 13 Mar '24
by Dan Ballard (@dan) 13 Mar '24
13 Mar '24
Dan Ballard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android
Commits:
c53083fa by Dan Ballard at 2024-03-12T16:45:27-07:00
fixup! Bug 40009: Change the default search engines
Bug 42459: Add Starpage Onion to list of search providers
- - - - -
3 changed files:
- android-components/components/feature/search/src/main/assets/search/list.json
- + android-components/components/feature/search/src/main/assets/searchplugins/startpage-onion.xml
- android-components/components/feature/search/src/main/java/mozilla/components/feature/search/storage/SearchEngineReader.kt
Changes:
=====================================
android-components/components/feature/search/src/main/assets/search/list.json
=====================================
@@ -1,9 +1,9 @@
{
"default": {
"searchDefault": "DuckDuckGo",
- "searchOrder": ["DuckDuckGo", "DuckDuckGoOnion", "Startpage", "Wikipedia"],
+ "searchOrder": ["DuckDuckGo", "DuckDuckGoOnion", "Startpage", "StartpageOnion","Wikipedia"],
"visibleDefaultEngines": [
- "ddg", "ddg-onion", "startpage", "wikipedia"
+ "ddg", "ddg-onion", "startpage", "startpage-onion", "wikipedia"
]
},
"regionOverrides": {
=====================================
android-components/components/feature/search/src/main/assets/searchplugins/startpage-onion.xml
=====================================
@@ -0,0 +1,11 @@
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>StartpageOnion</ShortName>
+<Description>Start Page Onion</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAASsUlEQVR42qSXXWoCQRCElzxKTiOeSMBLhuAZgscQAR/dXU2aBfnggykaIpTTU9aU3fO3OtXro7C1y/LcFY7zvH4Xbsuy/lZ/wzwTgxWIG2rpqxXy+L4u51+89G2soe/vft6rPRdO6/r6fM/3hndQHx5K+IORk9yM3sUoebSMYTLQo8EPrvoFPODXOIH4AHjGhlg52ROu4AUd1EMsr0thzyLUqwT7Iq8qhsJVcNgNWhgVKA06ChfgKdq8NZ4QeBYZvTSatKQJ34V24HMtHLYFeDxen/XBxRP+HlwIhVmjogQKt6fjcVs69RlPzoAxWUMtLDy8a8BLebj+MHa7bXZTdU7hDvUJsMY8eiF4tjR4DxEW2SfMnj6VQHXJX2jw8jxO9XYOiScT0DqSGXnX+JnSf3ZYj681juUvfS//AYfn11TB3XeWJ9JHzn34NRz3yNPCA1090vmaCt72NWfPkW94FihP8Z7n2+RdTCuT/NNS0A7KC5fAjst5mnfuLt65CT1PanHN8PYyPw0mV6tMrCNtTXpgd+KwCI77z5LC6GpreMKHuttXkjFx/FKy8P04JIPGY80L0sJ3Y+Mf9dlTdcf/EGzwqXNcQG/HEftEdTzQ3/94NQsey2EYCPfHHjMzMzMzMzMzMzMzM1HsOyvqKoo+PW+PJFnPTbPJBjyZcfou6JNnQe89DHrzzi+7HfT+Qyuzd9ReIIZDRmKsIpup0T+zLqxbgAJ0pDxQu5yj88GEB3xa/+6DoDv2BZ2+QLT3cNF2vUWbdRZt2F60gVk7860svus1TNTq7tof9N4D3OEwaT+A1QSqD9HnQo/7Po+mAk5+EmPOhAL7gPYofJ+/DLphW9Dew0SbdLJJjlZOesP4HBcg95OFsb/tO0J04/agL16FPNQdRsT/Mws8H9o4QpgZFbUPM/8g4br+e9ux0xaUO1zrrIH9/olZhHQRnbNU9MGjAJTQ27EY3b4+YshyWVXBGJ51Ds/McHy28uZt0KVr4iQ1bFc3+eWONj+Wt4tl+bsYBeSr5uUtuor1ZX3CjgQm5pIDWKg/PMwLDp28w6wcfumUz9s7fzlojyEZlJRw0y61EnrA2gMEpX8Hz10Hip67mOM/CsMMSsj3oYi1D58thRNClK10cuKsBdZtDdrU4KadDyMMSXFn+3W5vvW9ZnPQr19rwoVzsFKmt0LikSGIGmfOy8KkrM/Zws+fg85eInFnlvCSQA1ObgYl7GvFOuaLTpoj+ukzirT6wocjQtnnqEhoKHcCUIP2A2Hn06egMxfahLjwYZPO5clzUk7PXB/aHTdD9MNHTE/TJGZ1kOl5rNGMUuiQimCYYeNbsLjzvwSdu1Q8ePgPxsxq8hzRj59C1WtRj/H5Io2FGB2edP3IORHKpm7aEcrBI7yk0FBCk/1GS+qY385ftNiG+Va/9MmkDgaXrBE+E6LhbvYXgJgVlpcLkIUgYppPzdL3F6+GUlT9qSWUlNkRl2tZhvXLhWzUQfTw8aB8fuFuBtjxoKt8Zis4xPyQ4nvgmKMx2ldBWGU7Pv4ahx88TnTBCtEtu4LuPRR03+Ggm3cGnb9cdMBo0eZd0ogQiBAf5lr3EH36HFiKn1rwYco3oqGcH/EvpqO/dK3HcJLJycptRw4cI7rnUEwn5JGZ+0+f2YKYtoC+KvgTZwv3xT7Dj79gWF5kDaO48G/6Y/nDx0FbdkvDXDn8gf10HiB65GSwwxvZCV/GR3v3Pi5Eq+65MmaxZpZS3cYdRC9c9oQk53KYFdX71i5NR3up55Tzkx907jJh9tGuNiuZOEv05eua4W/mvIvZ1J5Ds2hz/Vjf4O7rV0wdcyqG56nSTZtZ4Sk4Fh15hxEODLdzAcQwJBoXQWzRTKxB+Hqsg9+9fhPsfLBJTvqGhW9nJnV+446il6/57TNT+n2/AMWbVCIRxtCwYXsAeGH2UtLF6Qts8pN2mNK6H0Tl59TLV8HuE0DUKfrlppg+XxzqmZW7F/e+cC2q5UX42bh0v5HiCqDU+gwXw273do3f+f6tu3YmVBN7bXqKRRDMh8cQ/4gFBWVhFQj3acXt8DUG47AOKf1fdVWvXPcv25l1oGbBOhujGIyRaL8JNKZ+Ckknz1K/3L4v0DwDCHJui9JFKMvsSjANdVcEjZ8pGI7R5wVhsZjVy8Lckm49BmcCDZhYujlMd/gQYv0hbFY/A/zP6PikT/3pC6qF+oUr3F/1jwJ8ArH7YHD/nzQS7ACP6QnOhrJeqgRXeSqCuS03wrdkvYaWOyoNccrViHYbFJNgHMKQWUU4oPcYHXbOGDvjSU9yTZEwmDKOmVL6+jrf/f5OT/6GP3nML+V/eFicQ5OxGEsJ2GCcmy57VouWfJKIWSEL4sHVVqpmk2aX8JOkPtLUdZa+KFMTDD98PvlwxYtWMLTQd/gMSc+eB+PQJY56Zoq1FuxAH39u2/eGShB57eaf5Hf81H46pwVdMnNalS9rbt+LDCiKK/tlAVaWHz6RsS341DHzcedxOde3BOGVG/W3SI/99pmRVRdimFb2GUn8u+u34gKkjMIwt1M/UdMGY6eLzlosumiV6Ir1P5s7B5hLliyOdzbevNh+tm3btm3btm3btm1LY+OzdCe1de5MZTv5Tf1zUuPkbJ+tru66X3fX/wivniqSSOTlYE1PyjeuwXheiykoCsH9wMu8pEoYYC4aEQ0e8yY+9+q08NnX01MIp0ydZoLWYcSR95OEsrJrdT0arhHz3GtXdCJxIrcXHHSZr1DXDNCVkKsdA2E9PQ7eoSryA9GZgCIzW3hYkRmX9f1wu6qCC5BOZxTrymv1uK4VK78n749cV/d4hcRcfAWebamznI10bZa37pc8DbAMD2I6DpHAVx+n19K/IUEQ3A0+oZItzMgE8LXxxPmMzOn8HdYv9/cPhocffznc99DzLvrks+/d9+ccV+DKCAUa+GKFcaS2OBYQBpfY5i4DR8JhOn7z3W9hwSU3/T8ttVk8GtX+f42/6bZHZfql1mzgtJSyz6gSW0uVn2KcQovnBwaG4hc5ZEeupbWlIrI1Tz/nOnuwbnrz7U+dmd/ZsldVvI5rKiaqqtLMhswM7unpD1OmtIU//xoR3nzns3D/wy+ES668Mxx3ymVhrwNPC9vtekzYfLtDw/GnXj7jJeisPPKqfIrz/x0+Jiy54jbp4aavPcsvscLWYeSo8bi/r8CwUcRXOf96Im4dZkm8Eb+avQ88PWy01UFhmVW3T9u89scl2rR5XGSZLcIPP/3JFwCVUkGTjel8nBNOuyLBS1ofVP+tW+14RPRtDQAedUW+zv3RcoJpKQ4PKOHmsy9+dGzv2tcWae+DTrdd4NCusAsSyTov24GLLrdldv36eDp3xbX3qixoVahd2DkAFTIiDCh8LT29/fHrP5B/bOKXrPPTzy209Gbh3gefUxnFAo40/++wMWG19fYA1Ch+kWW3DN/98EfhuuV8lSu71BXsNN5uu+sJbPMZfyQgKG37JSI+v/Xu5zLVUfth+PLGjp0UNtv20Pp6aU1AkfGJdtj92LQjeX+qoq48KkKkESDImwGtgyITJ7WEldfeNVDgaThaZpXtw2tvfCyEWm6c5v8//46OQv4wrOehx596TbhecohgBNvJrVEmLYg3oBvaVRt1wy0PA1cJSaTFltsqXHPDA6GjozvdU6m3GLcv99U3PgprbLBn0cNfd5N9Q2dnj1cbEy0PRF8j3AdaEOFFGxEMuU2OKui6m+6XtnWiuvED7ah+tK/3hZffM03E7Sf6/Y9h4egTL4kYvsXMNBwX/+CjL2r4peVv5PNr6TFHgQZ4Pefl1z4IC0c1068VcXesE7/Ii6+4M3z48TfRtd0eY7R9sdpmIPTGF9Pd3dfU1Z9+7q1w4OHnmPDE9Xo9rtXV1ev4u43g/3Jfk3P5VMq6TbzOXKPFe9LpV+XwX42Dt6O9TNNoNtrywKadsdJau8w4J65z8kZPPvNGifYieuGBpMOxypRrQtDQ7503OFpaOurCMEEPtCBqJ+DTXEAH5lPzktfacdtdjrYdBYjw18NhTLZ8I8+AjMiIloYGzv3598iw6nq7Kwjg+Owntaa5Rkzwy0igf5y8vo6GGIuYyatSTfBffPVTWGGNnYofuh9SyiHonAtvgkUu3PCe5n1FlfJYIOukI58rRDCylwDcNoKfSGJ68+iHsaU4x4jzzSLfPDz74jsCKlRigoJoldOEgIzcWunmaivJ63/7fVjYYIsDhDD2jGP3SM2K44l4zbKr7RB+/f1fqQkRkksiYezMWClJrRtw4GVIN+74CVPCwUeeaz4gPDDBzzXacocjwtSWDpEOqcbLqRLuUxXxSnPFeW7R3ui0e+jRl0wu5CJU1GyW0scmUdvCXMynhhVOOuMqC2ESZgkxSivU7ZV1qwIjfv0MNfKYiPUGXHjU6Anh5DOvNheEgJG5TwtFeuCRFx2FIcXBevBITcw06cBXLnpEO9PyGuHnX/4OZ553fdwRO88WLWj51XdsWtBX33C/CdfcLpHjS628ncWRXUaZTl/UXSKpBdFVSmjSEt9hzBG6knx49MlXw0FHnGMaE2AEcFTj7YHtvNcJ4a77ngmjx0y0+zV9SSeefmWaU6ckzDFWW8sUBvNrAT5EwoKI0tGDUB+vdDWkL/9Fa0j+fv/JirYv0FJJLrv6rhg/vqIpvPc95MxwyFHnxfjy5eGiy28P9zzwbPjgo6/DxIkthtv4LS2tHdHQOrrYCDziuAvjixwU8V+k9Od6XUvNsYJ7OePnAP5jYeNL++eoOeX8sOFjw6rr7lYCZwZhFmTyuKYBv+R1UJ7SWTfqED4RGmNaZcs7+HROjj/V0Tyqiy+/FbQtusrJW8Tuo0++FXBcUiNmvxVBeboZSMiMwLgPhijg+VKyaY8Y5xg9liYf6vYHKckVGnRrb7yPyRZHdjXX5zh/byXaxIu8HPq3Ne47Glxwjib/fBPKpuMXq6f7HnyGxSPU+p4SWxWU123jncaa7p/DOSKQzW1NaOQHoRyLbW1dFnifadSMWhENtmtufAAQ44BDPAcVlHcGxlU3cu4m3WNI3F82T2XuDs/z9w8fOc7ixgUu8k0t8mYZHFifMezcruZvNb6iDeDpuY86L4dA4rieXwo7es7Hn34XFl9ha48qijkWmbOcIynj/BVA6QXMVL8FEZ5YcOB/4JxDyJKalS6Q0AaUJYTBhV2DIuE23zTsus9JseivB+s7C0EAs5Wjr40YU5oOrhUE2CCv0wKFLUIIMMPt1LOvhbvaa6hdeNntdj+t6fh7RyOoLoUaH65uAa9lhCPcV0wajtrau8Iue51Q5rSzIM4L78yu1ERZjCAgiEV1frVMQIvISypIB5S5TiOiUF5ro73toaqEACOMr7jmzpYyI7S4hlML0lADnpR7AfpFcA7y8OXa2gDzw6qVJC250rYlLnFLy+ffR/iRNRYVBB21IglPumM4eKTtOQS00/gp15osM441DTo0anTnvU/L6hz+Nn6oFaFE14SRz5UrqRqwEkNGV63r++sIlmVFnHHu9ZmcosQz7+jaGx8ocEcrCNK8hgU97pzbKLi3V/PS45YfZComv/ichpTqG8QajvHK0ZI3TRaYjmt1hTphhu3RtJMP17pc3BoqLOfUckUJP9wRzeqbP/4cAYPV7YpOL0D4LIQhJoPzYq4ytvBScOR53T+O62Mc8z/74ocklKU8OOv8G+EJSCQgHOOV16ynAC3QOvQc/zh3jfY16XvCs/vamx+HpVfZvp7oVU/2ssicQZa7pZtu1qG3rTMArb9I8mK+XsvbxxpqL8bltVZnNjqcFmuMLR5giVvmBzrmpEvDl1//LFzw0AJVR10644x02zDhHqafSLqu6W4WvEoP1B+FKHvFHKyZqm9a2zpDX/8g1hJQU9IvqMz092swLqGkzpH3+2Kc/1lDrCnWKno+oEpbr9qq1V3FBa+/fCGDClRl37Ug/bJ1VxnhX8Muq0QQvGDbN9yQItb19CzSc8rHC3jRrAP//TGOVwUuaDWuoUT3IHUeRTQO6xWOk/BVS9jTBS9oXdzi8Pkrw0s9GKG9ZHNQFSarB6ITx7QM0vP9YVPhmsF8O3bYC3gv0y8IhPPC8ICsUBBDEvgpHYRcQ8ooDaVaNdYRQ8I15tp9PrAXcHBBt0RvDpBf8PnTGP3ndUazKrSQvHhenKv5w80X9N/4Rn4CbMgsOUCJ2w2tx3lfrdU452i+/P4U5qKdDhLPfmk0pi1Q2b84edVIU7C1RNW4q5EHYU3BE+fwmtnEGznm6Plunw+P9qwbK1f1f3Fw5Ui/iC0+G6kxr++pr/HbCCXX/WQffFVV/2lS+h/7F/vmLxBPHh7pg0gdiOpo3ki4kItly3zL+w3NRkukd+ILONgg3551eu7/AxK2F7WQPNQ+AAAAAElFTkSuQmCC</Image>
+
+<Url type="text/html" method="POST" template="http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…">
+ <Param name="q" value="{searchTerms}"/>
+</Url>
+<SearchForm>http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/se…</SearchForm>
+</SearchPlugin>
=====================================
android-components/components/feature/search/src/main/java/mozilla/components/feature/search/storage/SearchEngineReader.kt
=====================================
@@ -31,6 +31,7 @@ internal val GENERAL_SEARCH_ENGINE_IDS = setOf(
"ddg",
"ddg-onion",
"startpage",
+ "startpage-onion",
"bing",
"baidu",
"ecosia",
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/c53…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/c53…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] Bug 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
by ma1 (@ma1) 13 Mar '24
by ma1 (@ma1) 13 Mar '24
13 Mar '24
ma1 pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
c99204f2 by hackademix at 2024-03-13T16:39:27+01:00
Bug 42443: Shrink window to match letterboxing size when the emtpy area is clicked.
- - - - -
1 changed file:
- toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
Changes:
=====================================
toolkit/components/resistfingerprinting/RFPHelper.sys.mjs
=====================================
@@ -750,8 +750,27 @@ class _RFPHelper {
});
}
+ // We will attach this method to each browser window. When called
+ // it will instantly resize the window to exactly fit the selected
+ // (possibly letterboxed) browser.
+ shrinkToLetterbox() {
+ let { selectedBrowser } = this.gBrowser;
+ let stack = selectedBrowser.closest(".browserStack");
+ const outer = stack.getBoundingClientRect();
+ const inner = selectedBrowser.getBoundingClientRect();
+ this.resizeBy(inner.width - outer.width, inner.height - outer.height);
+ }
+
+ _onWindowDoubleClick(e) {
+ if (e.target.classList.contains("browserStack")) {
+ e.currentTarget.shrinkToLetterbox();
+ }
+ }
+
_attachWindow(aWindow) {
aWindow.addEventListener("sizemodechange", windowResizeHandler);
+ aWindow.shrinkToLetterbox = this.shrinkToLetterbox;
+ aWindow.addEventListener("dblclick", this._onWindowDoubleClick);
aWindow.gBrowser.addTabsProgressListener(this);
aWindow.addEventListener("TabOpen", this);
const resizeObserver = (aWindow._rfpResizeObserver =
@@ -783,9 +802,12 @@ class _RFPHelper {
let browser = tab.linkedBrowser;
this._resetContentSize(browser);
}
+ aWindow.removeEventListener("dblclick", this._onWindowDoubleClick);
+ delete aWindow.shrinkToLetterbox;
aWindow.removeEventListener("sizemodechange", windowResizeHandler);
}
+
_handleDOMWindowOpened(win) {
let self = this;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c99204f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/c99204f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-115.9.0esr-13.5-1-build1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new tag mullvad-browser-115.9.0esr-13.5-1-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new tag mullvad-browser-115.9.0esr-13.0-1-build1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new tag mullvad-browser-115.9.0esr-13.0-1-build1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.0-1] 19 commits: MB 38: Mullvad Browser configuration
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Mullvad Browser
Commits:
66e2cdc0 by Pier Angelo Vendrame at 2024-03-13T09:48:25+01:00
MB 38: Mullvad Browser configuration
- - - - -
f6acf62f by Pier Angelo Vendrame at 2024-03-13T09:48:26+01:00
MB 1: Mullvad Browser branding
See also:
mullvad-browser#5: Product name and directory customization
mullvad-browser#12: Create new branding directories and integrate Mullvad icons+branding
mullvad-browser#14: Remove Default Built-in bookmarks
mullvad-browser#35: Add custom PDF icons for Windows builds
mullvad-browser#48: Replace Mozilla copyright and legal trademarks in mullvadbrowser.exe metadata
mullvad-browser#51: Update trademark string
mullvad-browser#104: Update shipped dll metadata copyright/licensing info
mullvad-browser#107: Add alpha and nightly icons
- - - - -
faf7763a by Pier Angelo Vendrame at 2024-03-13T09:48:26+01:00
MB 20: Allow packaged-addons in PBM.
We install a few addons from the distribution directory, but they are
not automatically enabled for PBM mode.
This commit modifies the code that installs them to also add the PBM
permission to the known ones.
- - - - -
2c6c79c3 by Pier Angelo Vendrame at 2024-03-13T09:48:26+01:00
MB 63: Customize some about pages for Mullvad Browser
Also:
mullvad-browser#57: Purge unneeded about: pages
- - - - -
00eb1de9 by Pier Angelo Vendrame at 2024-03-13T09:48:26+01:00
MB 37: Customization for the about dialog
- - - - -
7cef9093 by Pier Angelo Vendrame at 2024-03-13T09:57:43+01:00
fixup! MB 37: Customization for the about dialog
MB 270: Update support email
- - - - -
aa8a1137 by Henry Wilkes at 2024-03-13T09:57:43+01:00
MB 39: Add home page about:mullvad-browser
- - - - -
f7d46ab5 by hackademix at 2024-03-13T09:57:43+01:00
MB 97: Remove UI cues to install new extensions.
- - - - -
c50cbdb3 by hackademix at 2024-03-13T09:57:44+01:00
MB 47: uBlock Origin customization
- - - - -
11c764d8 by Pier Angelo Vendrame at 2024-03-13T09:57:44+01:00
MB 21: Disable the password manager
This commit disables the about:login page and removes the "Login and
Password" section of about:preferences.
We do not do anything to the real password manager of Firefox, that is
in toolkit: it contains C++ parts that make it difficult to actually
prevent it from being built..
Finally, we modify the the function that opens about:login to report an
error in the console so that we can quickly get a backtrace to the code
that tries to use it.
- - - - -
6e5e8ee5 by Pier Angelo Vendrame at 2024-03-13T09:57:44+01:00
MB 87: Disable the default browser box on Windows and Linux
Windows and Linux will be distributed only as portable apps at the
beginning, so they should not be settable as default browsers.
We will need to improve the logic once we decide to ship system-wide
installers, too.
- - - - -
be0f6e42 by Pier Angelo Vendrame at 2024-03-13T09:57:44+01:00
MB 112: Updater customization for Mullvad Browser
MB 71: Set the updater base URL to Mullvad domain
- - - - -
7e3b2112 by Nicolas Vigier at 2024-03-13T09:57:45+01:00
MB 79: Add Mullvad Browser MAR signing keys
MB 256: Add mullvad-browser nightly mar signing key
- - - - -
3869d32b by Pier Angelo Vendrame at 2024-03-13T09:57:49+01:00
MB 34: Hide unsafe and unwanted preferences UI
about:preferences allow to override some of our defaults, that could
be fingeprintable or have some other unwanted consequences.
- - - - -
132ba735 by Pier Angelo Vendrame at 2024-03-13T09:57:49+01:00
MB 160: Disable the cookie exceptions button
Besides disabling the "Delete on close checkbox", disable also the
"Manage Exceptions" button when always using PBM.
- - - - -
a913f7ad by hackademix at 2024-03-13T09:57:49+01:00
MB 163: prevent uBlock Origin from being uninstalled/disabled
- - - - -
e5c543e2 by Richard Pospesel at 2024-03-13T09:57:50+01:00
MB 188: Customize Gitlab Issue and Merge templates
- - - - -
62ecd316 by rui hildt at 2024-03-13T09:57:50+01:00
MB 213: Customize the search engines list
- - - - -
019a2427 by hackademix at 2024-03-13T09:57:50+01:00
MB 214: Enable cross-tab identity leak protection in "quiet" mode
- - - - -
30 changed files:
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- .gitlab/merge_request_templates/default.md
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/module.ver
- browser/app/firefox.exe.manifest → browser/app/mullvadbrowser.exe.manifest
- + browser/app/profile/000-mullvad-browser.js
- browser/app/profile/001-base-profile.js
- browser/base/content/aboutDialog.xhtml
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-places.js
- browser/base/content/browser.js
- browser/base/content/default-bookmarks.html
- browser/base/content/nsContextMenu.js
- browser/base/content/overrides/app-license.html
- browser/base/content/pageinfo/pageInfo.xhtml
- browser/base/content/utilityOverlay.js
- browser/branding/branding-common.mozbuild
- + browser/branding/mb-alpha/VisualElements_150.png
- + browser/branding/mb-alpha/VisualElements_70.png
- + browser/branding/mb-alpha/configure.sh
- + browser/branding/mb-alpha/content/about-logo.png
- + browser/branding/mb-alpha/content/about-logo.svg
- + browser/branding/mb-alpha/content/about-logo(a)2x.png
- + browser/branding/mb-alpha/content/about-wordmark.svg
- + browser/branding/mb-alpha/content/about.png
- + browser/branding/mb-alpha/content/aboutDialog.css
- + browser/branding/mb-alpha/content/firefox-wordmark.svg
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/59…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/59…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser][mullvad-browser-115.9.0esr-13.5-1] 27 commits: MB 38: Mullvad Browser configuration
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed to branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
60c28c5d by Pier Angelo Vendrame at 2024-03-13T10:04:36+01:00
MB 38: Mullvad Browser configuration
- - - - -
7d51a125 by Pier Angelo Vendrame at 2024-03-13T10:12:07+01:00
fixup! MB 38: Mullvad Browser configuration
s/privacy-browser/mullvad-browser/
- - - - -
cf8fa37d by Pier Angelo Vendrame at 2024-03-13T10:12:07+01:00
fixup! MB 38: Mullvad Browser configuration
MB 80: Enable the default browser agent
- - - - -
11229d78 by Pier Angelo Vendrame at 2024-03-13T10:12:07+01:00
MB 1: Mullvad Browser branding
See also:
mullvad-browser#5: Product name and directory customization
mullvad-browser#12: Create new branding directories and integrate Mullvad icons+branding
mullvad-browser#14: Remove Default Built-in bookmarks
mullvad-browser#35: Add custom PDF icons for Windows builds
mullvad-browser#48: Replace Mozilla copyright and legal trademarks in mullvadbrowser.exe metadata
mullvad-browser#51: Update trademark string
mullvad-browser#104: Update shipped dll metadata copyright/licensing info
mullvad-browser#107: Add alpha and nightly icons
- - - - -
038f7cbc by Pier Angelo Vendrame at 2024-03-13T10:12:07+01:00
fixup! MB 1: Mullvad Browser branding
Bug 42398: Include Alpha and Nightly in MOZ_APP_DISPLAYNAME.
- - - - -
bcbbb369 by Pier Angelo Vendrame at 2024-03-13T10:12:08+01:00
MB 20: Allow packaged-addons in PBM.
We install a few addons from the distribution directory, but they are
not automatically enabled for PBM mode.
This commit modifies the code that installs them to also add the PBM
permission to the known ones.
- - - - -
61274f06 by Pier Angelo Vendrame at 2024-03-13T10:12:08+01:00
MB 63: Customize some about pages for Mullvad Browser
Also:
mullvad-browser#57: Purge unneeded about: pages
- - - - -
fe4634cf by Pier Angelo Vendrame at 2024-03-13T10:12:08+01:00
MB 37: Customization for the about dialog
- - - - -
9e844f94 by Pier Angelo Vendrame at 2024-03-13T10:12:08+01:00
fixup! MB 37: Customization for the about dialog
MB 270: Update support email
- - - - -
8907594d by Henry Wilkes at 2024-03-13T10:12:08+01:00
MB 39: Add home page about:mullvad-browser
- - - - -
53a8508b by Henry Wilkes at 2024-03-13T10:12:09+01:00
fixup! MB 39: Add home page about:mullvad-browser
Bug 271: Show update in about:mullvad-browser
- - - - -
82165ef5 by hackademix at 2024-03-13T10:12:09+01:00
MB 97: Remove UI cues to install new extensions.
- - - - -
3dbce007 by hackademix at 2024-03-13T10:12:09+01:00
MB 47: uBlock Origin customization
- - - - -
73c50462 by Pier Angelo Vendrame at 2024-03-13T10:12:09+01:00
MB 21: Disable the password manager
This commit disables the about:login page and removes the "Login and
Password" section of about:preferences.
We do not do anything to the real password manager of Firefox, that is
in toolkit: it contains C++ parts that make it difficult to actually
prevent it from being built..
Finally, we modify the the function that opens about:login to report an
error in the console so that we can quickly get a backtrace to the code
that tries to use it.
- - - - -
1743fcb4 by Pier Angelo Vendrame at 2024-03-13T10:12:09+01:00
MB 112: Updater customization for Mullvad Browser
MB 71: Set the updater base URL to Mullvad domain
- - - - -
eb9c9173 by Pier Angelo Vendrame at 2024-03-13T10:12:10+01:00
fixup! MB 112: Updater customization for Mullvad Browser
s/privacy-browser/mullvad-browser/
- - - - -
946a2b95 by Henry Wilkes at 2024-03-13T10:12:10+01:00
fixup! MB 112: Updater customization for Mullvad Browser
Bug 271: Do not open update override page in a new tab, and show in
about:mullvad-browser instead.
- - - - -
46b2183d by Nicolas Vigier at 2024-03-13T10:12:10+01:00
MB 79: Add Mullvad Browser MAR signing keys
MB 256: Add mullvad-browser nightly mar signing key
- - - - -
508d9784 by Pier Angelo Vendrame at 2024-03-13T10:12:10+01:00
MB 34: Hide unsafe and unwanted preferences UI
about:preferences allow to override some of our defaults, that could
be fingeprintable or have some other unwanted consequences.
- - - - -
996ce0a4 by Pier Angelo Vendrame at 2024-03-13T10:12:10+01:00
MB 160: Disable the cookie exceptions button
Besides disabling the "Delete on close checkbox", disable also the
"Manage Exceptions" button when always using PBM.
- - - - -
3889ebae by hackademix at 2024-03-13T10:12:11+01:00
MB 163: prevent uBlock Origin from being uninstalled/disabled
- - - - -
a0bafb7f by Richard Pospesel at 2024-03-13T10:12:11+01:00
MB 188: Customize Gitlab Issue and Merge templates
- - - - -
9f4de3f6 by rui hildt at 2024-03-13T10:12:11+01:00
MB 213: Customize the search engines list
- - - - -
11484730 by hackademix at 2024-03-13T10:12:11+01:00
MB 214: Enable cross-tab identity leak protection in "quiet" mode
- - - - -
23f99529 by Pier Angelo Vendrame at 2024-03-13T10:12:11+01:00
MB 234: Disable OS spoofing in HTTP User-Agent.
This commits makes it possible to disable OS spoofing in the HTTP
User-Agent header, to see if matching header and JS property improve
usability.
- - - - -
587a2073 by Pier Angelo Vendrame at 2024-03-13T10:12:12+01:00
MB 80: Enable Mullvad Browser as a default browser
- - - - -
1cb8d16a by Pier Angelo Vendrame at 2024-03-13T10:12:12+01:00
fixup! MB 80: Enable Mullvad Browser as a default browser
Debugging faciliites.
- - - - -
30 changed files:
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- .gitlab/merge_request_templates/default.md
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/module.ver
- browser/app/firefox.exe.manifest → browser/app/mullvadbrowser.exe.manifest
- + browser/app/profile/000-mullvad-browser.js
- browser/app/profile/001-base-profile.js
- browser/base/content/aboutDialog.xhtml
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-places.js
- browser/base/content/browser.js
- browser/base/content/default-bookmarks.html
- browser/base/content/nsContextMenu.js
- browser/base/content/overrides/app-license.html
- browser/base/content/pageinfo/pageInfo.xhtml
- browser/base/content/utilityOverlay.js
- browser/branding/branding-common.mozbuild
- + browser/branding/mb-alpha/VisualElements_150.png
- + browser/branding/mb-alpha/VisualElements_70.png
- + browser/branding/mb-alpha/configure.sh
- + browser/branding/mb-alpha/content/about-logo.png
- + browser/branding/mb-alpha/content/about-logo.svg
- + browser/branding/mb-alpha/content/about-logo(a)2x.png
- + browser/branding/mb-alpha/content/about-wordmark.svg
- + browser/branding/mb-alpha/content/about.png
- + browser/branding/mb-alpha/content/aboutDialog.css
- + browser/branding/mb-alpha/content/firefox-wordmark.svg
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/2c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/2c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new branch mullvad-browser-115.9.0esr-13.5-1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new branch mullvad-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/mullvad-browser] Pushed new branch mullvad-browser-115.9.0esr-13.0-1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new branch mullvad-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Mullvad Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/tree/mullv…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] Bump Firefox version to 115.9.0esr for nightly builds.
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
b6e589f0 by Pier Angelo Vendrame at 2024-03-13T09:44:58+01:00
Bump Firefox version to 115.9.0esr for nightly builds.
- - - - -
2 changed files:
- projects/firefox/config
- projects/geckoview/config
Changes:
=====================================
projects/firefox/config
=====================================
@@ -14,11 +14,11 @@ container:
use_container: 1
var:
- firefox_platform_version: 115.8.0
+ firefox_platform_version: 115.9.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
browser_series: '13.5'
browser_branch: '[% c("var/browser_series") %]-1'
- browser_build: 2
+ browser_build: 1
branding_directory_prefix: 'tb'
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]'
=====================================
projects/geckoview/config
=====================================
@@ -14,9 +14,9 @@ container:
use_container: 1
var:
- geckoview_version: 115.8.0esr
+ geckoview_version: 115.9.0esr
browser_branch: 13.5-1
- browser_build: 2
+ browser_build: 1
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
git_commit: '[% exec("git rev-parse HEAD") %]'
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/b…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new branch base-browser-115.9.0esr-13.5-1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag base-browser-115.9.0esr-13.5-1-build1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new tag base-browser-115.9.0esr-13.5-1-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.9.0esr-13.5-1-build1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new tag tor-browser-115.9.0esr-13.5-1-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag base-browser-115.9.0esr-13.0-1-build1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new tag base-browser-115.9.0esr-13.0-1-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new branch base-browser-115.9.0esr-13.0-1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new branch base-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.9.0esr-13.0-1-build1
by Pier Angelo Vendrame (@pierov) 13 Mar '24
by Pier Angelo Vendrame (@pierov) 13 Mar '24
13 Mar '24
Pier Angelo Vendrame pushed new tag tor-browser-115.9.0esr-13.0-1-build1 at The Tor Project / Applications / Tor Browser
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 189 commits: Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
by richard (@richard) 12 Mar '24
by richard (@richard) 12 Mar '24
12 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
7a7ebead by Eitan Isaacson at 2024-03-11T16:44:51+01:00
Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D179737
- - - - -
298a23c6 by Pier Angelo Vendrame at 2024-03-11T16:44:52+01:00
Bug 1832523 - Allow using NSS to sign and verify MAR signatures. r=application-update-reviewers,glandium,bytesized
Allow using NSS for checking MAR signatures also in platforms where
OS-native APIs are used by default, i.e., macOS and Windows.
Differential Revision: https://phabricator.services.mozilla.com/D177743
- - - - -
a5f8f5b8 by Pier Angelo Vendrame at 2024-03-11T16:44:52+01:00
Bug 1849129: Prevent exceptions caused by extensions from interrupting the SearchService initialization. r=search-reviewers,Standard8
Differential Revision: https://phabricator.services.mozilla.com/D186456
- - - - -
943cff76 by Emilio Cobos Álvarez at 2024-03-11T16:44:52+01:00
Bug 1853731 - Use html:img for message-bar-icon. r=Gijs,dao,settings-reviewers,desktop-theme-reviewers,sfoster
Differential Revision: https://phabricator.services.mozilla.com/D188521
- - - - -
a3b689c0 by Pier Angelo Vendrame at 2024-03-11T16:44:52+01:00
Bug 1854117 - Sort the DLL blocklist flags. r=mossop,win-reviewers,gstoll
Differential Revision: https://phabricator.services.mozilla.com/D188716
- - - - -
6d10a1ac by Eden Chuang at 2024-03-11T16:44:53+01:00
Bug 1738426 - Ignoring status 206 and vary header checking for opaque response in Cache API. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D186431
- - - - -
982ce762 by edgul at 2024-03-11T16:44:53+01:00
Bug 1802057 - Block the following characters from use in the cookie name in the cookie string: 0x3B (semi-colon), 0x3D (equals), and 0x7F (del) r=dveditz,cookie-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D182373
- - - - -
8748212e by Kelsey Gilbert at 2024-03-11T16:44:53+01:00
Bug 1819497 - Don't race on static bool for initialization. r=gfx-reviewers,aosmond
We could do non-racy static init here (e.g. with a static initializer
self-calling-closure), but there doesn't seem to be a strong reason for
this. Let's just use a switch and get robustness from -Werror=switch.
Differential Revision: https://phabricator.services.mozilla.com/D188054
- - - - -
d526960c by Mark Banner at 2024-03-11T16:44:53+01:00
Bug 1845752. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D186676
- - - - -
93c9d7b1 by Pier Angelo Vendrame at 2024-03-11T16:44:53+01:00
Bug 1849186 - Add a preference not to expose the content title in the window title. r=Gijs,tabbrowser-reviewers,dao
Differential Revision: https://phabricator.services.mozilla.com/D190496
- - - - -
5a513cb9 by Bob Owen at 2024-03-11T16:44:54+01:00
Bug 1850072: Initialize RecordedDrawTargetCreation::mHasExistingData. r=jrmuizel
This also specializes ElementStreamFormat for bool.
Differential Revision: https://phabricator.services.mozilla.com/D187794
- - - - -
b12b3d4a by Malte Juergens at 2024-03-11T16:44:54+01:00
Bug 1850200 - Add delay to HTTPS-Only "Continue to HTTPS Site" button r=freddyb
Differential Revision: https://phabricator.services.mozilla.com/D187887
- - - - -
6668a78b by Andreas Pehrson at 2024-03-11T16:44:54+01:00
Bug 1851803 - Introduce SourceMediaTrack::mDirectDisabledMode. r=karlt
Similar to MediaTrack::mDisabledMode, but this is for uses on the
SourceMediaTrack producer thread. It is still signaled via a control message
from the control thread to maintain order of operations, and is protected by the
SourceMediaTrack mutex.
Differential Revision: https://phabricator.services.mozilla.com/D187554
- - - - -
92dbe325 by Pier Angelo Vendrame at 2024-03-11T16:44:54+01:00
Bug 1860020 - Remove the assertion on the value of toolkit.telemetry.enabled. r=KrisWright,chutten
Bug 1444275 introduced an assertion on the parent process to check that
the value of toolkit.telemetry.enabled is the expected one.
However, this expected value could be different from the one set and
locked e.g. in some forks. Therefore, the assertion prevented debug
builds from working in these cases.
Differential Revision: https://phabricator.services.mozilla.com/D195080
- - - - -
dc54d214 by Kagami Sascha Rosylight at 2024-03-11T16:44:54+01:00
Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame
Per /etc/fonts.xml, there are now only two `<family lang="ko">` nodes there:
* OneUISansKRVF series
* SECCJK series (but no KR postfix anymore?)
This patch uses One UI Sans KR VF as the replacement as this is newer and is a variable font (tested with https://codepen.io/SaschaNaz/pen/ExrdYXJ)
Differential Revision: https://phabricator.services.mozilla.com/D195078
- - - - -
e3415ebf by Tom Ritter at 2024-03-11T16:45:03+01:00
Bug 1873526: Refactor the restriction override list from a big if statement to a list r=KrisWright
Differential Revision: https://phabricator.services.mozilla.com/D198081
- - - - -
ab749c46 by Pier Angelo Vendrame at 2024-03-11T16:45:03+01:00
Bug 1875306 - Localize numbers in the underflow and overflow error messages. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D198965
- - - - -
120897f4 by Pier Angelo Vendrame at 2024-03-11T16:45:03+01:00
Bug 1875313 - Use en-US as a fallback when spoof English is enabled in ICUUtils. r=timhuang,tjr
Differential Revision: https://phabricator.services.mozilla.com/D198967
- - - - -
b5f3af62 by Pier Angelo Vendrame at 2024-03-12T11:32:52+01:00
Bug 1880988 - Apply spoof English to the default detail summary. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D202203
- - - - -
e718800b by Henry Wilkes at 2024-03-12T11:32:52+01:00
Bug 41454: Move focus after calling openPreferences for a sub-category.
Temporary fix until mozilla bug 1799153 gets a patch upstream.
- - - - -
802124b6 by hackademix at 2024-03-12T11:32:52+01:00
Bug 42194: Fix blank net error page on failed DNS resolution with active proxy.
- - - - -
ed8a41c3 by Henry Wilkes at 2024-03-12T11:32:52+01:00
Bug 41483: Remove the firefox override for appstrings.properties
Remove this patch after upstream bugzilla bug 1790187
- - - - -
ae4b20d0 by Pier Angelo Vendrame at 2024-03-12T11:32:52+01:00
Bug 41116: Normalize system fonts.
System fonts are an enormous fingerprinting vector.
Even with font allow lists and with our custom configuration on Linux,
which counter metrics measurements, getComputedStyle leaks several
details.
This patch counters both these kinds of attacks.
- - - - -
14a311ac by Marco Simonelli at 2024-03-12T11:32:53+01:00
Bug 41459: WebRTC fails to build under mingw (Part 1)
- properly define NOMINMAX for just MSVC builds
- - - - -
713209e1 by Marco Simonelli at 2024-03-12T11:32:53+01:00
Bug 41459: WebRTC fails to build under mingw (Part 2)
- fixes required to build third_party/libwebrtc
- - - - -
e9b3510a by Marco Simonelli at 2024-03-12T11:32:53+01:00
Bug 41459: WebRTC fails to build under mingw (Part 3)
- fixes required to build third_party/sipcc
- - - - -
bcc14583 by Marco Simonelli at 2024-03-12T11:32:53+01:00
Bug 41459: WebRTC fails to build under mingw (Part 4)
- fixes requried to build netwerk/sctp
- - - - -
c16ac478 by Marco Simonelli at 2024-03-12T11:32:54+01:00
Bug 41459: WebRTC fails to build under mingw (Part 5)
- fixes required to build dom/media/webrtc
- - - - -
e54bea3e by Marco Simonelli at 2024-03-12T11:32:54+01:00
Bug 41459: WebRTC fails to build under mingw (Part 6)
- fixes required to build dom/media/systemservices
- - - - -
518f34f7 by hackademix at 2024-03-12T11:32:54+01:00
Bug 41854: Allow overriding download spam protection.
- - - - -
d3a52b9b by Gaba at 2024-03-12T11:32:54+01:00
Adding issue and merge request templates
- - - - -
2962c203 by Pier Angelo Vendrame at 2024-03-12T11:32:54+01:00
Base Browser's .mozconfigs.
Bug 17858: Cannot create incremental MARs for hardened builds.
Define HOST_CFLAGS, etc. to avoid compiling programs such as mbsdiff
(which is part of mar-tools and is not distributed to end-users) with
ASan.
Bug 21849: Don't allow SSL key logging.
Bug 25741 - TBA: Disable features at compile-time
Define MOZ_ANDROID_NETWORK_STATE and MOZ_ANDROID_LOCATION
Bug 27623 - Export MOZILLA_OFFICIAL during desktop builds
This fixes a problem where some preferences had the wrong default value.
Also see bug 27472 where we made a similar fix for Android.
Bug 29859: Disable HLS support for now
Bug 30463: Explicitly disable MOZ_TELEMETRY_REPORTING
Bug 32493: Disable MOZ_SERVICES_HEALTHREPORT
Bug 33734: Set MOZ_NORMANDY to False
Bug 33851: Omit Parental Controls.
Bug 40252: Add --enable-rust-simd to our tor-browser mozconfig files
Bug 41584: Move some configuration options to base-browser level
- - - - -
aa644315 by Pier Angelo Vendrame at 2024-03-12T11:32:55+01:00
Tweaks to the build system
Bug 40857: Modified the fat .aar creation file
This is a workaround to build fat .aars with the compiling enviornment
disabled.
Mozilla does not use a similar configuration, but either runs a Firefox
build and discards its output, or uses artifacts build.
We might switch to artifact builds too, and drop this patch, or write a
better one to upstream. But until then we need this patch.
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1763770.
Bug 41458: Prevent `mach package-multi-locale` from actually creating a package
macOS builds need some files to be moved around with
./mach package-multi-locale to create multi-locale packages.
The required command isn't exposed through any other mach command.
So, we patch package-multi-locale both to prevent it from failing when
doing official builds and to detect any future changes on it.
- - - - -
62191396 by Pier Angelo Vendrame at 2024-03-12T11:32:55+01:00
Bug 41108: Remove privileged macOS installation from 102
- - - - -
19342528 by Dan Ballard at 2024-03-12T11:32:55+01:00
Bug 41149: Re-enable DLL injection protection in all builds not just nightlies
- - - - -
81f3cead by Matthew Finkel at 2024-03-12T11:32:55+01:00
Bug 24796: Comment out excess permissions from GeckoView
The GeckoView AndroidManifest.xml is not preprocessed unlike Fennec's
manifest, so we can't use the ifdef preprocessor guards around the
permissions we do not want. Commenting the permissions is the
next-best-thing.
- - - - -
94ab28a7 by Matthew Finkel at 2024-03-12T11:32:55+01:00
Bug 28125: Prevent non-Necko network connections
- - - - -
e543b31d by Mike Perry at 2024-03-12T11:32:56+01:00
Bug 12974: Disable NTLM and Negotiate HTTP Auth
The Mozilla bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1046421,
https://bugzilla.mozilla.org/show_bug.cgi?id=1261591, tor-browser#27602
- - - - -
04f45d3a by Alex Catarineu at 2024-03-12T11:32:56+01:00
Bug 40166: Disable security.certerrors.mitm.auto_enable_enterprise_roots
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1768899
- - - - -
29753592 by Georg Koppen at 2024-03-12T11:32:56+01:00
Bug 16285: Exclude ClearKey system for now
In the past the ClearKey system had not been compiled when specifying
--disable-eme. But that changed and it is even bundled nowadays (see:
Mozilla's bug 1300654). We don't want to ship it right now as the use
case for it is not really visible while the code had security
vulnerabilities in the past.
- - - - -
d9b45a3d by Kathy Brade at 2024-03-12T11:32:56+01:00
Bug 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
- - - - -
5c1c4c79 by Kathy Brade at 2024-03-12T11:32:57+01:00
Bug 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
Hide elements on about:logins that mention sync, "Firefox LockWise", and
Mozilla's LockWise mobile apps.
Disable the "Create New Login" button when security.nocertdb is true.
- - - - -
7e7ddee2 by Alex Catarineu at 2024-03-12T11:32:57+01:00
Bug 41457: Remove Mozilla permissions
Bug 40025: Remove Mozilla add-on install permissions
- - - - -
855aa89d by Kathy Brade at 2024-03-12T11:32:57+01:00
Bug 40002: Remove about:ion
Firefox Ion (previously Firefox Pioneer) is an opt-in program in which people
volunteer to participate in studies that collect detailed, sensitive data about
how they use their browser.
Bug 41662: Disable about:sync-logs
Even though we disable sync by default with
`identity.fxaccounts.enabled`, this about: page is still avilable.
We could throw an exception on the constructor of the related
component, but it would result only in an error in the console, without
a visible "this address does not look right" error page.
If we fix the issues with MOZ_SERVICES_SYNC, we can restore the
component.
- - - - -
cd386650 by Arthur Edelstein at 2024-03-12T11:32:57+01:00
Bug 26353: Prevent speculative connect that violated FPI.
Connections were observed in the catch-all circuit when
the user entered an https or http URL in the URL bar, or
typed a search term.
- - - - -
a693eb27 by Alex Catarineu at 2024-03-12T11:32:57+01:00
Bug 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
Avoid creating instance for 'anti-tracking-url-decoration'.
If prefs are disabling their usage, avoid creating instances for
'cert-revocations' and 'intermediates'.
Do not ship JSON dumps for collections we do not expect to need. For
the ones in the 'main' bucket, this prevents them from being synced
unnecessarily (the code in remote-settings does so for collections
in the main bucket for which a dump or local data exists). For the
collections in the other buckets, we just save some size by not
shipping their dumps.
We also clear the collections database on the v2 -> v3 migration.
- - - - -
51165c76 by cypherpunks1 at 2024-03-12T11:32:58+01:00
Bug 41092: Add a RemoteSettings JSON dump for query-stripping
- - - - -
1a9d628c by Pier Angelo Vendrame at 2024-03-12T11:32:58+01:00
Bug 41635: Disable the Normandy component
Do not include Normandy at all whenever MOZ_NORMANDY is False.
- - - - -
2a148099 by Georg Koppen at 2024-03-12T11:32:58+01:00
Bug 30541: Disable WebGL readPixel() for web content
Related Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1428034
- - - - -
f5c0f830 by Alex Catarineu at 2024-03-12T11:32:58+01:00
Bug 28369: Stop shipping pingsender executable
- - - - -
9bb8864d by cypherpunks1 at 2024-03-12T11:32:58+01:00
Bug 41568: Disable LaterRun
- - - - -
e0ed45a8 by cypherpunks1 at 2024-03-12T11:32:59+01:00
Bug 40717: Hide Windows SSO in settings
- - - - -
e66faf2c by Pier Angelo Vendrame at 2024-03-12T11:32:59+01:00
Bug 41599: Always return an empty string as network ID
Firefox computes an internal network ID used to detect network changes
and act consequently (e.g., to improve WebSocket UX).
However, there are a few ways to get this internal network ID, so we
patch them out, to be sure any new code will not be able to use them and
possibly link users.
We also sent a patch to Mozilla to seed the internal network ID, to
prevent any accidental leak in the future.
Upstream: https://bugzilla.mozilla.org/show_bug.cgi?id=1817756
- - - - -
2eff10e3 by cypherpunks1 at 2024-03-12T11:32:59+01:00
Bug 40175: Add origin attributes to about:reader top-level requests
- - - - -
17d05290 by Richard Pospesel at 2024-03-12T11:32:59+01:00
Bug 41327: Disable UrlbarProviderInterventions
- - - - -
c296f240 by Richard Pospesel at 2024-03-12T11:33:00+01:00
Bug 42037: Disable about:firefoxview page
- - - - -
20e5febb by Mike Perry at 2024-03-12T11:33:00+01:00
Firefox preference overrides.
This hack directly includes our preference changes in omni.ja.
Bug 18292: Staged updates fail on Windows
Temporarily disable staged updates on Windows.
Bug 18297: Use separate Noto JP,KR,SC,TC fonts
Bug 23404: Add Noto Sans Buginese to the macOS whitelist
Bug 23745: Set dom.indexedDB.enabled = true
Bug 13575: Disable randomised Firefox HTTP cache decay user tests.
(Fernando Fernandez Mancera <ffmancera(a)riseup.net>)
Bug 17252: Enable session identifiers with FPI
Session tickets and session identifiers were isolated
by OriginAttributes, so we can re-enable them by
allowing the default value (true) of
"security.ssl.disable_session_identifiers".
The pref "security.enable_tls_session_tickets" is obsolete
(removed in https://bugzilla.mozilla.org/917049)
Bug 14952: Enable http/2 and AltSvc
In Firefox, SPDY/HTTP2 now uses Origin Attributes for
isolation of connections, push streams, origin frames, etc.
That means we get first-party isolation provided
"privacy.firstparty.isolate" is true. So in this patch, we
stop overriding "network.http.spdy.enabled" and
"network.http.spdy.enabled.http2".
Alternate Services also use Origin Attributes for isolation.
So we stop overriding
"network.http.altsvc.enabled" and "network.http.altsvc.oe"
as well.
(All 4 of the abovementioned "network.http.*" prefs adopt
Firefox 60ESR's default value of true.)
However, we want to disable HTTP/2 push for now, so we
set "network.http.spdy.allow-push" to false.
"network.http.spdy.enabled.http2draft" was removed in Bug 1132357.
"network.http.sped.enabled.v2" was removed in Bug 912550.
"network.http.sped.enabled.v3" was removed in Bug 1097944.
"network.http.sped.enabled.v3-1" was removed in Bug 1248197.
Bug 26114: addons.mozilla.org is not special
* Don't expose navigator.mozAddonManager on any site
* Don't block NoScript from modifying addons.mozilla.org or other sites
Enable ReaderView mode again (#27281).
Bug 29916: Make sure enterprise policies are disabled
Bug 2874: Block Components.interfaces from content
Bug 26146: Spoof HTTP User-Agent header for desktop platforms
In Tor Browser 8.0, the OS was revealed in both the HTTP User-Agent
header and to JavaScript code via navigator.userAgent. To avoid
leaking the OS inside each HTTP request (which many web servers
log), always use the Windows 7 OS value in the desktop User-Agent
header. We continue to allow access to the actual OS via JavaScript,
since doing so improves compatibility with web applications such
as GitHub and Google Docs.
Bug 12885: Windows Jump Lists fail for Tor Browser
Jumplist entries are stored in a binary file in:
%APPDATA%\\Microsoft\Windows\Recent\CustomDestinations\
and has a name in the form
[a-f0-9]+.customDestinations-ms
The hex at the front is unique per app, and is ultimately derived from
something called the 'App User Model ID' (AUMID) via some unknown
hashing method. The AUMID is provided as a key when programmatically
creating, updating, and deleting a jumplist. The default behaviour in
firefox is for the installer to define an AUMID for an app, and save it
in the registry so that the jumplist data can be removed by the
uninstaller.
However, the Tor Browser does not set this (or any other) regkey during
installation, so this codepath fails and the app's AUMID is left
undefined. As a result the app's AUMID ends up being defined by
windows, but unknowable by Tor Browser. This unknown AUMID is used to
create and modify the jumplist, but the delete API requires that we
provide the app's AUMID explicitly. Since we don't know what the AUMID
is (since the expected regkey where it is normally stored does not
exist) jumplist deletion will fail and we will leave behind a mostly
empty customDestinations-ms file. The name of the file is derived from
the binary path, so an enterprising person could reverse engineer how
that hex name is calculated, and generate the name for Tor Browser's
default Desktop installation path to determine whether a person had
used Tor Browser in the past.
The 'taskbar.grouping.useprofile' option that is enabled by this patch
works around this AUMID problem by having firefox.exe create it's own
AUMID based on the profile path (rather than looking for a regkey). This
way, if a user goes in and enables and disables jumplist entries, the
backing store is properly deleted.
Unfortunately, all windows users currently have this file lurking in
the above mentioned directory and this patch will not remove it since it
was created with an unknown AUMID. However, another patch could be
written which goes to that directory and deletes any item containing the
'Tor Browser' string. See bug 28996.
Bug 30845: Make sure default themes and other internal extensions are enabled
Bug 28896: Enable extensions in private browsing by default
Bug 31065: Explicitly allow proxying localhost
Bug 31598: Enable letterboxing
Disable Presentation API everywhere
Bug 21549 - Use Firefox's WASM default pref. It is disabled at safer
security levels.
Bug 32321: Disable Mozilla's MitM pings
Bug 19890: Disable installation of system addons
By setting the URL to "" we make sure that already installed system
addons get deleted as well.
Bug 22548: Firefox downgrades VP9 videos to VP8.
On systems where H.264 is not available or no HWA, VP9 is preferred. But in Tor
Browser 7.0 all youtube videos are degraded to VP8.
This behaviour can be turned off by setting media.benchmark.vp9.threshold to 0.
All clients will get better experience and lower traffic, beause TBB doesn't
use "Use hardware acceleration when available".
Bug 25741 - TBA: Add mobile-override of 000-tor-browser prefs
Bug 16441: Suppress "Reset Tor Browser" prompt.
Bug 29120: Use the in-memory media cache and increase its maximum size.
Bug 33697: use old search config based on list.json
Bug 33855: Ensure that site-specific browser mode is disabled.
Bug 30682: Disable Intermediate CA Preloading.
Bug 40061: Omit the Windows default browser agent from the build
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40408: Disallow SVG Context Paint in all web content
Bug 40308: Disable network partitioning until we evaluate dFPI
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40383: Disable dom.enable_event_timing
Bug 40423: Disable http/3
Bug 40177: Update prefs for Fx91esr
Bug 40700: Disable addons and features recommendations
Bug 40682: Disable network.proxy.allow_bypass
Bug 40736: Disable third-party cookies in PBM
Bug 19850: Enabled HTTPS-Only by default
Bug 40912: Hide the screenshot menu
Bug 41292: Disable moreFromMozilla in preferences page
Bug 40057: Ensure the CSS4 system colors are not a fingerprinting vector
Bug 24686: Set network.http.tailing.enabled to true
Bug 40183: Disable TLS ciphersuites using SHA-1
Bug 40783: Review 000-tor-browser.js and 001-base-profile.js for 102
We reviewed all the preferences we set for 102, and remove a few old
ones. See the description of that issue to see all the preferences we
believed were still valid for 102, and some brief description for the
reasons to keep them.
- - - - -
10df2d2d by Pier Angelo Vendrame at 2024-03-12T11:33:00+01:00
fixup! Firefox preference overrides.
Bug 41676: Set privacy.resistFingerprinting.testing.setTZtoUTC as a
defense-in-depth.
We will have to revert this during the ESR-transition.
- - - - -
c779a8f5 by Pier Angelo Vendrame at 2024-03-12T11:33:00+01:00
fixup! Firefox preference overrides.
Bug 42377: Hidden fonts should obey the allow list.
Remove .Helvetica Neue DeskInterface from the allow list.
This font might not be actually available, and in any case fonts
starting with period will not be displayed by the browser.
- - - - -
17acd897 by Pier Angelo Vendrame at 2024-03-12T11:33:00+01:00
fixup! Firefox preference overrides.
MB 80: Allow default browser on Windows for Mullvad Browser
- - - - -
5f26eeb7 by Richard Pospesel at 2024-03-12T11:33:01+01:00
Bug 41659: Add canonical color definitions to base-browser
- - - - -
39760095 by Pier Angelo Vendrame at 2024-03-12T11:33:01+01:00
Bug 41043: Hardcode the UI font on Linux
The mechanism to choose the UI font does not play well with our
fontconfig configuration. As a result, the final criterion to choose
the font for the UI was its version.
Since we hardcode Arimo as a default sans-serif on preferences, we use
it also for the UI. FontConfig will fall back to some other font for
scripts Arimo does not cover as expected (we tested with Japanese).
- - - - -
3488619a by Pier Angelo Vendrame at 2024-03-12T11:33:01+01:00
Bug 42377: Hidden fonts should obey the allow list.
Hidden font families were automatically added to the
`font.system.whitelist`, which is a behavior that conflicts with our
font picking.
- - - - -
bd468a4e by Alex Catarineu at 2024-03-12T11:33:01+01:00
Bug 30605: Honor privacy.spoof_english in Android
This checks `privacy.spoof_english` whenever `setLocales` is
called from Fenix side and sets `intl.accept_languages`
accordingly.
Bug 40198: Expose privacy.spoof_english pref in GeckoView
- - - - -
7e231886 by Alex Catarineu at 2024-03-12T11:33:01+01:00
Bug 40199: Avoid using system locale for intl.accept_languages in GeckoView
- - - - -
9ba3185f by Alex Catarineu at 2024-03-12T11:33:02+01:00
Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware
- - - - -
206e099f by Alex Catarineu at 2024-03-12T11:33:02+01:00
Bug 26345: Hide tracking protection UI
- - - - -
551297b7 by Pier Angelo Vendrame at 2024-03-12T11:33:02+01:00
Bug 9173: Change the default Firefox profile directory to be relative.
This commit makes Firefox look for the default profile directory in a
directory relative to the binary path.
The directory can be specified through the --with-relative-data-dir.
This is relative to the same directory as the firefox main binary for
Linux and Windows.
On macOS, we remove Contents/MacOS from it.
Or, in other words, the directory is relative to the application
bundle.
This behavior can be overriden at runtime, by placing a file called
system-install adjacent to the firefox main binary (also on macOS).
- - - - -
9cf0d4c8 by Pier Angelo Vendrame at 2024-03-12T11:33:02+01:00
fixup! Bug 9173: Change the default Firefox profile directory to be relative.
Force `GenerateAppUserModelID` to use the profile directory in portable
mode.
- - - - -
c9aa600a by Alex Catarineu at 2024-03-12T11:33:03+01:00
Bug 27604: Fix addon issues when moving the profile directory
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1429838
- - - - -
1e46a902 by Mike Perry at 2024-03-12T11:33:03+01:00
Bug 13028: Prevent potential proxy bypass cases.
It looks like these cases should only be invoked in the NSS command line
tools, and not the browser, but I decided to patch them anyway because there
literally is a maze of network function pointers being passed around, and it's
very hard to tell if some random code might not pass in the proper proxied
versions of the networking code here by accident.
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1433509
- - - - -
0568f16f by Igor Oliveira at 2024-03-12T11:33:03+01:00
Bug 23104: Add a default line height compensation
Many fonts have issues with their vertical metrics. they
are used to influence the height of ascenders and depth
of descenders. Gecko uses it to calculate the line height
(font height + ascender + descender), however because of
that idiosyncratic behavior across multiple operating
systems, it can be used to identify the user's OS.
The solution proposed in the patch uses a default factor
to be multiplied with the font size, simulating the concept
of ascender and descender. This way all operating
systems will have the same line height.
- - - - -
2b60581f by Pier Angelo Vendrame at 2024-03-12T11:33:03+01:00
Bug 40309: Avoid using regional OS locales
Avoid regional OS locales if the pref
`intl.regional_prefs.use_os_locales` is false but RFP is enabled.
- - - - -
41fdd499 by Matthew Finkel at 2024-03-12T11:33:03+01:00
Bug 40432: Prevent probing installed applications
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1711084
- - - - -
8c3d4afb by cypherpunks1 at 2024-03-12T11:33:04+01:00
Bug 33955: When copying an image only copy the image contents to the clipboard
- - - - -
5da03d9d by cypherpunks1 at 2024-03-12T11:33:04+01:00
Bug 41791: Omit the source URL when copying page contents to the clipboard
- - - - -
419b2b6a by hackademix at 2024-03-12T11:33:04+01:00
Bug 42288: Allow language spoofing in status messages.
- - - - -
aa424841 by Pier Angelo Vendrame at 2024-03-12T11:33:04+01:00
Base Browser strings
This commit adds all the strings needed by following Base Browser
patches.
- - - - -
52d86fe5 by Henry Wilkes at 2024-03-12T11:33:05+01:00
fixup! Base Browser strings
Bug 42423: Add a base-browser Fluent file that is not passed on to
translators.
- - - - -
46e83244 by hackademix at 2024-03-12T11:33:05+01:00
Bug 41434: Letterboxing, preemptively apply margins in a global CSS rule to mitigate race conditions on newly created windows and tabs.
- - - - -
0584a668 by hackademix at 2024-03-12T11:33:05+01:00
Bug 41434: Letterboxing, improve logging.
- - - - -
265d652c by hackademix at 2024-03-12T11:33:05+01:00
Bug 31064: Letterboxing, exempt browser extensions.
- - - - -
5ccf18ea by hackademix at 2024-03-12T11:33:05+01:00
Bug 32411: Letterboxing, exempt view-source: URIs.
- - - - -
a50953b9 by hackademix at 2024-03-12T11:33:06+01:00
Bug 32308: use direct browser sizing for letterboxing.
Bug 30556: align letterboxing with 200x100 new win width stepping
- - - - -
4eb9b2c6 by hackademix at 2024-03-12T11:33:06+01:00
Bug 41631: Prevent weird initial window dimensions caused by subpixel computations
- - - - -
d0020b39 by hackademix at 2024-03-12T11:33:06+01:00
Bug 41918: Option to reuse last window size when letterboxing is enabled.
- - - - -
90cf7327 by hackademix at 2024-03-12T11:33:06+01:00
fixup! Bug 41918: Option to reuse last window size when letterboxing is enabled.
Fixes typo in RFHelper.sys.mjs (Service -> Services).
- - - - -
d26b0810 by Pier Angelo Vendrame at 2024-03-12T11:33:07+01:00
Bug 41369: Improve Firefox language settings for multi-lingual packages
Change the language selector to be sorted by language code, rather than
name, and to display the language code to the user.
Bug 41372: Handle Japanese as a special case in preferences on macOS
Japanese is treated in a special way on macOS. However, seeing the
Japanese language tag could be confusing for users, and moreover the
language name is not localized correctly like other langs.
Bug 41378: Tell users that they can change their language at the first start
With multi-lingual builds, Tor Browser matches the user's system
language, but some users might want to change it.
So, we tell them that it is possible, but only once.
- - - - -
a5e2037d by p13dz at 2024-03-12T11:33:07+01:00
Bug 40283: Workaround for the file upload bug
- - - - -
3ec735b5 by Arthur Edelstein at 2024-03-12T11:33:07+01:00
Bug 18905: Hide unwanted items from help menu
Bug 25660: Remove the "New Private Window" option
- - - - -
6a72dd3f by cypherpunks1 at 2024-03-12T11:33:07+01:00
Bug 41740: Change the RFP value of devicePixelRatio to 2
- - - - -
34cbd019 by Pier Angelo Vendrame at 2024-03-12T11:33:07+01:00
Bug 41739: Remove "Website appearance" from about:preferences.
It is ignored because of RFP and it is confusing for users.
- - - - -
67327db0 by cypherpunks1 at 2024-03-12T11:33:08+01:00
Bug 41881: Don't persist custom network requests on private windows
- - - - -
4650fb46 by hackademix at 2024-03-12T11:33:08+01:00
Bug 42019: Empty browser's clipboard on browser shutdown
- - - - -
260371b2 by hackademix at 2024-03-12T11:33:08+01:00
Bug 42084: Ensure English spoofing works even if preferences are set out of order.
- - - - -
8950b69c by hackademix at 2024-03-12T11:33:08+01:00
Bug 42397: Change RFP-spoofed TZ to Atlantic/Reykjavik.
- - - - -
7c374644 by Pier Angelo Vendrame at 2024-03-12T11:33:09+01:00
Bug 42376: Pass the locale list when constructing l10n in datetimebox
The datetime input is inconsistent with other inputs when using spoof
English: its placeholder is not translated, unlike the default values
and texts of all the other inputs.
- - - - -
30dbdf7e by Pier Angelo Vendrame at 2024-03-12T11:33:09+01:00
Bug 41603: Customize the creation of MOZ_SOURCE_URL
MOZ_SOURCE_URL is created by combining MOZ_SOURCE_REPO and
MOZ_SOURCE_CHANGESET.
But the code takes for granted that it refers to a Hg instance, so it
combines them as `$MOZ_SOURCE_REPO/rev/$MOZ_SOURCE_CHANGESET`.
With this commit, we change this logic to combine them to create a URL
that is valid for GitLab.
$MOZ_SOURCE_CHANGESET needs to be a commit hash, not a branch or a tag.
If that is needed, we could use /-/tree/, instead of /-/commit/.
- - - - -
50d19dd3 by Henry Wilkes at 2024-03-12T11:33:09+01:00
Bug 31575: Disable Firefox Home (Activity Stream)
Treat about:blank as the default home page and new tab page.
Avoid loading AboutNewTab in BrowserGlue.sys.mjs in order
to avoid several network requests that we do not need.
Bug 41624: Disable about:pocket-* pages.
Bug 40144: Redirect about:privatebrowsing to the user's home
- - - - -
6690093a by Kathy Brade at 2024-03-12T11:33:09+01:00
Bug 4234: Use the Firefox Update Process for Base Browser.
Windows: disable "runas" code path in updater (15201).
Windows: avoid writing to the registry (16236).
Also includes fixes for tickets 13047, 13301, 13356, 13594, 15406,
16014, 16909, 24476, and 25909.
Also fix bug 27221: purge the startup cache if the Base Browser
version changed (even if the Firefox version and build ID did
not change), e.g., after a minor Base Browser update.
Also fix 32616: Disable GetSecureOutputDirectoryPath() functionality.
Bug 26048: potentially confusing "restart to update" message
Within the update doorhanger, remove the misleading message that mentions
that windows will be restored after an update is applied, and replace the
"Restart and Restore" button label with an existing
"Restart to update Tor Browser" string.
Bug 28885: notify users that update is downloading
Add a "Downloading Base Browser update" item which appears in the
hamburger (app) menu while the update service is downloading a MAR
file. Before this change, the browser did not indicate to the user
that an update was in progress, which is especially confusing in
Tor Browser because downloads often take some time. If the user
clicks on the new menu item, the about dialog is opened to allow
the user to see download progress.
As part of this fix, the update service was changed to always show
update-related messages in the hamburger menu, even if the update
was started in the foreground via the about dialog or via the
"Check for Tor Browser Update" toolbar menu item. This change is
consistent with the Tor Browser goal of making sure users are
informed about the update process.
Removed #28885 parts of this patch which have been uplifted to Firefox.
- - - - -
50cf34f5 by Pier Angelo Vendrame at 2024-03-12T11:33:09+01:00
Bug 42061: Create an alpha update channel.
- - - - -
624eeb7e by Nicolas Vigier at 2024-03-12T11:33:10+01:00
Bug 41682: Add base-browser nightly mar signing key
- - - - -
58cd3693 by hackademix at 2024-03-12T11:33:10+01:00
Bug 41695: Warn on window maximization without letterboxing in RFPHelper module
- - - - -
50f85eb8 by Pier Angelo Vendrame at 2024-03-12T11:33:10+01:00
Bug 41698: Reword the recommendation badges in about:addons
Firefox strings use { -brand-product-name }.
As a result, it seems that the fork is recommending extensions, whereas
AMO curators are doing that.
So, we replace the strings with custom ones that clarify that Mozilla is
recommending them.
We assign the strings with JS because our translation backend does not
support Fluent attributes, yet, but once it does, we should switch to
them, instead.
Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1825033
- - - - -
0507ba11 by Pier Angelo Vendrame at 2024-03-12T11:33:10+01:00
Bug 42438: Tweaks to the migration wizard.
Remove the items not compatible with our features (such as history) from
the migration wizard.
On Linux, allow to specify an alternative home directory, since we
usually change $HOME in our startup script.
- - - - -
e266fc94 by Alex Catarineu at 2024-03-12T11:33:11+01:00
Bug 40069: Add helpers for message passing with extensions
- - - - -
30ae6dd9 by Matthew Finkel at 2024-03-12T11:33:11+01:00
Bug 41598: Prevent NoScript from being removed/disabled.
Bug 40253: Explicitly allow NoScript in Private Browsing mode.
- - - - -
d116a66c by Henry Wilkes at 2024-03-12T11:33:11+01:00
Bug 41736: Hide NoScript extension's toolbar button by default.
This hides it from both the toolbar and the unified extensions panel.
We also hide the unified-extension-button if the panel would be empty:
not including the NoScript button when it is hidden. As a result, this
will be hidden by default until a user installs another extension (or
shows the NoScript button and unpins it).
- - - - -
96aa7290 by hackademix at 2024-03-12T11:33:11+01:00
Bug 41834: Hide "Can't Be Removed - learn more" menu line for uninstallable add-ons
- - - - -
04641460 by Pier Angelo Vendrame at 2024-03-12T11:33:12+01:00
Bug 40925: Implemented the Security Level component
This component adds a new Security Level toolbar button which visually
indicates the current global security level via icon (as defined by the
extensions.torbutton.security_slider pref), a drop-down hanger with a
short description of the current security level, and a new section in
the about:preferences#privacy page where users can change their current
security level. In addition, the hanger and the preferences page will
show a visual warning when the user has modified prefs associated with
the security level and provide a one-click 'Restore Defaults' button to
get the user back on recommended settings.
Bug 40125: Expose Security Level pref in GeckoView
- - - - -
2f8f4ec4 by Pier Angelo Vendrame at 2024-03-12T11:33:12+01:00
Bug 40926: Implemented the New Identity feature
- - - - -
7ec14ba1 by hackademix at 2024-03-12T11:33:12+01:00
fixup! Bug 40926: Implemented the New Identity feature
Bug 42236: Let users decide whether to load their home page on new identity.
- - - - -
00cf3ad7 by Henry Wilkes at 2024-03-12T11:33:12+01:00
Bug 41736: Customize toolbar for base-browser.
- - - - -
2c284d58 by Pier Angelo Vendrame at 2024-03-12T11:33:12+01:00
Bug 42027: Base Browser migration procedures.
This commit implmenents the the Base Browser's version of _migrateUI.
- - - - -
bc8494fb by Henry Wilkes at 2024-03-12T11:33:13+01:00
Bug 42308: Create README for tor-browser.
We drop the README.txt that comes from Mozilla Firefox and add README.md
for tor-browser.
- - - - -
0b50e237 by Richard Pospesel at 2024-03-12T11:33:13+01:00
Bug 41649: Create rebase and security backport gitlab issue templates
- - - - -
ca83592b by Henry Wilkes at 2024-03-12T11:33:13+01:00
Add CI for Tor Browser
- - - - -
c70345ba by Richard Pospesel at 2024-03-12T11:33:13+01:00
Bug 41089: Add tor-browser build scripts + Makefile to tor-browser
- - - - -
fa88ae2f by Henry Wilkes at 2024-03-12T11:33:14+01:00
Bug 41803: Add some developer tools for working on tor-browser.
- - - - -
f311eb41 by Kathy Brade at 2024-03-12T11:33:14+01:00
Bug 11641: Disable remoting by default.
Unless the -osint command line flag is used, the browser now defaults
to the equivalent of -no-remote. There is a new -allow-remote flag that
may be used to restore the original (Firefox-like) default behavior.
- - - - -
cc553ea9 by Alex Catarineu at 2024-03-12T11:33:14+01:00
Add TorStrings module for localization
- - - - -
494f8723 by Henry Wilkes at 2024-03-12T11:33:14+01:00
fixup! Add TorStrings module for localization
Bug 42442: Remove unused bridge settings strings.
- - - - -
c9e630af by hackademix at 2024-03-12T21:22:37+01:00
fixup! Add TorStrings module for localization
Bug 42440: Remove the "Prioritize .onion sites when known" option
- - - - -
8890a1c9 by Henry Wilkes at 2024-03-12T21:22:38+01:00
Tor Browser strings
This commit adds all the strings needed for Tor Browser patches.
- - - - -
82a0865e by Henry Wilkes at 2024-03-12T21:22:38+01:00
fixup! Tor Browser strings
Bug 42423: Add a tor-browser Fluent file that is not passed on to
translators.
- - - - -
dd4ff986 by Henry Wilkes at 2024-03-12T21:22:38+01:00
fixup! Tor Browser strings
Bug 42425: Move the bridge emoji accessible name into the image.
- - - - -
6813decd by Henry Wilkes at 2024-03-12T21:22:38+01:00
Tor Browser localization migration scripts.
- - - - -
b1917265 by Henry Wilkes at 2024-03-12T21:22:39+01:00
fixup! Tor Browser localization migration scripts.
Bug 42305: Move localization scripts into new folder.
- - - - -
ab4f1526 by Henry Wilkes at 2024-03-12T21:22:39+01:00
Bug 42305: Add script to combine translation files across versions.
- - - - -
ab3f9a99 by Mike Perry at 2024-03-12T21:22:39+01:00
Bug 2176: Rebrand Firefox to TorBrowser
See also Bugs #5194, #7187, #8115, #8219.
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
Also fix bug 27905.
Bug 25702: Update Tor Browser icon to follow design guidelines
- Updated all of the branding in /browser/branding/official with new 'stable'
icon series.
- Updated /extensions/onboarding/content/img/tor-watermark.png with new icon and
add the source svg in the same directory
- Copied /browser/branding/official over /browser/branding/nightly and the new
/browser/branding/alpha directories. Replaced content with 'nightly' and
'alpha' icon series.
Updated VisualElements_70.png and VisualElements_150.png with updated icons in
each branding directory (fixes #22654)
- Updated firefox.VisualElementsManfiest.xml with updated colors in each
branding directory
- Added firefox.svg to each branding directory from which all the other icons
are derived (apart from document.icns and document.ico)
- Added default256.png and default512.png icons
- Updated aboutTBUpdate.css to point to branding-aware icon128.png and removed
original icon
- Use the Tor Browser icon within devtools/client/themes/images/.
Bug 30631: Blurry Tor Browser icon on macOS app switcher
It would seem the png2icns tool does not generate correct icns files and
so on macOS the larger icons were missing resulting in blurry icons in
the OS chrome. Regenerated the padded icons in a macOS VM using
iconutil.
Bug 28196: preparations for using torbutton tor-browser-brand.ftl
A small change to Fluent FileSource class is required so that we
can register a new source without its supported locales being
counted as available locales for the browser.
Bug 31803: Replaced about:debugging logo with flat version
Bug 21724: Make Firefox and Tor Browser distinct macOS apps
When macOS opens a document or selects a default browser, it sometimes
uses the CFBundleSignature. Changing from the Firefox MOZB signature to
a different signature TORB allows macOS to distinguish between Firefox
and Tor Browser.
Bug 32092: Fix Tor Browser Support link in preferences
For bug 40562, we moved onionPattern* from bug 27476 to here, as
about:tor needs these files but it is included earlier.
Bug 41278: Create Tor Browser styled pdf logo similar to the vanilla Firefox one
Bug 42088: New application icons (used in-app and on linux).
Bug 42087: New application icons (windows).
- - - - -
f4e840d2 by Pier Angelo Vendrame at 2024-03-12T21:22:39+01:00
fixup! Bug 2176: Rebrand Firefox to TorBrowser
Include the channel in the display name
- - - - -
98eea4ab by hackademix at 2024-03-12T21:22:39+01:00
Bug 41917: Tor brand-specific styles.
- - - - -
befb8e4d by sanketh at 2024-03-12T21:22:40+01:00
Bug 40209: Implement Basic Crypto Safety
Adds a CryptoSafety actor which detects when you've copied a crypto
address from a HTTP webpage and shows a warning.
Closes #40209.
Bug 40428: Fix string attribute names
- - - - -
13192a02 by Mike Perry at 2024-03-12T21:22:40+01:00
TB3: Tor Browser's official .mozconfigs.
Also:
Add an --enable-tor-browser-data-outside-app-dir configure option
Add --with-tor-browser-version configure option
Bug 31457: disable per-installation profiles
The dedicated profiles (per-installation) feature does not interact
well with our bundled profiles on Linux and Windows, and it also causes
multiple profiles to be created on macOS under TorBrowser-Data.
Bug 31935: Disable profile downgrade protection.
Since Tor Browser does not support more than one profile, disable
the prompt and associated code that offers to create one when a
version downgrade situation is detected.
Add --enable-tor-browser-update build option
Bug 40793: moved Tor configuration options from old-configure.in to moz.configure
Bug 41584: Move some configuration options to base-browser level
- - - - -
79ee3d4f by Pier Angelo Vendrame at 2024-03-12T21:22:40+01:00
fixup! TB3: Tor Browser's official .mozconfigs.
Bug 42398: Include the channel in MOZ_APP_DISPLAYNAME
This variable is defined in the branding configuration, no need to
repeat it in the mozconfig.
- - - - -
fe3a346d by Henry Wilkes at 2024-03-12T21:22:40+01:00
Bug 41340: Enable TOR_BROWSER_NIGHTLY_BUILD features for dev and nightly builds
tor-browser#41285: Enable fluent warnings.
- - - - -
b0d7011e by Pier Angelo Vendrame at 2024-03-12T21:22:40+01:00
Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Before reordering patches, we used to keep the Tor-related patches
(torbutton and tor-launcher) at the beginning.
After that issue, we decided to move them towards the end.
In addition to that, we have decided to move Tor Browser-only
preferences there, too, to make Base Browser-only fixups easier to
apply.
- - - - -
602bcd2a by Cecylia Bocovich at 2024-03-12T21:22:41+01:00
fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Bug 42435: Update moat domain fronting configuration
- - - - -
1a6e2789 by Henry Wilkes at 2024-03-12T21:22:41+01:00
fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Bug 42437: Drop "torbrowser.version" pref.
- - - - -
89bc894b by Pier Angelo Vendrame at 2024-03-12T21:22:41+01:00
Bug 13252: Customize profile management on macOS
On macOS we allow both portable mode and system installation.
However, in the latter case, we customize Firefox's directories to
match the hierarchy we use for the portable mode.
Also, display an informative error message if the TorBrowser-Data
directory cannot be created due to an "access denied" or a
"read only volume" error.
- - - - -
6b49321d by Pier Angelo Vendrame at 2024-03-12T21:22:41+01:00
Bug 40933: Add tor-launcher functionality
Bug 41926: Reimplement the control port
- - - - -
a7717123 by Pier Angelo Vendrame at 2024-03-12T21:22:41+01:00
fixup! Bug 40933: Add tor-launcher functionality
Bug 42336: Rework the relationship between TorSettings and TorProvider.
- - - - -
7c480676 by Cecylia Bocovich at 2024-03-12T21:22:42+01:00
Lox integration
- - - - -
9ade2db7 by Richard Pospesel at 2024-03-12T21:22:42+01:00
Bug 40597: Implement TorSettings module
- migrated in-page settings read/write implementation from about:preferences#tor
to the TorSettings module
- TorSettings initially loads settings from the tor daemon, and saves them to
firefox prefs
- TorSettings notifies observers when a setting has changed; currently only
QuickStart notification is implemented for parity with previous preference
notify logic in about:torconnect and about:preferences#tor
- about:preferences#tor, and about:torconnect now read and write settings
thorugh the TorSettings module
- all tor settings live in the torbrowser.settings.* preference branch
- removed unused pref modify permission for about:torconnect content page from
AsyncPrefs.jsm
Bug 40645: Migrate Moat APIs to Moat.jsm module
- - - - -
93fdc92f by Pier Angelo Vendrame at 2024-03-12T21:22:42+01:00
fixup! Bug 40597: Implement TorSettings module
Update snowflake builtin bridges to use cdn77 domain front.
Cherry-picked from tor-browser-build@0554d981793e6beb280cd8bd12e01081ca0e4c59.
- - - - -
c34b67ca by Pier Angelo Vendrame at 2024-03-12T21:22:42+01:00
fixup! Bug 40597: Implement TorSettings module
Bug 42336: Rework the relationship between TorSettings and TorProvider.
- - - - -
06830c8b by Pier Angelo Vendrame at 2024-03-12T21:22:42+01:00
fixup! Bug 40597: Implement TorSettings module
Use a logger instead of console in TorConnect.
- - - - -
e0e2ff58 by Arthur Edelstein at 2024-03-12T21:22:43+01:00
Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Add an XPCOM component that registers a ProtocolProxyChannelFilter
which sets the username/password for each web request according to
url bar domain.
Bug 9442: Add New Circuit button
Bug 13766: Set a 10 minute circuit dirty timeout for the catch-all circ.
Bug 19206: Include a 128 bit random tag as part of the domain isolator nonce.
Bug 19206: Clear out the domain isolator state on `New Identity`.
Bug 21201.2: Isolate by firstPartyDomain from OriginAttributes
Bug 21745: Fix handling of catch-all circuit
Bug 41741: Refactor the domain isolator and new circuit
- - - - -
87af31e1 by Henry Wilkes at 2024-03-12T21:22:43+01:00
Bug 41600: Add a tor circuit display panel.
- - - - -
237e2150 by Pier Angelo Vendrame at 2024-03-12T21:22:43+01:00
Bug 42247: Android helpers for the TorProvider
GeckoView is missing some API we use on desktop for the integration
with the tor daemon, such as subprocess.
Therefore, we need to implement them in Java and plumb the data
back and forth between JS and Java.
- - - - -
3ddd37dd by Pier Angelo Vendrame at 2024-03-12T21:22:43+01:00
fixup! Bug 42247: Android helpers for the TorProvider
Bug 42336: Rework the relationship between TorSettings and TorProvider.
- - - - -
7fa1343e by hackademix at 2024-03-12T21:22:44+01:00
Bug 8324: Prevent DNS proxy bypasses caused by Drag&Drop
Bug 41613: Skip Drang & Drop filtering for DNS-safe URLs
- - - - -
4bd1be6e by Amogh Pradeep at 2024-03-12T21:22:44+01:00
Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
See Bug 1357997 for partial uplift.
Also:
Bug 28051 - Use our Orbot for proxying our connections
Bug 31144 - ESR68 Network Code Review
- - - - -
143de921 by Matthew Finkel at 2024-03-12T21:22:44+01:00
Bug 25741: TBA: Disable GeckoNetworkManager
The browser should not need information related to the network
interface or network state, tor should take care of that.
- - - - -
b1adcfed by Kathy Brade at 2024-03-12T21:22:44+01:00
Bug 14631: Improve profile access error messages.
Instead of always reporting that the profile is locked, display specific
messages for "access denied" and "read-only file system".
To allow for localization, get profile-related error strings from Torbutton.
Use app display name ("Tor Browser") in profile-related error alerts.
- - - - -
41116044 by Pier Angelo Vendrame at 2024-03-12T21:22:44+01:00
Bug 40807: Added QRCode.js to toolkit/modules
- - - - -
02409992 by Richard Pospesel at 2024-03-12T21:22:45+01:00
Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
This patch adds a new about:preferences#connection page which allows
modifying bridge, proxy, and firewall settings from within Tor Browser.
All of the functionality present in tor-launcher's Network
Configuration panel is present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
- The Networking Settings in General preferences has been removed
Bug 40774: Update about:preferences page to match new UI designs
- - - - -
ffa107ee by Henry Wilkes at 2024-03-12T21:22:45+01:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42423: Move temporary Lox invite strings to new file.
- - - - -
476ca630 by Henry Wilkes at 2024-03-12T21:22:45+01:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42425: Move the accessible name of the emoji cells from the cell to
its image child.
NVDA only reads the text content of a cell when navigating a "table".
Also, change the "table" in the user provide dialog to use the role
"cell" rather than "gridcell" (the later is only meant for the "grid"
role).
The "Emoji" description is incorporated into the "alt" of the image
instead. Before the description was not read out when doing screen
reader table navigation with either Orca or NVDA.
- - - - -
fc0e0e42 by Henry Wilkes at 2024-03-12T21:22:45+01:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42421: Hide the option to remove individual Lox bridges.
We also adjust the "Remove all bridges" callback to simply set the
"TorSettings.bridge.source" to be "Invalid" since this is more
source-independent, and TorSettings will handle clearing the bridge
strings for us.
- - - - -
61bef670 by Pier Angelo Vendrame at 2024-03-12T21:22:45+01:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42336: Rework the relationship between TorSettings and TorProvider.
- - - - -
6cba3b6e by Richard Pospesel at 2024-03-12T21:22:46+01:00
Bug 27476: Implement about:torconnect captive portal within Tor Browser
- implements new about:torconnect page as tor-launcher replacement
- adds new torconnect component to browser
- tor process management functionality remains implemented in tor-launcher through the TorProtocolService module
- adds warning/error box to about:preferences#tor when not connected to tor
Bug 40773: Update the about:torconnect frontend page to match additional UI flows.
Bug 41608: Add a toolbar status button and a urlbar "Connect" button.
- - - - -
09d1a49d by Pier Angelo Vendrame at 2024-03-12T21:22:46+01:00
Temporary changes to about:torconnect for Android.
We are planning of tempoorarily using about:torconnect on Android, until
the native UX is ready.
- - - - -
30c6f528 by Henry Wilkes at 2024-03-12T21:22:46+01:00
Bug 7494: Create local home page for TBB.
Bug 41333: Update about:tor to new design. Including:
+ make the favicon match the branding icon.
+ make the location bar show a search icon.
- - - - -
17543228 by Henry Wilkes at 2024-03-12T21:22:46+01:00
fixup! Bug 7494: Create local home page for TBB.
Bug 42437: Drop "torbrowser.version" pref.
- - - - -
15229602 by Arthur Edelstein at 2024-03-12T21:22:47+01:00
Bug 12620: TorBrowser regression tests
Regression tests for Bug #2950: Make Permissions Manager memory-only
Regression tests for TB4: Tor Browser's Firefox preference overrides.
Note: many more functional tests could be made here
Regression tests for #2874: Block Components.interfaces from content
Bug 18923: Add a script to run all Tor Browser specific tests
Regression tests for Bug #16441: Suppress "Reset Tor Browser" prompt.
- - - - -
0d26a417 by Henry Wilkes at 2024-03-12T21:22:47+01:00
fixup! Bug 12620: TorBrowser regression tests
Bug 42437: Drop "torbrowser.version" pref.
- - - - -
67fa7020 by Pier Angelo Vendrame at 2024-03-12T21:22:47+01:00
Bug 41668: Tweaks to the Base Browser updater for Tor Browser
This commit was once part of "Bug 4234: Use the Firefox Update Process
for Tor Browser.".
However, some parts of it were not needed for Base Browser and some
derivative browsers.
Therefore, we extracted from that commit the parts for Tor Browser
legacy, and we add them back to the patch set with this commit.
- - - - -
2488f8ea by Kathy Brade at 2024-03-12T21:22:47+01:00
Bug 12647: Support symlinks in the updater.
- - - - -
1e795ab1 by Kathy Brade at 2024-03-12T21:22:47+01:00
Bug 19121: reinstate the update.xml hash check
This is a partial revert of commit f1241db6986e4b54473a1ed870f7584c75d51122.
Revert most changes from Mozilla Bug 862173 "don't verify mar file hash
when using mar signing to verify the mar file (lessens main thread I/O)."
We kept the addition to the AppConstants API in case other JS code
references it in the future.
- - - - -
28138e1b by Kathy Brade at 2024-03-12T21:22:48+01:00
Bug 16940: After update, load local change notes.
Add an about:tbupdate page that displays the first section from
TorBrowser/Docs/ChangeLog.txt and includes a link to the remote
post-update page (typically our blog entry for the release).
Always load about:tbupdate in a content process, but implement the
code that reads the file system (changelog) in the chrome process
for compatibility with future sandboxing efforts.
Also fix bug 29440. Now about:tbupdate is styled as a fairly simple
changelog page that is designed to be displayed via a link that is on
about:tor.
- - - - -
3f44f8c2 by Georg Koppen at 2024-03-12T21:22:48+01:00
Bug 32658: Create a new MAR signing key
It's time for our rotation again: Move the backup key in the front
position and add a new backup key.
Bug 33803: Move our primary nightly MAR signing key to tor-browser
Bug 33803: Add a secondary nightly MAR signing key
- - - - -
ac1a0994 by Mike Perry at 2024-03-12T21:22:48+01:00
Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
eBay and Amazon don't treat Tor users very well. Accounts often get locked and
payments reversed.
Also:
Bug 16322: Update DuckDuckGo search engine
We are replacing the clearnet URL with an onion service one (thanks to a
patch by a cypherpunk) and are removing the duplicated DDG search
engine. Duplicating DDG happend due to bug 1061736 where Mozilla
included DDG itself into Firefox. Interestingly, this caused breaking
the DDG search if JavaScript is disabled as the Mozilla engine, which
gets loaded earlier, does not use the html version of the search page.
Moreover, the Mozilla engine tracked where the users were searching from
by adding a respective parameter to the search query. We got rid of that
feature as well.
Also:
This fixes bug 20809: the DuckDuckGo team has changed its server-side
code in a way that lets users with JavaScript enabled use the default
landing page while those without JavaScript available get redirected
directly to the non-JS page. We adapt the search engine URLs
accordingly.
Also fixes bug 29798 by making sure we only specify the Google search
engine we actually ship an .xml file for.
Also regression tests.
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 40494: Update Startpage search provider
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 40438: Add Blockchair as a search engine
Bug 33342: Avoid disconnect search addon error after removal.
We removed the addon in #32767, but it was still being loaded
from addonStartup.json.lz4 and throwing an error on startup
because its resource: location is not available anymore.
- - - - -
c940df6c by Alex Catarineu at 2024-03-12T21:22:48+01:00
Bug 40073: Disable remote Public Suffix List fetching
In https://bugzilla.mozilla.org/show_bug.cgi?id=1563246 Firefox implemented
fetching the Public Suffix List via RemoteSettings and replacing the default
one at runtime, which we do not want.
- - - - -
0d22c764 by Henry Wilkes at 2024-03-12T21:22:48+01:00
Bug 41906: Hide DNS over HTTPS preferences.
- - - - -
5411a7ed by Richard Pospesel at 2024-03-12T21:22:49+01:00
Bug 23247: Communicating security expectations for .onion
Encrypting pages hosted on Onion Services with SSL/TLS is redundant
(in terms of hiding content) as all traffic within the Tor network is
already fully encrypted. Therefore, serving HTTP pages from an Onion
Service is more or less fine.
Prior to this patch, Tor Browser would mostly treat pages delivered
via Onion Services as well as pages delivered in the ordinary fashion
over the internet in the same way. This created some inconsistencies
in behaviour and misinformation presented to the user relating to the
security of pages delivered via Onion Services:
- HTTP Onion Service pages did not have any 'lock' icon indicating
the site was secure
- HTTP Onion Service pages would be marked as unencrypted in the Page
Info screen
- Mixed-mode content restrictions did not apply to HTTP Onion Service
pages embedding Non-Onion HTTP content
This patch fixes the above issues, and also adds several new 'Onion'
icons to the mix to indicate all of the various permutations of Onion
Services hosted HTTP or HTTPS pages with HTTP or HTTPS content.
Strings for Onion Service Page Info page are pulled from Torbutton's
localization strings.
- - - - -
6f3d5e23 by Kathy Brade at 2024-03-12T21:22:49+01:00
Bug 30237: Add v3 onion services client authentication prompt
When Tor informs the browser that client authentication is needed,
temporarily load about:blank instead of about:neterror and prompt
for the user's key.
If a correctly formatted key is entered, use Tor's ONION_CLIENT_AUTH_ADD
control port command to add the key (via Torbutton's control port
module) and reload the page.
If the user cancels the prompt, display the standard about:neterror
"Unable to connect" page. This requires a small change to
browser/actors/NetErrorChild.jsm to account for the fact that the
docShell no longer has the failedChannel information. The failedChannel
is used to extract TLS-related error info, which is not applicable
in the case of a canceled .onion authentication prompt.
Add a leaveOpen option to PopupNotifications.show so we can display
error messages within the popup notification doorhanger without
closing the prompt.
Add support for onion services strings to the TorStrings module.
Add support for Tor extended SOCKS errors (Tor proposal 304) to the
socket transport and SOCKS layers. Improved display of all of these
errors will be implemented as part of bug 30025.
Also fixes bug 19757:
Add a "Remember this key" checkbox to the client auth prompt.
Add an "Onion Services Authentication" section within the
about:preferences "Privacy & Security section" to allow
viewing and removal of v3 onion client auth keys that have
been stored on disk.
Also fixes bug 19251: use enhanced error pages for onion service errors.
- - - - -
57af6feb by Alex Catarineu at 2024-03-12T21:22:49+01:00
Bug 21952: Implement Onion-Location
Whenever a valid Onion-Location HTTP header (or corresponding HTML
<meta> http-equiv attribute) is found in a document load, we either
redirect to it (if the user opted-in via preference) or notify the
presence of an onionsite alternative with a badge in the urlbar.
- - - - -
9920c722 by hackademix at 2024-03-12T21:22:49+01:00
fixup! Bug 21952: Implement Onion-Location
Bug 42440: Remove the "Prioritize .onion sites when known" option
- - - - -
6e8ffd46 by Pier Angelo Vendrame at 2024-03-12T21:22:50+01:00
Bug 40458: Implement .tor.onion aliases
We have enabled HTTPS-Only mode, therefore we do not need
HTTPS-Everywhere anymore.
However, we want to keep supporting .tor.onion aliases (especially for
securedrop).
Therefore, in this patch we implemented the parsing of HTTPS-Everywhere
rulesets, and the redirect of .tor.onion domains.
Actually, Tor Browser believes they are actual domains. We change them
on the fly on the SOCKS proxy requests to resolve the domain, and on
the code that verifies HTTPS certificates.
- - - - -
b19933b1 by Pier Angelo Vendrame at 2024-03-12T21:22:50+01:00
Bug 11698: Incorporate Tor Browser Manual pages into Tor Browser
This patch associates the about:manual page to a translated page that
must be injected to browser/omni.ja after the build.
The content must be placed in chrome/browser/content/browser/manual/, so
that is then available at chrome://browser/content/manual/.
We preferred giving absolute freedom to the web team, rather than having
to change the patch in case of changes on the documentation.
- - - - -
e4ec32e1 by Pier Angelo Vendrame at 2024-03-12T21:22:50+01:00
Bug 41435: Add a Tor Browser migration function
For now this function only deletes old language packs for which we are
already packaging the strings with the application.
- - - - -
3ad54e3a by Henry Wilkes at 2024-03-12T21:22:50+01:00
Bug 42110: Add TorUIUtils module for common tor component methods.
- - - - -
a05def09 by Dan Ballard at 2024-03-12T21:22:50+01:00
Bug 40701: Add security warning when downloading a file
Shown in the downloads panel, about:downloads and places.xhtml.
- - - - -
e1fc34c9 by Henry Wilkes at 2024-03-12T21:22:51+01:00
Bug 41736: Customize toolbar for tor-browser.
- - - - -
e615942e by hackademix at 2024-03-12T21:22:51+01:00
Bug 41728: Pin bridges.torproject.org domains to Let's Encrypt's root cert public key
- - - - -
fc282177 by Henry Wilkes at 2024-03-12T21:22:51+01:00
Customize moz-toggle for tor-browser.
- - - - -
0be8ae4f by Richard Pospesel at 2024-03-12T21:22:51+01:00
Bug 41822: Unconditionally disable default browser UX in about:preferences
- - - - -
a4804466 by Cecylia Bocovich at 2024-03-12T21:22:51+01:00
Temporary commit: manually place generated wasm files
These files are built reproducibly using tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/merge_re…
We're manually adding them here while working on the interface, but
eventually these should be placed in the right location using
tor-browser-build.
- - - - -
30 changed files:
- .eslintignore
- .gitignore
- + .gitlab-ci.yml
- + .gitlab/issue_templates/Backport Android Security Fixes.md
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- + .gitlab/issue_templates/bug.md
- + .gitlab/merge_request_templates/default.md
- + README.md
- − README.txt
- accessible/android/SessionAccessibility.cpp
- accessible/android/SessionAccessibility.h
- accessible/ipc/DocAccessibleParent.cpp
- accessible/ipc/DocAccessibleParent.h
- accessible/ipc/moz.build
- + browser/actors/AboutTBUpdateChild.jsm
- + browser/actors/AboutTBUpdateParent.jsm
- + browser/actors/CryptoSafetyChild.jsm
- + browser/actors/CryptoSafetyParent.jsm
- − browser/actors/RFPHelperChild.sys.mjs
- − browser/actors/RFPHelperParent.sys.mjs
- browser/actors/moz.build
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/macbuild/Contents/MacOS-files.in
- browser/app/moz.build
- browser/app/permissions
- + browser/app/profile/000-tor-browser.js
- + browser/app/profile/001-base-profile.js
- browser/app/profile/firefox.js
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cf4437…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cf4437…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.0-1] 150 commits: Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
by richard (@richard) 12 Mar '24
by richard (@richard) 12 Mar '24
12 Mar '24
richard pushed to branch tor-browser-115.9.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
d2b1c1d1 by Eitan Isaacson at 2024-03-11T16:32:34+01:00
Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D179737
- - - - -
23fcc363 by Pier Angelo Vendrame at 2024-03-11T16:32:35+01:00
Bug 1832523 - Allow using NSS to sign and verify MAR signatures. r=application-update-reviewers,glandium,bytesized
Allow using NSS for checking MAR signatures also in platforms where
OS-native APIs are used by default, i.e., macOS and Windows.
Differential Revision: https://phabricator.services.mozilla.com/D177743
- - - - -
b20022a4 by Pier Angelo Vendrame at 2024-03-11T16:32:35+01:00
Bug 1849129: Prevent exceptions caused by extensions from interrupting the SearchService initialization. r=search-reviewers,Standard8
Differential Revision: https://phabricator.services.mozilla.com/D186456
- - - - -
4839f003 by Emilio Cobos Álvarez at 2024-03-11T16:32:35+01:00
Bug 1853731 - Use html:img for message-bar-icon. r=Gijs,dao,settings-reviewers,desktop-theme-reviewers,sfoster
Differential Revision: https://phabricator.services.mozilla.com/D188521
- - - - -
c9e1e91f by Pier Angelo Vendrame at 2024-03-11T16:32:35+01:00
Bug 1854117 - Sort the DLL blocklist flags. r=mossop,win-reviewers,gstoll
Differential Revision: https://phabricator.services.mozilla.com/D188716
- - - - -
6122f0fe by Eden Chuang at 2024-03-11T16:32:35+01:00
Bug 1738426 - Ignoring status 206 and vary header checking for opaque response in Cache API. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D186431
- - - - -
6aab5479 by edgul at 2024-03-11T16:32:36+01:00
Bug 1802057 - Block the following characters from use in the cookie name in the cookie string: 0x3B (semi-colon), 0x3D (equals), and 0x7F (del) r=dveditz,cookie-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D182373
- - - - -
4711e146 by Kelsey Gilbert at 2024-03-11T16:32:36+01:00
Bug 1819497 - Don't race on static bool for initialization. r=gfx-reviewers,aosmond
We could do non-racy static init here (e.g. with a static initializer
self-calling-closure), but there doesn't seem to be a strong reason for
this. Let's just use a switch and get robustness from -Werror=switch.
Differential Revision: https://phabricator.services.mozilla.com/D188054
- - - - -
7760af1d by Mark Banner at 2024-03-11T16:32:36+01:00
Bug 1845752. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D186676
- - - - -
0d354ba5 by Bob Owen at 2024-03-11T16:32:36+01:00
Bug 1850072: Initialize RecordedDrawTargetCreation::mHasExistingData. r=jrmuizel
This also specializes ElementStreamFormat for bool.
Differential Revision: https://phabricator.services.mozilla.com/D187794
- - - - -
84f61d81 by Malte Juergens at 2024-03-11T16:32:36+01:00
Bug 1850200 - Add delay to HTTPS-Only "Continue to HTTPS Site" button r=freddyb
Differential Revision: https://phabricator.services.mozilla.com/D187887
- - - - -
fe596fa1 by Andreas Pehrson at 2024-03-11T16:32:37+01:00
Bug 1851803 - Introduce SourceMediaTrack::mDirectDisabledMode. r=karlt
Similar to MediaTrack::mDisabledMode, but this is for uses on the
SourceMediaTrack producer thread. It is still signaled via a control message
from the control thread to maintain order of operations, and is protected by the
SourceMediaTrack mutex.
Differential Revision: https://phabricator.services.mozilla.com/D187554
- - - - -
8906e65f by Pier Angelo Vendrame at 2024-03-11T16:32:37+01:00
Bug 1860020 - Remove the assertion on the value of toolkit.telemetry.enabled. r=KrisWright,chutten
Bug 1444275 introduced an assertion on the parent process to check that
the value of toolkit.telemetry.enabled is the expected one.
However, this expected value could be different from the one set and
locked e.g. in some forks. Therefore, the assertion prevented debug
builds from working in these cases.
Differential Revision: https://phabricator.services.mozilla.com/D195080
- - - - -
4f55001d by Kagami Sascha Rosylight at 2024-03-11T16:32:37+01:00
Bug 1865238 - Use One UI Sans KR VF for Korean sans-serif font on Android r=jfkthame
Per /etc/fonts.xml, there are now only two `<family lang="ko">` nodes there:
* OneUISansKRVF series
* SECCJK series (but no KR postfix anymore?)
This patch uses One UI Sans KR VF as the replacement as this is newer and is a variable font (tested with https://codepen.io/SaschaNaz/pen/ExrdYXJ)
Differential Revision: https://phabricator.services.mozilla.com/D195078
- - - - -
1648f425 by Pier Angelo Vendrame at 2024-03-11T16:32:49+01:00
Bug 1875306 - Localize numbers in the underflow and overflow error messages. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D198965
- - - - -
142c7b81 by Pier Angelo Vendrame at 2024-03-11T16:32:49+01:00
Bug 1875313 - Use en-US as a fallback when spoof English is enabled in ICUUtils. r=timhuang,tjr
Differential Revision: https://phabricator.services.mozilla.com/D198967
- - - - -
53ce727f by Pier Angelo Vendrame at 2024-03-12T11:26:14+01:00
Bug 1880988 - Apply spoof English to the default detail summary. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D202203
- - - - -
47109659 by Henry Wilkes at 2024-03-12T11:26:14+01:00
Bug 41454: Move focus after calling openPreferences for a sub-category.
Temporary fix until mozilla bug 1799153 gets a patch upstream.
- - - - -
4edc0d8e by hackademix at 2024-03-12T11:26:15+01:00
Bug 42194: Fix blank net error page on failed DNS resolution with active proxy.
- - - - -
ef724c19 by Henry Wilkes at 2024-03-12T11:26:15+01:00
Bug 41483: Remove the firefox override for appstrings.properties
Remove this patch after upstream bugzilla bug 1790187
- - - - -
c0e7b3f3 by Pier Angelo Vendrame at 2024-03-12T11:26:15+01:00
Bug 41116: Normalize system fonts.
System fonts are an enormous fingerprinting vector.
Even with font allow lists and with our custom configuration on Linux,
which counter metrics measurements, getComputedStyle leaks several
details.
This patch counters both these kinds of attacks.
- - - - -
f4013f95 by Marco Simonelli at 2024-03-12T11:26:15+01:00
Bug 41459: WebRTC fails to build under mingw (Part 1)
- properly define NOMINMAX for just MSVC builds
- - - - -
25f21096 by Marco Simonelli at 2024-03-12T11:26:16+01:00
Bug 41459: WebRTC fails to build under mingw (Part 2)
- fixes required to build third_party/libwebrtc
- - - - -
f969a9b9 by Marco Simonelli at 2024-03-12T11:26:16+01:00
Bug 41459: WebRTC fails to build under mingw (Part 3)
- fixes required to build third_party/sipcc
- - - - -
73337325 by Marco Simonelli at 2024-03-12T11:26:16+01:00
Bug 41459: WebRTC fails to build under mingw (Part 4)
- fixes requried to build netwerk/sctp
- - - - -
409c716a by Marco Simonelli at 2024-03-12T11:26:16+01:00
Bug 41459: WebRTC fails to build under mingw (Part 5)
- fixes required to build dom/media/webrtc
- - - - -
5676971c by Marco Simonelli at 2024-03-12T11:26:16+01:00
Bug 41459: WebRTC fails to build under mingw (Part 6)
- fixes required to build dom/media/systemservices
- - - - -
ac7a471f by hackademix at 2024-03-12T11:26:17+01:00
Bug 41854: Allow overriding download spam protection.
- - - - -
6fda2f19 by Gaba at 2024-03-12T11:26:17+01:00
Adding issue and merge request templates
- - - - -
af7d8731 by Pier Angelo Vendrame at 2024-03-12T11:26:17+01:00
Base Browser's .mozconfigs.
Bug 17858: Cannot create incremental MARs for hardened builds.
Define HOST_CFLAGS, etc. to avoid compiling programs such as mbsdiff
(which is part of mar-tools and is not distributed to end-users) with
ASan.
Bug 21849: Don't allow SSL key logging.
Bug 25741 - TBA: Disable features at compile-time
Define MOZ_ANDROID_NETWORK_STATE and MOZ_ANDROID_LOCATION
Bug 27623 - Export MOZILLA_OFFICIAL during desktop builds
This fixes a problem where some preferences had the wrong default value.
Also see bug 27472 where we made a similar fix for Android.
Bug 29859: Disable HLS support for now
Bug 30463: Explicitly disable MOZ_TELEMETRY_REPORTING
Bug 32493: Disable MOZ_SERVICES_HEALTHREPORT
Bug 33734: Set MOZ_NORMANDY to False
Bug 33851: Omit Parental Controls.
Bug 40252: Add --enable-rust-simd to our tor-browser mozconfig files
Bug 41584: Move some configuration options to base-browser level
- - - - -
95102012 by Pier Angelo Vendrame at 2024-03-12T11:26:17+01:00
Tweaks to the build system
Bug 40857: Modified the fat .aar creation file
This is a workaround to build fat .aars with the compiling enviornment
disabled.
Mozilla does not use a similar configuration, but either runs a Firefox
build and discards its output, or uses artifacts build.
We might switch to artifact builds too, and drop this patch, or write a
better one to upstream. But until then we need this patch.
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1763770.
Bug 41458: Prevent `mach package-multi-locale` from actually creating a package
macOS builds need some files to be moved around with
./mach package-multi-locale to create multi-locale packages.
The required command isn't exposed through any other mach command.
So, we patch package-multi-locale both to prevent it from failing when
doing official builds and to detect any future changes on it.
- - - - -
440ff555 by Pier Angelo Vendrame at 2024-03-12T11:26:18+01:00
Bug 41108: Remove privileged macOS installation from 102
- - - - -
d6b07750 by Dan Ballard at 2024-03-12T11:26:18+01:00
Bug 41149: Re-enable DLL injection protection in all builds not just nightlies
- - - - -
8bf1c9b8 by Matthew Finkel at 2024-03-12T11:26:18+01:00
Bug 24796: Comment out excess permissions from GeckoView
The GeckoView AndroidManifest.xml is not preprocessed unlike Fennec's
manifest, so we can't use the ifdef preprocessor guards around the
permissions we do not want. Commenting the permissions is the
next-best-thing.
- - - - -
8ee6abbb by Matthew Finkel at 2024-03-12T11:26:18+01:00
Bug 28125: Prevent non-Necko network connections
- - - - -
3bb4dfec by Mike Perry at 2024-03-12T11:26:19+01:00
Bug 12974: Disable NTLM and Negotiate HTTP Auth
The Mozilla bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1046421,
https://bugzilla.mozilla.org/show_bug.cgi?id=1261591, tor-browser#27602
- - - - -
ff44a22f by Alex Catarineu at 2024-03-12T11:26:19+01:00
Bug 40166: Disable security.certerrors.mitm.auto_enable_enterprise_roots
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1768899
- - - - -
8e253876 by Georg Koppen at 2024-03-12T11:26:19+01:00
Bug 16285: Exclude ClearKey system for now
In the past the ClearKey system had not been compiled when specifying
--disable-eme. But that changed and it is even bundled nowadays (see:
Mozilla's bug 1300654). We don't want to ship it right now as the use
case for it is not really visible while the code had security
vulnerabilities in the past.
- - - - -
02e18ebb by Kathy Brade at 2024-03-12T11:26:19+01:00
Bug 21431: Clean-up system extensions shipped in Firefox
Only ship the pdfjs extension.
- - - - -
ee5000fb by Kathy Brade at 2024-03-12T11:26:19+01:00
Bug 33852: Clean up about:logins (LockWise) to avoid mentioning sync, etc.
Hide elements on about:logins that mention sync, "Firefox LockWise", and
Mozilla's LockWise mobile apps.
Disable the "Create New Login" button when security.nocertdb is true.
- - - - -
19283061 by Alex Catarineu at 2024-03-12T11:26:20+01:00
Bug 41457: Remove Mozilla permissions
Bug 40025: Remove Mozilla add-on install permissions
- - - - -
e0dd1dbf by Kathy Brade at 2024-03-12T11:26:20+01:00
Bug 40002: Remove about:ion
Firefox Ion (previously Firefox Pioneer) is an opt-in program in which people
volunteer to participate in studies that collect detailed, sensitive data about
how they use their browser.
Bug 41662: Disable about:sync-logs
Even though we disable sync by default with
`identity.fxaccounts.enabled`, this about: page is still avilable.
We could throw an exception on the constructor of the related
component, but it would result only in an error in the console, without
a visible "this address does not look right" error page.
If we fix the issues with MOZ_SERVICES_SYNC, we can restore the
component.
- - - - -
520c4066 by Arthur Edelstein at 2024-03-12T11:26:20+01:00
Bug 26353: Prevent speculative connect that violated FPI.
Connections were observed in the catch-all circuit when
the user entered an https or http URL in the URL bar, or
typed a search term.
- - - - -
783cff8a by Alex Catarineu at 2024-03-12T11:26:20+01:00
Bug 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
Avoid creating instance for 'anti-tracking-url-decoration'.
If prefs are disabling their usage, avoid creating instances for
'cert-revocations' and 'intermediates'.
Do not ship JSON dumps for collections we do not expect to need. For
the ones in the 'main' bucket, this prevents them from being synced
unnecessarily (the code in remote-settings does so for collections
in the main bucket for which a dump or local data exists). For the
collections in the other buckets, we just save some size by not
shipping their dumps.
We also clear the collections database on the v2 -> v3 migration.
- - - - -
2094f659 by cypherpunks1 at 2024-03-12T11:26:21+01:00
Bug 41092: Add a RemoteSettings JSON dump for query-stripping
- - - - -
13c641a3 by Pier Angelo Vendrame at 2024-03-12T11:26:21+01:00
Bug 41635: Disable the Normandy component
Do not include Normandy at all whenever MOZ_NORMANDY is False.
- - - - -
e0cd9a84 by Georg Koppen at 2024-03-12T11:26:21+01:00
Bug 30541: Disable WebGL readPixel() for web content
Related Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1428034
- - - - -
352e5e70 by Alex Catarineu at 2024-03-12T11:26:21+01:00
Bug 28369: Stop shipping pingsender executable
- - - - -
033e11cf by cypherpunks1 at 2024-03-12T11:26:22+01:00
Bug 41568: Disable LaterRun
- - - - -
85bf008f by cypherpunks1 at 2024-03-12T11:26:22+01:00
Bug 40717: Hide Windows SSO in settings
- - - - -
9fcfcc09 by Pier Angelo Vendrame at 2024-03-12T11:26:22+01:00
Bug 41599: Always return an empty string as network ID
Firefox computes an internal network ID used to detect network changes
and act consequently (e.g., to improve WebSocket UX).
However, there are a few ways to get this internal network ID, so we
patch them out, to be sure any new code will not be able to use them and
possibly link users.
We also sent a patch to Mozilla to seed the internal network ID, to
prevent any accidental leak in the future.
Upstream: https://bugzilla.mozilla.org/show_bug.cgi?id=1817756
- - - - -
6e572d36 by cypherpunks1 at 2024-03-12T11:26:22+01:00
Bug 40175: Add origin attributes to about:reader top-level requests
- - - - -
73e2f014 by Richard Pospesel at 2024-03-12T11:26:22+01:00
Bug 41327: Disable UrlbarProviderInterventions
- - - - -
9aae5f9d by Richard Pospesel at 2024-03-12T11:26:23+01:00
Bug 42037: Disable about:firefoxview page
- - - - -
f09939b8 by Mike Perry at 2024-03-12T11:26:23+01:00
Firefox preference overrides.
This hack directly includes our preference changes in omni.ja.
Bug 18292: Staged updates fail on Windows
Temporarily disable staged updates on Windows.
Bug 18297: Use separate Noto JP,KR,SC,TC fonts
Bug 23404: Add Noto Sans Buginese to the macOS whitelist
Bug 23745: Set dom.indexedDB.enabled = true
Bug 13575: Disable randomised Firefox HTTP cache decay user tests.
(Fernando Fernandez Mancera <ffmancera(a)riseup.net>)
Bug 17252: Enable session identifiers with FPI
Session tickets and session identifiers were isolated
by OriginAttributes, so we can re-enable them by
allowing the default value (true) of
"security.ssl.disable_session_identifiers".
The pref "security.enable_tls_session_tickets" is obsolete
(removed in https://bugzilla.mozilla.org/917049)
Bug 14952: Enable http/2 and AltSvc
In Firefox, SPDY/HTTP2 now uses Origin Attributes for
isolation of connections, push streams, origin frames, etc.
That means we get first-party isolation provided
"privacy.firstparty.isolate" is true. So in this patch, we
stop overriding "network.http.spdy.enabled" and
"network.http.spdy.enabled.http2".
Alternate Services also use Origin Attributes for isolation.
So we stop overriding
"network.http.altsvc.enabled" and "network.http.altsvc.oe"
as well.
(All 4 of the abovementioned "network.http.*" prefs adopt
Firefox 60ESR's default value of true.)
However, we want to disable HTTP/2 push for now, so we
set "network.http.spdy.allow-push" to false.
"network.http.spdy.enabled.http2draft" was removed in Bug 1132357.
"network.http.sped.enabled.v2" was removed in Bug 912550.
"network.http.sped.enabled.v3" was removed in Bug 1097944.
"network.http.sped.enabled.v3-1" was removed in Bug 1248197.
Bug 26114: addons.mozilla.org is not special
* Don't expose navigator.mozAddonManager on any site
* Don't block NoScript from modifying addons.mozilla.org or other sites
Enable ReaderView mode again (#27281).
Bug 29916: Make sure enterprise policies are disabled
Bug 2874: Block Components.interfaces from content
Bug 26146: Spoof HTTP User-Agent header for desktop platforms
In Tor Browser 8.0, the OS was revealed in both the HTTP User-Agent
header and to JavaScript code via navigator.userAgent. To avoid
leaking the OS inside each HTTP request (which many web servers
log), always use the Windows 7 OS value in the desktop User-Agent
header. We continue to allow access to the actual OS via JavaScript,
since doing so improves compatibility with web applications such
as GitHub and Google Docs.
Bug 12885: Windows Jump Lists fail for Tor Browser
Jumplist entries are stored in a binary file in:
%APPDATA%\\Microsoft\Windows\Recent\CustomDestinations\
and has a name in the form
[a-f0-9]+.customDestinations-ms
The hex at the front is unique per app, and is ultimately derived from
something called the 'App User Model ID' (AUMID) via some unknown
hashing method. The AUMID is provided as a key when programmatically
creating, updating, and deleting a jumplist. The default behaviour in
firefox is for the installer to define an AUMID for an app, and save it
in the registry so that the jumplist data can be removed by the
uninstaller.
However, the Tor Browser does not set this (or any other) regkey during
installation, so this codepath fails and the app's AUMID is left
undefined. As a result the app's AUMID ends up being defined by
windows, but unknowable by Tor Browser. This unknown AUMID is used to
create and modify the jumplist, but the delete API requires that we
provide the app's AUMID explicitly. Since we don't know what the AUMID
is (since the expected regkey where it is normally stored does not
exist) jumplist deletion will fail and we will leave behind a mostly
empty customDestinations-ms file. The name of the file is derived from
the binary path, so an enterprising person could reverse engineer how
that hex name is calculated, and generate the name for Tor Browser's
default Desktop installation path to determine whether a person had
used Tor Browser in the past.
The 'taskbar.grouping.useprofile' option that is enabled by this patch
works around this AUMID problem by having firefox.exe create it's own
AUMID based on the profile path (rather than looking for a regkey). This
way, if a user goes in and enables and disables jumplist entries, the
backing store is properly deleted.
Unfortunately, all windows users currently have this file lurking in
the above mentioned directory and this patch will not remove it since it
was created with an unknown AUMID. However, another patch could be
written which goes to that directory and deletes any item containing the
'Tor Browser' string. See bug 28996.
Bug 30845: Make sure default themes and other internal extensions are enabled
Bug 28896: Enable extensions in private browsing by default
Bug 31065: Explicitly allow proxying localhost
Bug 31598: Enable letterboxing
Disable Presentation API everywhere
Bug 21549 - Use Firefox's WASM default pref. It is disabled at safer
security levels.
Bug 32321: Disable Mozilla's MitM pings
Bug 19890: Disable installation of system addons
By setting the URL to "" we make sure that already installed system
addons get deleted as well.
Bug 22548: Firefox downgrades VP9 videos to VP8.
On systems where H.264 is not available or no HWA, VP9 is preferred. But in Tor
Browser 7.0 all youtube videos are degraded to VP8.
This behaviour can be turned off by setting media.benchmark.vp9.threshold to 0.
All clients will get better experience and lower traffic, beause TBB doesn't
use "Use hardware acceleration when available".
Bug 25741 - TBA: Add mobile-override of 000-tor-browser prefs
Bug 16441: Suppress "Reset Tor Browser" prompt.
Bug 29120: Use the in-memory media cache and increase its maximum size.
Bug 33697: use old search config based on list.json
Bug 33855: Ensure that site-specific browser mode is disabled.
Bug 30682: Disable Intermediate CA Preloading.
Bug 40061: Omit the Windows default browser agent from the build
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40408: Disallow SVG Context Paint in all web content
Bug 40308: Disable network partitioning until we evaluate dFPI
Bug 40322: Consider disabling network.connectivity-service.enabled
Bug 40383: Disable dom.enable_event_timing
Bug 40423: Disable http/3
Bug 40177: Update prefs for Fx91esr
Bug 40700: Disable addons and features recommendations
Bug 40682: Disable network.proxy.allow_bypass
Bug 40736: Disable third-party cookies in PBM
Bug 19850: Enabled HTTPS-Only by default
Bug 40912: Hide the screenshot menu
Bug 41292: Disable moreFromMozilla in preferences page
Bug 40057: Ensure the CSS4 system colors are not a fingerprinting vector
Bug 24686: Set network.http.tailing.enabled to true
Bug 40183: Disable TLS ciphersuites using SHA-1
Bug 40783: Review 000-tor-browser.js and 001-base-profile.js for 102
We reviewed all the preferences we set for 102, and remove a few old
ones. See the description of that issue to see all the preferences we
believed were still valid for 102, and some brief description for the
reasons to keep them.
- - - - -
24ea6b5f by Pier Angelo Vendrame at 2024-03-12T11:26:23+01:00
fixup! Firefox preference overrides.
Bug 42377: Hidden fonts should obey the allow list.
Remove .Helvetica Neue DeskInterface from the allow list.
This font might not be actually available, and in any case fonts
starting with period will not be displayed by the browser.
- - - - -
f553ca79 by Richard Pospesel at 2024-03-12T11:26:23+01:00
Bug 41659: Add canonical color definitions to base-browser
- - - - -
8137c0ce by Pier Angelo Vendrame at 2024-03-12T11:26:24+01:00
Bug 41043: Hardcode the UI font on Linux
The mechanism to choose the UI font does not play well with our
fontconfig configuration. As a result, the final criterion to choose
the font for the UI was its version.
Since we hardcode Arimo as a default sans-serif on preferences, we use
it also for the UI. FontConfig will fall back to some other font for
scripts Arimo does not cover as expected (we tested with Japanese).
- - - - -
639c01bb by Pier Angelo Vendrame at 2024-03-12T11:26:24+01:00
Bug 42377: Hidden fonts should obey the allow list.
Hidden font families were automatically added to the
`font.system.whitelist`, which is a behavior that conflicts with our
font picking.
- - - - -
2a5f31b2 by Alex Catarineu at 2024-03-12T11:26:24+01:00
Bug 30605: Honor privacy.spoof_english in Android
This checks `privacy.spoof_english` whenever `setLocales` is
called from Fenix side and sets `intl.accept_languages`
accordingly.
Bug 40198: Expose privacy.spoof_english pref in GeckoView
- - - - -
fc3e6ce6 by Alex Catarineu at 2024-03-12T11:26:24+01:00
Bug 40199: Avoid using system locale for intl.accept_languages in GeckoView
- - - - -
71d3ac30 by Alex Catarineu at 2024-03-12T11:26:24+01:00
Bug 40171: Make WebRequest and GeckoWebExecutor First-Party aware
- - - - -
a897940a by Alex Catarineu at 2024-03-12T11:26:25+01:00
Bug 26345: Hide tracking protection UI
- - - - -
55e89034 by Pier Angelo Vendrame at 2024-03-12T11:26:25+01:00
Bug 9173: Change the default Firefox profile directory to be relative.
This commit makes Firefox look for the default profile directory in a
directory relative to the binary path.
The directory can be specified through the --with-relative-data-dir.
This is relative to the same directory as the firefox main binary for
Linux and Windows.
On macOS, we remove Contents/MacOS from it.
Or, in other words, the directory is relative to the application
bundle.
This behavior can be overriden at runtime, by placing a file called
system-install adjacent to the firefox main binary (also on macOS).
- - - - -
18188a85 by Alex Catarineu at 2024-03-12T11:26:25+01:00
Bug 27604: Fix addon issues when moving the profile directory
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1429838
- - - - -
8f9d8c11 by Mike Perry at 2024-03-12T11:26:25+01:00
Bug 13028: Prevent potential proxy bypass cases.
It looks like these cases should only be invoked in the NSS command line
tools, and not the browser, but I decided to patch them anyway because there
literally is a maze of network function pointers being passed around, and it's
very hard to tell if some random code might not pass in the proper proxied
versions of the networking code here by accident.
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1433509
- - - - -
f2aaad4d by Igor Oliveira at 2024-03-12T11:26:26+01:00
Bug 23104: Add a default line height compensation
Many fonts have issues with their vertical metrics. they
are used to influence the height of ascenders and depth
of descenders. Gecko uses it to calculate the line height
(font height + ascender + descender), however because of
that idiosyncratic behavior across multiple operating
systems, it can be used to identify the user's OS.
The solution proposed in the patch uses a default factor
to be multiplied with the font size, simulating the concept
of ascender and descender. This way all operating
systems will have the same line height.
- - - - -
0e2928ff by Pier Angelo Vendrame at 2024-03-12T11:26:26+01:00
Bug 40309: Avoid using regional OS locales
Avoid regional OS locales if the pref
`intl.regional_prefs.use_os_locales` is false but RFP is enabled.
- - - - -
ff37e601 by Matthew Finkel at 2024-03-12T11:26:26+01:00
Bug 40432: Prevent probing installed applications
Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=1711084
- - - - -
fc282704 by cypherpunks1 at 2024-03-12T11:26:26+01:00
Bug 33955: When copying an image only copy the image contents to the clipboard
- - - - -
f418dd54 by cypherpunks1 at 2024-03-12T11:26:27+01:00
Bug 41791: Omit the source URL when copying page contents to the clipboard
- - - - -
5f3ce2b2 by hackademix at 2024-03-12T11:26:27+01:00
Bug 42288: Allow language spoofing in status messages.
- - - - -
6d8372c4 by Pier Angelo Vendrame at 2024-03-12T11:26:27+01:00
Base Browser strings
This commit adds all the strings needed by following Base Browser
patches.
- - - - -
be0bf9fb by hackademix at 2024-03-12T11:26:27+01:00
Bug 41434: Letterboxing, preemptively apply margins in a global CSS rule to mitigate race conditions on newly created windows and tabs.
- - - - -
8dfafdd5 by hackademix at 2024-03-12T11:26:28+01:00
Bug 41434: Letterboxing, improve logging.
- - - - -
1550a4d1 by hackademix at 2024-03-12T11:26:28+01:00
Bug 31064: Letterboxing, exempt browser extensions.
- - - - -
ddffa421 by hackademix at 2024-03-12T11:26:28+01:00
Bug 32411: Letterboxing, exempt view-source: URIs.
- - - - -
7267fc06 by hackademix at 2024-03-12T11:26:28+01:00
Bug 32308: use direct browser sizing for letterboxing.
Bug 30556: align letterboxing with 200x100 new win width stepping
- - - - -
f041fca0 by hackademix at 2024-03-12T11:26:29+01:00
Bug 41631: Prevent weird initial window dimensions caused by subpixel computations
- - - - -
74ea9ebd by Pier Angelo Vendrame at 2024-03-12T11:26:29+01:00
Bug 41369: Improve Firefox language settings for multi-lingual packages
Change the language selector to be sorted by language code, rather than
name, and to display the language code to the user.
Bug 41372: Handle Japanese as a special case in preferences on macOS
Japanese is treated in a special way on macOS. However, seeing the
Japanese language tag could be confusing for users, and moreover the
language name is not localized correctly like other langs.
Bug 41378: Tell users that they can change their language at the first start
With multi-lingual builds, Tor Browser matches the user's system
language, but some users might want to change it.
So, we tell them that it is possible, but only once.
- - - - -
2fb4f4d6 by p13dz at 2024-03-12T11:26:29+01:00
Bug 40283: Workaround for the file upload bug
- - - - -
2b5c1c03 by Arthur Edelstein at 2024-03-12T11:26:29+01:00
Bug 18905: Hide unwanted items from help menu
Bug 25660: Remove the "New Private Window" option
- - - - -
a1b2316b by cypherpunks1 at 2024-03-12T11:26:30+01:00
Bug 41740: Change the RFP value of devicePixelRatio to 2
- - - - -
a456bca9 by Pier Angelo Vendrame at 2024-03-12T11:26:30+01:00
Bug 41739: Remove "Website appearance" from about:preferences.
It is ignored because of RFP and it is confusing for users.
- - - - -
fbfd0877 by cypherpunks1 at 2024-03-12T11:26:30+01:00
Bug 41881: Don't persist custom network requests on private windows
- - - - -
6174d8b0 by hackademix at 2024-03-12T11:26:30+01:00
Bug 42019: Empty browser's clipboard on browser shutdown
- - - - -
a884c557 by hackademix at 2024-03-12T11:26:30+01:00
Bug 42084: Ensure English spoofing works even if preferences are set out of order.
- - - - -
ba8d2573 by Pier Angelo Vendrame at 2024-03-12T11:26:31+01:00
Bug 41603: Customize the creation of MOZ_SOURCE_URL
MOZ_SOURCE_URL is created by combining MOZ_SOURCE_REPO and
MOZ_SOURCE_CHANGESET.
But the code takes for granted that it refers to a Hg instance, so it
combines them as `$MOZ_SOURCE_REPO/rev/$MOZ_SOURCE_CHANGESET`.
With this commit, we change this logic to combine them to create a URL
that is valid for GitLab.
$MOZ_SOURCE_CHANGESET needs to be a commit hash, not a branch or a tag.
If that is needed, we could use /-/tree/, instead of /-/commit/.
- - - - -
c20cb23f by Henry Wilkes at 2024-03-12T11:26:31+01:00
Bug 31575: Disable Firefox Home (Activity Stream)
Treat about:blank as the default home page and new tab page.
Avoid loading AboutNewTab in BrowserGlue.sys.mjs in order
to avoid several network requests that we do not need.
Bug 41624: Disable about:pocket-* pages.
Bug 40144: Redirect about:privatebrowsing to the user's home
- - - - -
e941b629 by Kathy Brade at 2024-03-12T11:26:31+01:00
Bug 4234: Use the Firefox Update Process for Base Browser.
Windows: disable "runas" code path in updater (15201).
Windows: avoid writing to the registry (16236).
Also includes fixes for tickets 13047, 13301, 13356, 13594, 15406,
16014, 16909, 24476, and 25909.
Also fix bug 27221: purge the startup cache if the Base Browser
version changed (even if the Firefox version and build ID did
not change), e.g., after a minor Base Browser update.
Also fix 32616: Disable GetSecureOutputDirectoryPath() functionality.
Bug 26048: potentially confusing "restart to update" message
Within the update doorhanger, remove the misleading message that mentions
that windows will be restored after an update is applied, and replace the
"Restart and Restore" button label with an existing
"Restart to update Tor Browser" string.
Bug 28885: notify users that update is downloading
Add a "Downloading Base Browser update" item which appears in the
hamburger (app) menu while the update service is downloading a MAR
file. Before this change, the browser did not indicate to the user
that an update was in progress, which is especially confusing in
Tor Browser because downloads often take some time. If the user
clicks on the new menu item, the about dialog is opened to allow
the user to see download progress.
As part of this fix, the update service was changed to always show
update-related messages in the hamburger menu, even if the update
was started in the foreground via the about dialog or via the
"Check for Tor Browser Update" toolbar menu item. This change is
consistent with the Tor Browser goal of making sure users are
informed about the update process.
Removed #28885 parts of this patch which have been uplifted to Firefox.
- - - - -
7349e42b by Pier Angelo Vendrame at 2024-03-12T11:26:31+01:00
Bug 42061: Create an alpha update channel.
- - - - -
883f8f03 by Nicolas Vigier at 2024-03-12T11:26:32+01:00
Bug 41682: Add base-browser nightly mar signing key
- - - - -
d7a5bb37 by hackademix at 2024-03-12T11:26:32+01:00
Bug 41695: Warn on window maximization without letterboxing in RFPHelper module
- - - - -
9fe09168 by Pier Angelo Vendrame at 2024-03-12T11:26:32+01:00
Bug 41698: Reword the recommendation badges in about:addons
Firefox strings use { -brand-product-name }.
As a result, it seems that the fork is recommending extensions, whereas
AMO curators are doing that.
So, we replace the strings with custom ones that clarify that Mozilla is
recommending them.
We assign the strings with JS because our translation backend does not
support Fluent attributes, yet, but once it does, we should switch to
them, instead.
Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1825033
- - - - -
29cc4be2 by Alex Catarineu at 2024-03-12T11:26:32+01:00
Bug 40069: Add helpers for message passing with extensions
- - - - -
b0c53488 by Matthew Finkel at 2024-03-12T11:26:33+01:00
Bug 41598: Prevent NoScript from being removed/disabled.
Bug 40253: Explicitly allow NoScript in Private Browsing mode.
- - - - -
302a30ab by Henry Wilkes at 2024-03-12T11:26:33+01:00
Bug 41736: Hide NoScript extension's toolbar button by default.
This hides it from both the toolbar and the unified extensions panel.
We also hide the unified-extension-button if the panel would be empty:
not including the NoScript button when it is hidden. As a result, this
will be hidden by default until a user installs another extension (or
shows the NoScript button and unpins it).
- - - - -
5fa4d5bf by hackademix at 2024-03-12T11:26:33+01:00
Bug 41834: Hide "Can't Be Removed - learn more" menu line for uninstallable add-ons
- - - - -
e3fd50da by Pier Angelo Vendrame at 2024-03-12T11:26:33+01:00
Bug 40925: Implemented the Security Level component
This component adds a new Security Level toolbar button which visually
indicates the current global security level via icon (as defined by the
extensions.torbutton.security_slider pref), a drop-down hanger with a
short description of the current security level, and a new section in
the about:preferences#privacy page where users can change their current
security level. In addition, the hanger and the preferences page will
show a visual warning when the user has modified prefs associated with
the security level and provide a one-click 'Restore Defaults' button to
get the user back on recommended settings.
Bug 40125: Expose Security Level pref in GeckoView
- - - - -
4c1b31f7 by Pier Angelo Vendrame at 2024-03-12T11:26:34+01:00
Bug 40926: Implemented the New Identity feature
- - - - -
79fc8661 by Henry Wilkes at 2024-03-12T11:26:34+01:00
Bug 41736: Customize toolbar for base-browser.
- - - - -
594d534b by Pier Angelo Vendrame at 2024-03-12T11:26:34+01:00
Bug 42027: Base Browser migration procedures.
This commit implmenents the the Base Browser's version of _migrateUI.
- - - - -
9ee00d08 by Richard Pospesel at 2024-03-12T11:26:34+01:00
Bug 41649: Create rebase and security backport gitlab issue templates
- - - - -
38464c44 by Richard Pospesel at 2024-03-12T11:26:34+01:00
Bug 41089: Add tor-browser build scripts + Makefile to tor-browser
- - - - -
76813d64 by Henry Wilkes at 2024-03-12T11:26:35+01:00
Bug 41803: Add some developer tools for working on tor-browser.
- - - - -
4f7c73b9 by Kathy Brade at 2024-03-12T11:26:35+01:00
Bug 11641: Disable remoting by default.
Unless the -osint command line flag is used, the browser now defaults
to the equivalent of -no-remote. There is a new -allow-remote flag that
may be used to restore the original (Firefox-like) default behavior.
- - - - -
3ad01bdd by Alex Catarineu at 2024-03-12T11:26:35+01:00
Add TorStrings module for localization
- - - - -
cc20fd30 by Henry Wilkes at 2024-03-12T11:26:35+01:00
fixup! Add TorStrings module for localization
Bug 42305: Tidy up stable strings, ready for new translation CI.
Cherry-picked from Bug 42221: Remove unused strings now that 13.0 is stable.
Plus removed aboutTor.dtd after Bug 41333.
- - - - -
02f283e3 by Henry Wilkes at 2024-03-12T11:26:36+01:00
Tor Browser strings
This commit adds all the strings needed for Tor Browser patches.
- - - - -
26e5dba3 by Henry Wilkes at 2024-03-12T11:26:36+01:00
Tor Browser localization migration scripts.
- - - - -
2372f05d by Mike Perry at 2024-03-12T11:26:36+01:00
Bug 2176: Rebrand Firefox to TorBrowser
See also Bugs #5194, #7187, #8115, #8219.
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
Also fix bug 27905.
Bug 25702: Update Tor Browser icon to follow design guidelines
- Updated all of the branding in /browser/branding/official with new 'stable'
icon series.
- Updated /extensions/onboarding/content/img/tor-watermark.png with new icon and
add the source svg in the same directory
- Copied /browser/branding/official over /browser/branding/nightly and the new
/browser/branding/alpha directories. Replaced content with 'nightly' and
'alpha' icon series.
Updated VisualElements_70.png and VisualElements_150.png with updated icons in
each branding directory (fixes #22654)
- Updated firefox.VisualElementsManfiest.xml with updated colors in each
branding directory
- Added firefox.svg to each branding directory from which all the other icons
are derived (apart from document.icns and document.ico)
- Added default256.png and default512.png icons
- Updated aboutTBUpdate.css to point to branding-aware icon128.png and removed
original icon
- Use the Tor Browser icon within devtools/client/themes/images/.
Bug 30631: Blurry Tor Browser icon on macOS app switcher
It would seem the png2icns tool does not generate correct icns files and
so on macOS the larger icons were missing resulting in blurry icons in
the OS chrome. Regenerated the padded icons in a macOS VM using
iconutil.
Bug 28196: preparations for using torbutton tor-browser-brand.ftl
A small change to Fluent FileSource class is required so that we
can register a new source without its supported locales being
counted as available locales for the browser.
Bug 31803: Replaced about:debugging logo with flat version
Bug 21724: Make Firefox and Tor Browser distinct macOS apps
When macOS opens a document or selects a default browser, it sometimes
uses the CFBundleSignature. Changing from the Firefox MOZB signature to
a different signature TORB allows macOS to distinguish between Firefox
and Tor Browser.
Bug 32092: Fix Tor Browser Support link in preferences
For bug 40562, we moved onionPattern* from bug 27476 to here, as
about:tor needs these files but it is included earlier.
Bug 41278: Create Tor Browser styled pdf logo similar to the vanilla Firefox one
Bug 42088: New application icons (used in-app and on linux).
Bug 42087: New application icons (windows).
- - - - -
d81ad590 by sanketh at 2024-03-12T11:26:36+01:00
Bug 40209: Implement Basic Crypto Safety
Adds a CryptoSafety actor which detects when you've copied a crypto
address from a HTTP webpage and shows a warning.
Closes #40209.
Bug 40428: Fix string attribute names
- - - - -
9664d644 by Mike Perry at 2024-03-12T11:26:37+01:00
TB3: Tor Browser's official .mozconfigs.
Also:
Add an --enable-tor-browser-data-outside-app-dir configure option
Add --with-tor-browser-version configure option
Bug 31457: disable per-installation profiles
The dedicated profiles (per-installation) feature does not interact
well with our bundled profiles on Linux and Windows, and it also causes
multiple profiles to be created on macOS under TorBrowser-Data.
Bug 31935: Disable profile downgrade protection.
Since Tor Browser does not support more than one profile, disable
the prompt and associated code that offers to create one when a
version downgrade situation is detected.
Add --enable-tor-browser-update build option
Bug 40793: moved Tor configuration options from old-configure.in to moz.configure
Bug 41584: Move some configuration options to base-browser level
- - - - -
2fb33151 by Henry Wilkes at 2024-03-12T11:26:37+01:00
Bug 41340: Enable TOR_BROWSER_NIGHTLY_BUILD features for dev and nightly builds
tor-browser#41285: Enable fluent warnings.
- - - - -
a1541e65 by Pier Angelo Vendrame at 2024-03-12T11:26:37+01:00
Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Before reordering patches, we used to keep the Tor-related patches
(torbutton and tor-launcher) at the beginning.
After that issue, we decided to move them towards the end.
In addition to that, we have decided to move Tor Browser-only
preferences there, too, to make Base Browser-only fixups easier to
apply.
- - - - -
760e8f5f by Cecylia Bocovich at 2024-03-12T11:26:37+01:00
fixup! Bug 40562: Added Tor Browser preferences to 000-tor-browser.js
Bug 42435: Update moat domain fronting configuration
- - - - -
1709c788 by Pier Angelo Vendrame at 2024-03-12T11:26:37+01:00
Bug 13252: Customize profile management on macOS
On macOS we allow both portable mode and system installation.
However, in the latter case, we customize Firefox's directories to
match the hierarchy we use for the portable mode.
Also, display an informative error message if the TorBrowser-Data
directory cannot be created due to an "access denied" or a
"read only volume" error.
- - - - -
f7626825 by Pier Angelo Vendrame at 2024-03-12T11:26:38+01:00
Bug 40933: Add tor-launcher functionality
Bug 41926: Reimplement the control port
- - - - -
d768bc46 by Richard Pospesel at 2024-03-12T11:26:38+01:00
Bug 40597: Implement TorSettings module
- migrated in-page settings read/write implementation from about:preferences#tor
to the TorSettings module
- TorSettings initially loads settings from the tor daemon, and saves them to
firefox prefs
- TorSettings notifies observers when a setting has changed; currently only
QuickStart notification is implemented for parity with previous preference
notify logic in about:torconnect and about:preferences#tor
- about:preferences#tor, and about:torconnect now read and write settings
thorugh the TorSettings module
- all tor settings live in the torbrowser.settings.* preference branch
- removed unused pref modify permission for about:torconnect content page from
AsyncPrefs.jsm
Bug 40645: Migrate Moat APIs to Moat.jsm module
- - - - -
b19fb0de by Arthur Edelstein at 2024-03-12T11:26:38+01:00
Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Add an XPCOM component that registers a ProtocolProxyChannelFilter
which sets the username/password for each web request according to
url bar domain.
Bug 9442: Add New Circuit button
Bug 13766: Set a 10 minute circuit dirty timeout for the catch-all circ.
Bug 19206: Include a 128 bit random tag as part of the domain isolator nonce.
Bug 19206: Clear out the domain isolator state on `New Identity`.
Bug 21201.2: Isolate by firstPartyDomain from OriginAttributes
Bug 21745: Fix handling of catch-all circuit
Bug 41741: Refactor the domain isolator and new circuit
- - - - -
aff8a97d by Henry Wilkes at 2024-03-12T11:26:38+01:00
Bug 41600: Add a tor circuit display panel.
- - - - -
25d641cb by hackademix at 2024-03-12T11:26:39+01:00
Bug 8324: Prevent DNS proxy bypasses caused by Drag&Drop
Bug 41613: Skip Drang & Drop filtering for DNS-safe URLs
- - - - -
6853e2f6 by Amogh Pradeep at 2024-03-12T11:26:39+01:00
Orfox: Centralized proxy applied to AbstractCommunicator and BaseResources.
See Bug 1357997 for partial uplift.
Also:
Bug 28051 - Use our Orbot for proxying our connections
Bug 31144 - ESR68 Network Code Review
- - - - -
0cb91681 by Matthew Finkel at 2024-03-12T11:26:39+01:00
Bug 25741: TBA: Disable GeckoNetworkManager
The browser should not need information related to the network
interface or network state, tor should take care of that.
- - - - -
d997b4c4 by Kathy Brade at 2024-03-12T11:26:39+01:00
Bug 14631: Improve profile access error messages.
Instead of always reporting that the profile is locked, display specific
messages for "access denied" and "read-only file system".
To allow for localization, get profile-related error strings from Torbutton.
Use app display name ("Tor Browser") in profile-related error alerts.
- - - - -
6aa3984d by Pier Angelo Vendrame at 2024-03-12T11:26:39+01:00
Bug 40807: Added QRCode.js to toolkit/modules
- - - - -
e199b1ea by Richard Pospesel at 2024-03-12T11:26:40+01:00
Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
This patch adds a new about:preferences#connection page which allows
modifying bridge, proxy, and firewall settings from within Tor Browser.
All of the functionality present in tor-launcher's Network
Configuration panel is present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
- The Networking Settings in General preferences has been removed
Bug 40774: Update about:preferences page to match new UI designs
- - - - -
96c8d080 by Richard Pospesel at 2024-03-12T11:26:40+01:00
Bug 27476: Implement about:torconnect captive portal within Tor Browser
- implements new about:torconnect page as tor-launcher replacement
- adds new torconnect component to browser
- tor process management functionality remains implemented in tor-launcher through the TorProtocolService module
- adds warning/error box to about:preferences#tor when not connected to tor
Bug 40773: Update the about:torconnect frontend page to match additional UI flows.
Bug 41608: Add a toolbar status button and a urlbar "Connect" button.
- - - - -
6a68b8de by Henry Wilkes at 2024-03-12T11:26:40+01:00
Bug 7494: Create local home page for TBB.
Bug 41333: Update about:tor to new design. Including:
+ make the favicon match the branding icon.
+ make the location bar show a search icon.
- - - - -
55d2e859 by Arthur Edelstein at 2024-03-12T11:26:40+01:00
Bug 12620: TorBrowser regression tests
Regression tests for Bug #2950: Make Permissions Manager memory-only
Regression tests for TB4: Tor Browser's Firefox preference overrides.
Note: many more functional tests could be made here
Regression tests for #2874: Block Components.interfaces from content
Bug 18923: Add a script to run all Tor Browser specific tests
Regression tests for Bug #16441: Suppress "Reset Tor Browser" prompt.
- - - - -
5c776e37 by Pier Angelo Vendrame at 2024-03-12T11:26:41+01:00
Bug 41668: Tweaks to the Base Browser updater for Tor Browser
This commit was once part of "Bug 4234: Use the Firefox Update Process
for Tor Browser.".
However, some parts of it were not needed for Base Browser and some
derivative browsers.
Therefore, we extracted from that commit the parts for Tor Browser
legacy, and we add them back to the patch set with this commit.
- - - - -
23cf59bb by Kathy Brade at 2024-03-12T11:26:41+01:00
Bug 12647: Support symlinks in the updater.
- - - - -
f0e3ebb7 by Kathy Brade at 2024-03-12T11:26:41+01:00
Bug 19121: reinstate the update.xml hash check
This is a partial revert of commit f1241db6986e4b54473a1ed870f7584c75d51122.
Revert most changes from Mozilla Bug 862173 "don't verify mar file hash
when using mar signing to verify the mar file (lessens main thread I/O)."
We kept the addition to the AppConstants API in case other JS code
references it in the future.
- - - - -
9323d7cd by Kathy Brade at 2024-03-12T11:26:41+01:00
Bug 16940: After update, load local change notes.
Add an about:tbupdate page that displays the first section from
TorBrowser/Docs/ChangeLog.txt and includes a link to the remote
post-update page (typically our blog entry for the release).
Always load about:tbupdate in a content process, but implement the
code that reads the file system (changelog) in the chrome process
for compatibility with future sandboxing efforts.
Also fix bug 29440. Now about:tbupdate is styled as a fairly simple
changelog page that is designed to be displayed via a link that is on
about:tor.
- - - - -
d9c77ce5 by Georg Koppen at 2024-03-12T11:26:42+01:00
Bug 32658: Create a new MAR signing key
It's time for our rotation again: Move the backup key in the front
position and add a new backup key.
Bug 33803: Move our primary nightly MAR signing key to tor-browser
Bug 33803: Add a secondary nightly MAR signing key
- - - - -
1cf1cb93 by Mike Perry at 2024-03-12T11:26:42+01:00
Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
eBay and Amazon don't treat Tor users very well. Accounts often get locked and
payments reversed.
Also:
Bug 16322: Update DuckDuckGo search engine
We are replacing the clearnet URL with an onion service one (thanks to a
patch by a cypherpunk) and are removing the duplicated DDG search
engine. Duplicating DDG happend due to bug 1061736 where Mozilla
included DDG itself into Firefox. Interestingly, this caused breaking
the DDG search if JavaScript is disabled as the Mozilla engine, which
gets loaded earlier, does not use the html version of the search page.
Moreover, the Mozilla engine tracked where the users were searching from
by adding a respective parameter to the search query. We got rid of that
feature as well.
Also:
This fixes bug 20809: the DuckDuckGo team has changed its server-side
code in a way that lets users with JavaScript enabled use the default
landing page while those without JavaScript available get redirected
directly to the non-JS page. We adapt the search engine URLs
accordingly.
Also fixes bug 29798 by making sure we only specify the Google search
engine we actually ship an .xml file for.
Also regression tests.
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 40494: Update Startpage search provider
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 40438: Add Blockchair as a search engine
Bug 33342: Avoid disconnect search addon error after removal.
We removed the addon in #32767, but it was still being loaded
from addonStartup.json.lz4 and throwing an error on startup
because its resource: location is not available anymore.
- - - - -
87eb3247 by Alex Catarineu at 2024-03-12T11:26:42+01:00
Bug 40073: Disable remote Public Suffix List fetching
In https://bugzilla.mozilla.org/show_bug.cgi?id=1563246 Firefox implemented
fetching the Public Suffix List via RemoteSettings and replacing the default
one at runtime, which we do not want.
- - - - -
6608c8af by Henry Wilkes at 2024-03-12T11:26:42+01:00
Bug 41906: Hide DNS over HTTPS preferences.
- - - - -
dd945392 by Richard Pospesel at 2024-03-12T11:26:43+01:00
Bug 23247: Communicating security expectations for .onion
Encrypting pages hosted on Onion Services with SSL/TLS is redundant
(in terms of hiding content) as all traffic within the Tor network is
already fully encrypted. Therefore, serving HTTP pages from an Onion
Service is more or less fine.
Prior to this patch, Tor Browser would mostly treat pages delivered
via Onion Services as well as pages delivered in the ordinary fashion
over the internet in the same way. This created some inconsistencies
in behaviour and misinformation presented to the user relating to the
security of pages delivered via Onion Services:
- HTTP Onion Service pages did not have any 'lock' icon indicating
the site was secure
- HTTP Onion Service pages would be marked as unencrypted in the Page
Info screen
- Mixed-mode content restrictions did not apply to HTTP Onion Service
pages embedding Non-Onion HTTP content
This patch fixes the above issues, and also adds several new 'Onion'
icons to the mix to indicate all of the various permutations of Onion
Services hosted HTTP or HTTPS pages with HTTP or HTTPS content.
Strings for Onion Service Page Info page are pulled from Torbutton's
localization strings.
- - - - -
1a8b2bcf by Kathy Brade at 2024-03-12T11:26:43+01:00
Bug 30237: Add v3 onion services client authentication prompt
When Tor informs the browser that client authentication is needed,
temporarily load about:blank instead of about:neterror and prompt
for the user's key.
If a correctly formatted key is entered, use Tor's ONION_CLIENT_AUTH_ADD
control port command to add the key (via Torbutton's control port
module) and reload the page.
If the user cancels the prompt, display the standard about:neterror
"Unable to connect" page. This requires a small change to
browser/actors/NetErrorChild.jsm to account for the fact that the
docShell no longer has the failedChannel information. The failedChannel
is used to extract TLS-related error info, which is not applicable
in the case of a canceled .onion authentication prompt.
Add a leaveOpen option to PopupNotifications.show so we can display
error messages within the popup notification doorhanger without
closing the prompt.
Add support for onion services strings to the TorStrings module.
Add support for Tor extended SOCKS errors (Tor proposal 304) to the
socket transport and SOCKS layers. Improved display of all of these
errors will be implemented as part of bug 30025.
Also fixes bug 19757:
Add a "Remember this key" checkbox to the client auth prompt.
Add an "Onion Services Authentication" section within the
about:preferences "Privacy & Security section" to allow
viewing and removal of v3 onion client auth keys that have
been stored on disk.
Also fixes bug 19251: use enhanced error pages for onion service errors.
- - - - -
4a0e239f by Alex Catarineu at 2024-03-12T11:26:43+01:00
Bug 21952: Implement Onion-Location
Whenever a valid Onion-Location HTTP header (or corresponding HTML
<meta> http-equiv attribute) is found in a document load, we either
redirect to it (if the user opted-in via preference) or notify the
presence of an onionsite alternative with a badge in the urlbar.
- - - - -
8010cff9 by Pier Angelo Vendrame at 2024-03-12T11:26:43+01:00
Bug 40458: Implement .tor.onion aliases
We have enabled HTTPS-Only mode, therefore we do not need
HTTPS-Everywhere anymore.
However, we want to keep supporting .tor.onion aliases (especially for
securedrop).
Therefore, in this patch we implemented the parsing of HTTPS-Everywhere
rulesets, and the redirect of .tor.onion domains.
Actually, Tor Browser believes they are actual domains. We change them
on the fly on the SOCKS proxy requests to resolve the domain, and on
the code that verifies HTTPS certificates.
- - - - -
7781e5a8 by Pier Angelo Vendrame at 2024-03-12T11:26:44+01:00
Bug 11698: Incorporate Tor Browser Manual pages into Tor Browser
This patch associates the about:manual page to a translated page that
must be injected to browser/omni.ja after the build.
The content must be placed in chrome/browser/content/browser/manual/, so
that is then available at chrome://browser/content/manual/.
We preferred giving absolute freedom to the web team, rather than having
to change the patch in case of changes on the documentation.
- - - - -
bc49bbb6 by Pier Angelo Vendrame at 2024-03-12T11:26:44+01:00
Bug 41435: Add a Tor Browser migration function
For now this function only deletes old language packs for which we are
already packaging the strings with the application.
- - - - -
cf6e0f82 by Henry Wilkes at 2024-03-12T11:26:44+01:00
Bug 42110: Add TorUIUtils module for common tor component methods.
- - - - -
3b5c8885 by Dan Ballard at 2024-03-12T11:26:44+01:00
Bug 40701: Add security warning when downloading a file
Shown in the downloads panel, about:downloads and places.xhtml.
- - - - -
e14da8fa by Henry Wilkes at 2024-03-12T11:26:44+01:00
Bug 41736: Customize toolbar for tor-browser.
- - - - -
dd69d7fa by hackademix at 2024-03-12T11:26:45+01:00
Bug 41728: Pin bridges.torproject.org domains to Let's Encrypt's root cert public key
- - - - -
27a7af4f by Henry Wilkes at 2024-03-12T11:26:45+01:00
Customize moz-toggle for tor-browser.
- - - - -
b159ab04 by Richard Pospesel at 2024-03-12T11:26:45+01:00
Bug 41822: Unconditionally disable default browser UX in about:preferences
- - - - -
30 changed files:
- .eslintignore
- .gitignore
- + .gitlab/issue_templates/Backport Android Security Fixes.md
- + .gitlab/issue_templates/Rebase Browser - Alpha.md
- + .gitlab/issue_templates/Rebase Browser - Stable.md
- + .gitlab/issue_templates/bug.md
- + .gitlab/merge_request_templates/default.md
- accessible/android/SessionAccessibility.cpp
- accessible/android/SessionAccessibility.h
- accessible/ipc/DocAccessibleParent.cpp
- accessible/ipc/DocAccessibleParent.h
- accessible/ipc/moz.build
- + browser/actors/AboutTBUpdateChild.jsm
- + browser/actors/AboutTBUpdateParent.jsm
- + browser/actors/CryptoSafetyChild.jsm
- + browser/actors/CryptoSafetyParent.jsm
- − browser/actors/RFPHelperChild.sys.mjs
- − browser/actors/RFPHelperParent.sys.mjs
- browser/actors/moz.build
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- browser/app/macbuild/Contents/MacOS-files.in
- browser/app/moz.build
- browser/app/permissions
- + browser/app/profile/000-tor-browser.js
- + browser/app/profile/001-base-profile.js
- browser/app/profile/firefox.js
- browser/base/content/aboutDialog-appUpdater.js
- browser/base/content/aboutDialog.js
- browser/base/content/aboutDialog.xhtml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cf4437…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cf4437…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser][tor-browser-115.8.0esr-13.5-1] 2 commits: fixup! Bug 21952: Implement Onion-Location
by ma1 (@ma1) 12 Mar '24
by ma1 (@ma1) 12 Mar '24
12 Mar '24
ma1 pushed to branch tor-browser-115.8.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
13864ce2 by hackademix at 2024-03-12T11:39:34+01:00
fixup! Bug 21952: Implement Onion-Location
Bug 42440: Remove the "Prioritize .onion sites when known" option
- - - - -
cc1d2cd0 by hackademix at 2024-03-12T17:14:18+01:00
fixup! Add TorStrings module for localization
Bug 42440: Remove the "Prioritize .onion sites when known" option
- - - - -
12 changed files:
- browser/components/onionservices/OnionLocationParent.sys.mjs
- − browser/components/onionservices/content/onionlocationPreferences.inc.xhtml
- − browser/components/onionservices/content/onionlocationPreferences.js
- browser/components/onionservices/jar.mn
- browser/components/preferences/privacy.inc.xhtml
- browser/components/preferences/privacy.js
- dom/base/Document.cpp
- mobile/android/geckoview/api.txt
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
- modules/libpref/init/StaticPrefList.yaml
- toolkit/modules/TorStrings.sys.mjs
- toolkit/torbutton/chrome/locale/en-US/onionLocation.properties
Changes:
=====================================
browser/components/onionservices/OnionLocationParent.sys.mjs
=====================================
@@ -3,8 +3,10 @@
import { TorStrings } from "resource://gre/modules/TorStrings.sys.mjs";
// Prefs
+
+// We keep the "prioritizeonions" name, even if obsolete, in order to
+// prevent the notification from being shown again to upgrading users.
const NOTIFICATION_PREF = "privacy.prioritizeonions.showNotification";
-const PRIORITIZE_ONIONS_PREF = "privacy.prioritizeonions.enabled";
// Element IDs
const ONIONLOCATION_BOX_ID = "onion-location-box";
@@ -18,9 +20,8 @@ const NOTIFICATION_ANCHOR_ID = "onion-location-box";
const STRING_ONION_AVAILABLE = TorStrings.onionLocation.onionAvailable;
const NOTIFICATION_CANCEL_LABEL = TorStrings.onionLocation.notNow;
const NOTIFICATION_CANCEL_ACCESSKEY = TorStrings.onionLocation.notNowAccessKey;
-const NOTIFICATION_OK_LABEL = TorStrings.onionLocation.alwaysPrioritize;
-const NOTIFICATION_OK_ACCESSKEY =
- TorStrings.onionLocation.alwaysPrioritizeAccessKey;
+const NOTIFICATION_OK_LABEL = TorStrings.onionLocation.loadOnion;
+const NOTIFICATION_OK_ACCESSKEY = TorStrings.onionLocation.loadOnionAccessKey;
const NOTIFICATION_TITLE = TorStrings.onionLocation.tryThis;
const NOTIFICATION_DESCRIPTION = TorStrings.onionLocation.description;
const NOTIFICATION_LEARN_MORE_URL =
@@ -90,9 +91,7 @@ export class OnionLocationParent extends JSWindowActorParent {
label: NOTIFICATION_OK_LABEL,
accessKey: NOTIFICATION_OK_ACCESSKEY,
callback() {
- Services.prefs.setBoolPref(PRIORITIZE_ONIONS_PREF, true);
OnionLocationParent.redirect(browser);
- win.openPreferences("privacy-onionservices");
},
};
=====================================
browser/components/onionservices/content/onionlocationPreferences.inc.xhtml deleted
=====================================
@@ -1,11 +0,0 @@
-# Copyright (c) 2020, The Tor Project, Inc.
-
-<groupbox id="onionServicesGroup" data-category="panePrivacy" data-subcategory="onionservices" hidden="true">
- <label><html:h2 id="onionServicesTitle"></html:h2></label>
- <label><label class="tail-with-learn-more" id="prioritizeOnionsDesc"></label><label
- class="learnMore" is="text-link" id="onionServicesLearnMore"></label></label>
- <radiogroup id="prioritizeOnionsRadioGroup" aria-labelledby="prioritizeOnionsDesc" preference="privacy.prioritizeonions.enabled">
- <radio id="onionServicesRadioAlways" value="true"/>
- <radio id="onionServicesRadioAsk" value="false"/>
- </radiogroup>
-</groupbox>
=====================================
browser/components/onionservices/content/onionlocationPreferences.js deleted
=====================================
@@ -1,32 +0,0 @@
-// Copyright (c) 2020, The Tor Project, Inc.
-
-"use strict";
-
-ChromeUtils.defineESModuleGetters(this, {
- TorStrings: "resource://gre/modules/TorStrings.sys.mjs",
-});
-
-const OnionLocationPreferences = {
- init() {
- document.getElementById("onionServicesTitle").textContent =
- TorStrings.onionLocation.onionServicesTitle;
- document.getElementById("prioritizeOnionsDesc").textContent =
- TorStrings.onionLocation.prioritizeOnionsDescription;
- const learnMore = document.getElementById("onionServicesLearnMore");
- learnMore.textContent = TorStrings.onionLocation.learnMore;
- learnMore.href = TorStrings.onionLocation.learnMoreURL;
- if (TorStrings.onionLocation.learnMoreURL.startsWith("about:")) {
- learnMore.setAttribute("useoriginprincipal", "true");
- }
- document.getElementById("onionServicesRadioAlways").label =
- TorStrings.onionLocation.always;
- document.getElementById("onionServicesRadioAsk").label =
- TorStrings.onionLocation.askEverytime;
- },
-};
-
-Object.defineProperty(this, "OnionLocationPreferences", {
- value: OnionLocationPreferences,
- enumerable: true,
- writable: false,
-});
=====================================
browser/components/onionservices/jar.mn
=====================================
@@ -6,5 +6,4 @@ browser.jar:
content/browser/onionservices/onionservices.css (content/onionservices.css)
content/browser/onionservices/savedKeysDialog.js (content/savedKeysDialog.js)
content/browser/onionservices/savedKeysDialog.xhtml (content/savedKeysDialog.xhtml)
- content/browser/onionservices/onionlocationPreferences.js (content/onionlocationPreferences.js)
skin/classic/browser/onionlocation.css (content/onionlocation.css)
=====================================
browser/components/preferences/privacy.inc.xhtml
=====================================
@@ -14,8 +14,6 @@
<html:h1 data-l10n-id="privacy-header"/>
</hbox>
-#include ../onionservices/content/onionlocationPreferences.inc.xhtml
-
<!-- Tracking / Content Blocking -->
<groupbox id="trackingGroup" data-category="panePrivacy" hidden="true" aria-describedby="contentBlockingDescription" class="highlighting-group">
<label id="contentBlockingHeader"><html:h2 data-l10n-id="content-blocking-enhanced-tracking-protection"/></label>
=====================================
browser/components/preferences/privacy.js
=====================================
@@ -75,12 +75,6 @@ XPCOMUtils.defineLazyScriptGetter(
"chrome://browser/content/securitylevel/securityLevel.js"
);
-XPCOMUtils.defineLazyScriptGetter(
- this,
- ["OnionLocationPreferences"],
- "chrome://browser/content/onionservices/onionlocationPreferences.js"
-);
-
XPCOMUtils.defineLazyPreferenceGetter(
this,
"OS_AUTH_ENABLED",
@@ -167,9 +161,6 @@ Preferences.addAll([
// Do not track
{ id: "privacy.donottrackheader.enabled", type: "bool" },
- // Onion Location
- { id: "privacy.prioritizeonions.enabled", type: "bool" },
-
// Media
{ id: "media.autoplay.default", type: "int" },
@@ -349,13 +340,6 @@ var gPrivacyPane = {
});
},
- /**
- * Show the OnionLocation preferences UI
- */
- _initOnionLocation() {
- OnionLocationPreferences.init();
- },
-
/**
* Whether the prompt to restart Firefox should appear when changing the autostart pref.
*/
@@ -899,7 +883,6 @@ var gPrivacyPane = {
this._initTrackingProtectionExtensionControl();
OnionServicesAuthPreferences.init();
this._initSecurityLevel();
- this._initOnionLocation();
Services.telemetry.setEventRecordingEnabled("pwmgr", true);
=====================================
dom/base/Document.cpp
=====================================
@@ -6976,14 +6976,7 @@ void Document::SetHeaderData(nsAtom* aHeaderField, const nsAString& aData) {
nsCOMPtr<nsIURI> onionURI;
if (NS_SUCCEEDED(NS_NewURI(getter_AddRefs(onionURI), aData)) &&
IsValidOnionLocation(Document::GetDocumentURI(), onionURI)) {
- if (StaticPrefs::privacy_prioritizeonions_enabled()) {
- nsCOMPtr<nsIRefreshURI> refresher(mDocumentContainer);
- if (refresher) {
- refresher->RefreshURI(onionURI, NodePrincipal(), 0);
- }
- } else {
- mOnionLocationURI = onionURI;
- }
+ mOnionLocationURI = onionURI;
}
}
}
=====================================
mobile/android/geckoview/api.txt
=====================================
@@ -801,7 +801,6 @@ package org.mozilla.geckoview {
method public boolean getLoginAutofillEnabled();
method public boolean getPauseForDebuggerEnabled();
method public int getPreferredColorScheme();
- method public boolean getPrioritizeOnions();
method public boolean getRemoteDebuggingEnabled();
method @Nullable public GeckoRuntime getRuntime();
method @Nullable public Rect getScreenSizeOverride();
@@ -827,7 +826,6 @@ package org.mozilla.geckoview {
method public void setLocales(@Nullable String[]);
method @NonNull public GeckoRuntimeSettings setLoginAutofillEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setPreferredColorScheme(int);
- method @NonNull public GeckoRuntimeSettings setPrioritizeOnions(boolean);
method @NonNull public GeckoRuntimeSettings setRemoteDebuggingEnabled(boolean);
method @NonNull public GeckoRuntimeSettings setSpoofEnglish(boolean);
method @NonNull public GeckoRuntimeSettings setTorSecurityLevel(int);
@@ -867,7 +865,6 @@ package org.mozilla.geckoview {
method @NonNull public GeckoRuntimeSettings.Builder locales(@Nullable String[]);
method @NonNull public GeckoRuntimeSettings.Builder loginAutofillEnabled(boolean);
method @NonNull public GeckoRuntimeSettings.Builder pauseForDebugger(boolean);
- method @NonNull public GeckoRuntimeSettings.Builder prioritizeOnions(boolean);
method @NonNull public GeckoRuntimeSettings.Builder preferredColorScheme(int);
method @NonNull public GeckoRuntimeSettings.Builder remoteDebuggingEnabled(boolean);
method @NonNull public GeckoRuntimeSettings.Builder screenSizeOverride(int, int);
=====================================
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
=====================================
@@ -477,17 +477,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
- /**
- * Sets whether the browser should prioritize .onion sites when available.
- *
- * @param flag True if we should prioritize .onion sites, false otherwise
- * @return This Builder instance.
- */
- public @NonNull Builder prioritizeOnions(final boolean flag) {
- getSettings().mPrioritizeOnions.set(flag);
- return this;
- }
-
public @NonNull Builder useNewBootstrap(final boolean flag) {
getSettings().mUseNewBootstrap.set(flag);
return this;
@@ -543,8 +532,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
/* package */ final Pref<Integer> mSpoofEnglish = new Pref<>("privacy.spoof_english", 0);
/* package */ final Pref<Integer> mSecurityLevel =
new Pref<>("browser.security_level.security_slider", 4);
- /* package */ final Pref<Boolean> mPrioritizeOnions =
- new Pref<>("privacy.prioritizeonions.enabled", false);
/* package */ final Pref<Boolean> mUseNewBootstrap =
new Pref<>("browser.tor_android.use_new_bootstrap", false);
@@ -1339,26 +1326,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
return this;
}
- /**
- * Gets whether we should prioritize .onion sites.
- *
- * @return Whether we should prioritize .onion sites.
- */
- public boolean getPrioritizeOnions() {
- return mPrioritizeOnions.get();
- }
-
- /**
- * Sets whether we should prioritize .onion sites.
- *
- * @param flag Whether we should prioritize .onion sites.
- * @return This GeckoRuntimeSettings instance.
- */
- public @NonNull GeckoRuntimeSettings setPrioritizeOnions(final boolean flag) {
- mPrioritizeOnions.commit(flag);
- return this;
- }
-
public boolean getUseNewBootstrap() {
return mUseNewBootstrap.get();
}
=====================================
modules/libpref/init/StaticPrefList.yaml
=====================================
@@ -13578,11 +13578,6 @@
value: ""
mirror: never
-- name: privacy.prioritizeonions.enabled
- type: RelaxedAtomicBool
- value: false
- mirror: always
-
#---------------------------------------------------------------------------
# Prefs starting with "prompts."
#---------------------------------------------------------------------------
=====================================
toolkit/modules/TorStrings.sys.mjs
=====================================
@@ -439,20 +439,15 @@ const Loader = {
*/
onionLocation() {
const strings = {
- alwaysPrioritize: "Always Prioritize Onionsites",
- alwaysPrioritizeAccessKey: "a",
+ learnMore: "Learn more…",
+ loadOnion: "Visit the .onion",
+ loadOnionAccessKey: "V",
notNow: "Not Now",
notNowAccessKey: "n",
description:
- "Website publishers can protect users by adding a security layer. This prevents eavesdroppers from knowing that you are the one visiting that website.",
- tryThis: "Try this: Onionsite",
- onionAvailable: "Onionsite available",
- learnMore: "Learn more",
- always: "Always",
- askEverytime: "Ask you every time",
- prioritizeOnionsDescription:
- "Prioritize onionsites when they are available.",
- onionServicesTitle: "Onion Services",
+ "There's a more private and secure version of this site available over the Tor network via onion services. Onion services help website publishers and their visitors defeat surveillance and censorship.",
+ tryThis: "Try Onion Services",
+ onionAvailable: ".onion available",
};
const tsb = new TorPropertyStringBundle(
=====================================
toolkit/torbutton/chrome/locale/en-US/onionLocation.properties
=====================================
@@ -4,10 +4,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Onion-Location strings.
-onionLocation.alwaysPrioritize=Always Prioritize Onions
-# Localization note: this is the access key for "Always Prioritize Onions".
+onionLocation.loadOnion=Visit the .onion
+# Localization note: this is the access key for "Visit the .onion".
# It should be a character that appears in that string.
-onionLocation.alwaysPrioritizeAccessKey=a
+onionLocation.loadOnionAccessKey=V
onionLocation.notNow=Not Now
# Localization note: this is the access key for "Not now".
# It should be a character that appears in that string.
@@ -16,7 +16,3 @@ onionLocation.description=There's a more private and secure version of this site
onionLocation.tryThis=Try Onion Services
onionLocation.onionAvailable=.onion available
onionLocation.learnMore=Learn more…
-onionLocation.always=Always
-onionLocation.askEverytime=Ask every time
-onionLocation.prioritizeOnionsDescription=Prioritize .onion sites when known.
-onionLocation.onionServicesTitle=Onion Services
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/2cf77a…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/2cf77a…
You're receiving this email because of your account on gitlab.torproject.org.
1
0

[Git][tpo/applications/tor-browser-build][main] 2 commits: Bug 41088: Remove use of projects/browser/run_scripts
by boklm (@boklm) 12 Mar '24
by boklm (@boklm) 12 Mar '24
12 Mar '24
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
ec2d06bd by Nicolas Vigier at 2024-03-11T15:52:12+01:00
Bug 41088: Remove use of projects/browser/run_scripts
The script run_scripts was used to generate multiple bundles (for the
different locales) in parallel. However now that we only have one bundle
for all locales, using run_scripts is not useful anymore, and we can
simplify the build script by removing the use of run_scripts.
- - - - -
fbc5b080 by Nicolas Vigier at 2024-03-11T15:52:14+01:00
Bug 41088: Simplify a little projects/browser/build
- - - - -
4 changed files:
- projects/browser/build
- projects/browser/config
- projects/browser/ddmg.sh
- − projects/browser/run_scripts
Changes:
=====================================
projects/browser/build
=====================================
@@ -14,7 +14,8 @@ mkdir -p $OUTDIR
# When we build with MULTI_LINGUAL=1, the browser will be packaged inside a
# directory named tor-browser (instead of tor-browser_en-US). Therefore we
# stage everything under tor-browser-stage to avoid a conflict.
-TB_STAGE_DIR=$distdir/tor-browser-stage
+PKG_DIR='[% c("var/project-name") %]'
+TB_STAGE_DIR="$distdir/$PKG_DIR[% IF c('var/windows') %]/[% c('var/Project_Name') %][% END %]"
GENERATEDPREFSPATH=$rootdir/Bundle-Data/generated-prefs.js
# Create initially empty prefs file where we can dump our conditionally included/genetered prefs
touch "$GENERATEDPREFSPATH"
@@ -37,7 +38,7 @@ touch "$GENERATEDPREFSPATH"
tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/libdmg') %]
export PATH=/var/tmp/dist/hfsplus-tools:/var/tmp/dist/libdmg-hfsplus:$PATH
[% ELSE %]
- TBDIR=$TB_STAGE_DIR/Browser
+ TBDIR="$TB_STAGE_DIR/Browser"
TBDIRS=("$TBDIR")
DOCSPATH=[% c('var/ProjectName') %]/Docs
@@ -124,7 +125,6 @@ mv [% c('input_files_by_name/noscript') %] "$TBDIR/$EXTSPATH/{73a6fe31-595d-460b
# on linux, libstdc++ lives in it's own directory
[% IF c("var/linux") %]
- find $TBDIR/$TORBINPATH
mkdir -p "$TBDIR/$TORBINPATH/libstdc++"
mv "$TBDIR/$TORBINPATH"/libstdc++.so.* "$TBDIR/$TORBINPATH/libstdc++"
[% END %]
@@ -145,32 +145,32 @@ do
done
[% IF c("var/linux") %]
- cat > ${TB_STAGE_DIR}/start-[% c("var/project-name") %].desktop << 'RBM_TB_EOF'
+ cat > "${TB_STAGE_DIR}/start-[% c('var/project-name') %].desktop" << 'RBM_TB_EOF'
[% INCLUDE 'RelativeLink/start-browser.desktop' -%]
RBM_TB_EOF
- cat > ${TB_STAGE_DIR}/Browser/start-[% c("var/project-name") %] << 'RBM_TB_EOF'
+ cat > "${TB_STAGE_DIR}/Browser/start-[% c('var/project-name') %]" << 'RBM_TB_EOF'
[% INCLUDE 'RelativeLink/start-browser' -%]
RBM_TB_EOF
- cat > ${TB_STAGE_DIR}/Browser/execdesktop << 'RBM_TB_EOF'
+ cat > "${TB_STAGE_DIR}/Browser/execdesktop" << 'RBM_TB_EOF'
[% INCLUDE 'RelativeLink/execdesktop' -%]
RBM_TB_EOF
- chmod +x ${TB_STAGE_DIR}/start-[% c("var/project-name") %].desktop \
- ${TB_STAGE_DIR}/Browser/start-[% c("var/project-name") %] \
- ${TB_STAGE_DIR}/Browser/execdesktop
- cp ${TB_STAGE_DIR}/start-[% c("var/project-name") %].desktop \
- ${TB_STAGE_DIR}/Browser
+ chmod +x "${TB_STAGE_DIR}/start-[% c('var/project-name') %].desktop" \
+ "${TB_STAGE_DIR}/Browser/start-[% c('var/project-name') %]" \
+ "${TB_STAGE_DIR}/Browser/execdesktop"
+ cp "${TB_STAGE_DIR}/start-[% c('var/project-name') %].desktop" \
+ "${TB_STAGE_DIR}/Browser"
[% IF c("var/namecoin") %]
- pushd ${TB_STAGE_DIR}/Browser/
+ pushd "${TB_STAGE_DIR}/Browser/"
patch -p1 < $rootdir/namecoin.patch
popd
[% END %]
# Make sure we get the desired scrollbar behavior with Gtk3, see bug 27546.
- GTK_SETTINGS_DIR=${TB_STAGE_DIR}/Browser/.config/gtk-3.0
+ GTK_SETTINGS_DIR="${TB_STAGE_DIR}/Browser/.config/gtk-3.0"
mkdir -p $GTK_SETTINGS_DIR
cp $rootdir/gtk3-settings.ini $GTK_SETTINGS_DIR/settings.ini
[% END %]
-tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/browser.tar.[% c("compress_tar") %]
+tar -C "${TB_STAGE_DIR}" -xf [% c('input_files_by_name/firefox') %]/browser.tar.[% c("compress_tar") %]
[% IF c("var/macos_universal") -%]
# Use symlink in tmp dir to extract "Tor Browser.app" to "Tor Browser-aarch64.app"
@@ -215,8 +215,8 @@ tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/browser.tar.[%
END; %]
[% IF c("var/macos") %]
- tar -C "Bundle-Data/[% c('var/ProjectName') %].dmg" -c . | tar -C $TB_STAGE_DIR -x
- pushd $TB_STAGE_DIR
+ tar -C "Bundle-Data/[% c('var/ProjectName') %].dmg" -c . | tar -C "$TB_STAGE_DIR" -x
+ pushd "$TB_STAGE_DIR"
cp [% c('var/channel') %].DS_Store .DS_Store
rm *.DS_Store
popd
@@ -264,17 +264,10 @@ done
[% END -%]
[% IF c("var/linux") && c("var/tor-browser") %]
- chmod 700 ${TB_STAGE_DIR}/Browser/[% c('var/ProjectName') %]/Data/Browser
- chmod 700 ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Tor
+ chmod 700 "${TB_STAGE_DIR}/Browser/[% c('var/ProjectName') %]/Data/Browser"
+ chmod 700 "${TB_STAGE_DIR}/Browser/TorBrowser/Data/Tor"
[% END %]
-# With multi-lingual builds, we use "ALL" in the package name as the locale for
-# update purposes. But we do not include "ALL" in the name of the directory that
-# is inside the package (in other words, users will not see tor-browser_ALL
-# after they install Tor Browser).
-PKG_LOCALE="ALL"
-PKG_DIR='[% c("var/project-name") %]'
-
for tbdir in "${TBDIRS[@]}"
do
tbdir="$tbdir[% IF c('var/macos') %]/Contents/Resources[% END %]/"
@@ -325,12 +318,13 @@ done
# we write the uninstaller from the installer.
# Instead, we need to write an updated postupdate.exe also when updating.
makensis postupdate.nsi
- mv postupdate.exe ${TB_STAGE_DIR}/Browser/
+ mv postupdate.exe "${TB_STAGE_DIR}/Browser/"
popd
[% END -%]
- mv ${TB_STAGE_DIR} $distdir/windows-installer/"[% c('var/Project_Name') %]"
- mv $distdir/windows-installer ${TB_STAGE_DIR}
+ mv "${TB_STAGE_DIR}" "$distdir/windows-installer/[% c('var/Project_Name') %]"
+ rmdir "$distdir/$PKG_DIR"
+ mv $distdir/windows-installer "$distdir/$PKG_DIR"
[% END %]
[% IF c("var/macos_universal") -%]
@@ -355,18 +349,47 @@ done
rm -Rf "$TBDIR_AARCH64"
[% END -%]
-[% IF c("var/windows") %]
- TBDIR="$distdir/$PKG_DIR/[% c("var/Project_Name") %]/Browser"
-[% ELSIF c("var/macos") %]
- TBDIR="$distdir/$PKG_DIR/[% c('var/display_name') %].app"
-[% ELSE %]
- TBDIR="$distdir/$PKG_DIR/Browser"
-[% END %]
+[% IF c("var/updater_enabled") -%]
+ cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/
+[% END -%]
-cat > "$scripts_dir/create-$PKG_DIR" << SCRIPT_EOF
-#!/bin/bash
-set -e
-cp -a ${TB_STAGE_DIR} $distdir/$PKG_DIR
+[% IF c("var/windows") -%]
+ archive_ext=zip
+[% ELSE -%]
+ archive_ext=tar.xz
+[% END -%]
+
+debug_symbols="$rootdir/[% c('input_files_by_name/firefox') %]/browser-debug-symbols.$archive_ext"
+if [[ -f "$debug_symbols" ]]; then
+ cp "$debug_symbols" "$OUTDIR/[% c('var/project-name') %]-debug-symbols-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].$archive_ext"
+fi
+
+geckodriver="$rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.$archive_ext"
+if [[ -f "$geckodriver" ]]; then
+ cp "$geckodriver" "$OUTDIR/geckodriver-[% c('var/osname') %]-[% c('var/torbrowser_version') %].$archive_ext"
+fi
+[% IF c("var/macos_universal") -%]
+ geckodriver="$rootdir/[% c('input_files_by_name/firefox-aarch64') %]/geckodriver.$archive_ext"
+ if [[ -f "$geckodriver" ]]; then
+ cp "$geckodriver" "$OUTDIR/geckodriver-macos-aarch64-[% c('var/torbrowser_version') %].$archive_ext"
+ fi
+[% END -%]
+
+[%IF c("var/tor-browser") -%]
+ tor_expert_bundle_src="[% c("input_files_by_name/tor-expert-bundle") %]"
+ # strip off trailing "$buildid.tar.gz"
+ tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz
+ cp $rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest
+ [% IF c("var/macos_universal") %]
+ tor_expert_bundle_src="[% c('input_files_by_name/tor-expert-bundle-aarch64') %]"
+ # strip off trailing "$buildid.tar.gz"
+ tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz
+ cp $rootdir/[% c('input_files_by_name/tor-expert-bundle-aarch64') %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest
+ [% END -%]
+[% END -%]
+[% IF c("var/build_infos_json") -%]
+ cp $rootdir/[% c('input_files_by_name/firefox') %]/build-infos.json "$OUTDIR"/build-infos-[% c("var/mar_osname") %].json
+[% END -%]
[% IF c("var/updater_enabled") -%]
pushd "$TBDIR[% IF c("var/macos") %]/Contents/Resources/[% END %]"
@@ -378,7 +401,7 @@ cd $distdir
[% IF c("var/build_mar") && c("var/updater_enabled") -%]
# Create full MAR file and compressed package.
- [% SET mar_file = c("var/project-name") _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '_${PKG_LOCALE}.mar' %]
+ [% SET mar_file = c("var/project-name") _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '_ALL.mar' %]
MAR=$MARTOOLS/mar \
MOZ_PRODUCT_VERSION=[% c("var/torbrowser_version") %] \
MAR_CHANNEL_ID=[% c("var/mar_channel_id") %] \
@@ -415,55 +438,3 @@ cd $distdir
[% END -%]
popd
[% END %]
-rm -rf $distdir/${PKG_DIR}
-SCRIPT_EOF
-
-[% IF c("var/updater_enabled") -%]
- cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/
-[% END -%]
-
-[% IF c("var/windows") -%]
- archive_ext=zip
-[% ELSE -%]
- archive_ext=tar.xz
-[% END -%]
-
-debug_symbols="$rootdir/[% c('input_files_by_name/firefox') %]/browser-debug-symbols.$archive_ext"
-if [[ -f "$debug_symbols" ]]; then
- cp "$debug_symbols" "$OUTDIR/[% c('var/project-name') %]-debug-symbols-[% c('var/mar_osname') %]-[% c('var/torbrowser_version') %].$archive_ext"
-fi
-
-[% IF c("var/macos_universal") -%]
- geckodriver="$rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.$archive_ext"
- if [[ -f "$geckodriver" ]]; then
- cp "$geckodriver" "$OUTDIR/geckodriver-[% c('var/osname') %]-[% c('var/torbrowser_version') %].$archive_ext"
- fi
- geckodriver="$rootdir/[% c('input_files_by_name/firefox-aarch64') %]/geckodriver.$archive_ext"
- if [[ -f "$geckodriver" ]]; then
- cp "$geckodriver" "$OUTDIR/geckodriver-macos-aarch64-[% c('var/torbrowser_version') %].$archive_ext"
- fi
-[% ELSE -%]
- geckodriver="$rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.$archive_ext"
- if [[ -f "$geckodriver" ]]; then
- cp "$geckodriver" "$OUTDIR/geckodriver-[% c('var/osname') %]-[% c('var/torbrowser_version') %].$archive_ext"
- fi
-[% END -%]
-
-[%IF c("var/tor-browser") -%]
- tor_expert_bundle_src="[% c("input_files_by_name/tor-expert-bundle") %]"
- # strip off trailing "$buildid.tar.gz"
- tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz
- cp $rootdir/[% c("input_files_by_name/tor-expert-bundle") %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest
- [% IF c("var/macos_universal") %]
- tor_expert_bundle_src="[% c('input_files_by_name/tor-expert-bundle-aarch64') %]"
- # strip off trailing "$buildid.tar.gz"
- tor_expert_bundle_dest=${tor_expert_bundle_src:0:-7}.tar.gz
- cp $rootdir/[% c('input_files_by_name/tor-expert-bundle-aarch64') %]/tor-expert-bundle.tar.gz "$OUTDIR"/$tor_expert_bundle_dest
- [% END -%]
-[% END -%]
-[% IF c("var/build_infos_json") -%]
- cp $rootdir/[% c('input_files_by_name/firefox') %]/build-infos.json "$OUTDIR"/build-infos-[% c("var/mar_osname") %].json
-[% END -%]
-
-chmod 775 $rootdir/run_scripts "$scripts_dir"/*
-$rootdir/run_scripts [% c("num_procs") %] "$scripts_dir"
=====================================
projects/browser/config
=====================================
@@ -8,8 +8,6 @@ var:
ddmg: '[% INCLUDE ddmg.sh %]'
deps:
- python3
- - libparallel-forkmanager-perl
- - libfile-slurp-perl
- bzip2
- jq
mar_osname: '[% c("var/osname") %]'
@@ -67,8 +65,6 @@ targets:
input_files:
- project: container-image
- - filename: run_scripts
- enable: '[% ! c("var/android") %]'
- project: firefox
name: firefox
enable: '[% ! c("var/android") %]'
=====================================
projects/browser/ddmg.sh
=====================================
@@ -7,8 +7,8 @@ find [% src %] ! -executable -exec chmod 0644 {} \;
find [% src %] -exec [% c("touch") %] {} \;
-dmg_tmpdir=\$(mktemp -d)
-hfsfile="\$dmg_tmpdir/tbb-uncompressed.dmg"
+dmg_tmpdir=$(mktemp -d)
+hfsfile="$dmg_tmpdir/tbb-uncompressed.dmg"
# hfsplus sets all the times to time(NULL)
export LD_PRELOAD=[% c("var/faketime_path") %]
@@ -16,29 +16,29 @@ export FAKETIME="[% USE date; GET date.format(c('timestamp'), format = '%Y-%m-%d
src_dir=[% src %]
# 1 for ceiling and 1 for the inode
-fileblocks=\$(find "\$src_dir" -type f -printf '%s\n' | awk '{s += int(\$1 / 4096) + 2} END {print s}')
-directories=\$(find "\$src_dir" -type d | wc -l)
+fileblocks=$(find "$src_dir" -type f -printf '%s\n' | awk '{s += int($1 / 4096) + 2} END {print s}')
+directories=$(find "$src_dir" -type d | wc -l)
# Give some room to breathe
-size=\$(echo \$((\$fileblocks + \$directories)) | awk '{print int(\$1 * 1.1)}')
-dd if=/dev/zero of="\$hfsfile" bs=4096 count=\$size
-newfs_hfs -v "[% c('var/display_name') %]" "\$hfsfile"
+size=$(echo $(($fileblocks + $directories)) | awk '{print int($1 * 1.1)}')
+dd if=/dev/zero of="$hfsfile" bs=4096 count=$size
+newfs_hfs -v "[% c('var/display_name') %]" "$hfsfile"
pushd [% src %]
find -type d -mindepth 1 | sed -e 's/^\.\///' | sort | while read dirname; do
- hfsplus "\$hfsfile" mkdir "/\$dirname"
- hfsplus "\$hfsfile" chmod 0755 "/\$dirname"
+ hfsplus "$hfsfile" mkdir "/$dirname"
+ hfsplus "$hfsfile" chmod 0755 "/$dirname"
done
find -type f | sed -e 's/^\.\///' | sort | while read filename; do
- hfsplus "\$hfsfile" add "\$filename" "/\$filename"
- hfsplus "\$hfsfile" chmod \$(stat --format '0%a' "\$filename") "/\$filename"
+ hfsplus "$hfsfile" add "$filename" "/$filename"
+ hfsplus "$hfsfile" chmod $(stat --format '0%a' "$filename") "/$filename"
done
# hfsplus does not play well with dangling links
-hfsplus "\$hfsfile" symlink /Applications /Applications
+hfsplus "$hfsfile" symlink /Applications /Applications
# Show the volume icon
-hfsplus "\$hfsfile" attr / C
+hfsplus "$hfsfile" attr / C
-dmg dmg "\$hfsfile" [% c('dmg_out', { error_if_undef => 1 }) %]
+dmg dmg "$hfsfile" [% c('dmg_out', { error_if_undef => 1 }) %]
popd
-rm -Rf "\$dmg_tmpdir"
+rm -Rf "$dmg_tmpdir"
=====================================
projects/browser/run_scripts deleted
=====================================
@@ -1,30 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-
-use Parallel::ForkManager;
-use File::Slurp;
-
-sub exit_error {
- print STDERR "Error: ", $_[0], "\n";
- chdir '/';
- exit (exists $_[1] ? $_[1] : 1);
-}
-
-exit_error "Wrong number of arguments" unless @ARGV == 2;
-my ($nb_threads, $scripts_dir) = @ARGV;
-exit_error "Could not enter $scripts_dir" unless chdir $scripts_dir;
-my $pm = Parallel::ForkManager->new($nb_threads);
-$pm->run_on_finish(
- sub {
- my ($pid, $exit, $id) = @_;
- exit_error "Error running $id" unless $exit == 0;
- print "Finished $id\n";
- }
-);
-foreach my $script (sort(read_dir($scripts_dir))) {
- $pm->start($script) and next;
- print "Running $script\n";
- exit_error "Error running $script" unless system("./$script") == 0;
- $pm->finish;
-}
-$pm->wait_all_children;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/compare/…
You're receiving this email because of your account on gitlab.torproject.org.
1
0