tbb-commits
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- 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
- 19540 discussions
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-13.0-1] 13 commits: fixup! Firefox preference overrides.
by Pier Angelo Vendrame (@pierov) 29 May '23
by Pier Angelo Vendrame (@pierov) 29 May '23
29 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
16c0f67a by hackademix at 2023-05-29T10:30:14+02:00
fixup! Firefox preference overrides.
- - - - -
073b7c85 by Pier Angelo Vendrame at 2023-05-29T10:30:31+02:00
fixup! Bug 41668: Tweaks to the Base Browser updater for Tor Browser
Bug 41776: Keep shipping the old fontconfig file until users have one
- - - - -
2ce0dfb9 by Pier Angelo Vendrame at 2023-05-29T10:30:31+02:00
fixup! Firefox preference overrides.
Bug 41732: Use font.system.whitelist also on Linux as a defense-in-depth
- - - - -
c3a40e82 by Pier Angelo Vendrame at 2023-05-29T10:30:32+02:00
fixup! Bug 41668: Tweaks to the Base Browser updater for Tor Browser
Bug 41776 (fix): Added some missing lines to the previous patch
- - - - -
d3a2bcd2 by cypherpunks1 at 2023-05-29T10:30:32+02:00
fixup! Bug 23247: Communicating security expectations for .onion
Bug 33298: Warn when submitting form data from http onion sites over an insecure connection
- - - - -
c8e4ee0b by cypherpunks1 at 2023-05-29T10:30:33+02:00
fixup! Bug 23247: Communicating security expectations for .onion
Bug 41785: Show http onion resources as secure in network monitor
- - - - -
02ad5977 by Henry Wilkes at 2023-05-29T10:30:33+02:00
fixup! Bug 40597: Implement TorSettings module
Bug 41608 - Ignore tor connection errors when tor connection is
cancelled by the user. This can happen if the bootstrap process is
cancelled late in the process.
Also remove unused cancelAutoBootstrapping.
- - - - -
6e08e478 by Henry Wilkes at 2023-05-29T10:30:33+02:00
fixup! Add TorStrings module for localization
Bug 41608 - Add new connection status strings.
- - - - -
df852978 by Henry Wilkes at 2023-05-29T10:30:34+02:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 41608 - Use the torconnect icon for the onion slash.
- - - - -
a71c563a by Henry Wilkes at 2023-05-29T10:30:34+02:00
fixup! Bug 21952: Implement Onion-Location
Bug 41608 - Use the same styling for ".onion available" urlbar button as
the tor-connect-urlbar-button. This also stops the button from
overflowing its container like before. Also move to after the bookmark
button.
- - - - -
b70efa00 by Henry Wilkes at 2023-05-29T10:33:17+02:00
amend! Bug 27476: Implement about:torconnect captive portal within Tor Browser
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.
- - - - -
8c2886c8 by Henry Wilkes at 2023-05-29T10:33:19+02:00
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Bug 41608 and 41526 - Use KeyboardEvent.repeat to block triggering newly
focused buttons in about:torconnect. The approach in tor-browser!607
prevented this by waiting for keyup, but keyup could still be triggered
by a key event initialized elsewhere. E.g. when pressing Enter to close
a modal dialog, the Enter's keyup event would be sent to the
about:torconnect page and trigger the focused button.
- - - - -
6c66708f by Dan Ballard at 2023-05-29T10:33:19+02:00
Bug 41749: Replace the onion-glyph with dedicated icon for onion services
- - - - -
30 changed files:
- browser/app/profile/001-base-profile.js
- browser/base/content/browser.js
- browser/base/content/browser.xhtml
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
- browser/components/onionservices/content/onionlocation.css
- browser/components/torconnect/content/aboutTorConnect.js
- − browser/components/torconnect/content/onion-slash.svg
- − browser/components/torconnect/content/torBootstrapUrlbar.js
- + browser/components/torconnect/content/torConnectTitlebarStatus.css
- + browser/components/torconnect/content/torConnectTitlebarStatus.js
- + browser/components/torconnect/content/torConnectUrlbarButton.js
- − browser/components/torconnect/content/torconnect-urlbar.css
- − browser/components/torconnect/content/torconnect-urlbar.inc.xhtml
- browser/components/torconnect/jar.mn
- browser/components/torpreferences/content/torPreferences.css
- browser/modules/TorConnect.jsm
- browser/modules/TorStrings.jsm
- browser/themes/shared/browser-shared.css
- browser/themes/shared/identity-block/onion-slash.svg
- browser/themes/shared/identity-block/onion-warning.svg
- browser/themes/shared/identity-block/onion.svg
- browser/themes/shared/jar.inc.mn
- + browser/themes/shared/tor-urlbar-button.css
- devtools/shared/webconsole/network-helper.js
- dom/html/HTMLFormElement.cpp
- toolkit/torbutton/chrome/locale/en-US/torConnect.properties
- tools/update-packaging/common.sh
- tools/update-packaging/make_full_update.sh
- tools/update-packaging/make_incremental_update.sh
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -48,6 +48,9 @@ pref("security.nocertdb", true);
pref("browser.download.useDownloadDir", false);
pref("browser.download.manager.addToRecentDocs", false);
+// Prevent download stuffing / DOS (tor-browser#41764)
+pref("browser.download.enable_spam_prevention", true);
+
// Misc privacy: Disk
pref("signon.rememberSignons", false);
pref("browser.formfill.enable", false);
@@ -697,6 +700,8 @@ pref("font.name-list.monospace.x-unicode", "Consolas, Noto Sans Balinese, Noto S
#endif
#ifdef XP_LINUX
+pref("font.system.whitelist", "Arimo, Cousine, Noto Naskh Arabic, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans JP, Noto Sans Javanese, Noto Sans KR, Noto Sans Kannada, Noto Sans Kayah Li, Noto Sans Khmer, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Multani, Noto Sans Myanmar, Noto Sans NKo, Noto Sans New Tai Lue, Noto Sans Newa, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans SC, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols, Noto Sans Symbols2, Noto Sans Syriac, Noto Sans TC, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tifinagh, Noto Sans Tifinagh APT, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Hmong Nyiakeng, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Thai, Noto Serif Tibetan, Noto Serif Yezidi, STIX Math, Tinos, Twemoji Mozilla");
+
// Arabic
pref("font.name-list.serif.ar", "Noto Naskh Arabic, Tinos");
pref("font.name-list.sans-serif.ar", "Noto Naskh Arabic, Arimo");
=====================================
browser/base/content/browser.js
=====================================
@@ -80,6 +80,8 @@ XPCOMUtils.defineLazyModuleGetters(this, {
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
TorConnect: "resource:///modules/TorConnect.jsm",
+ TorConnectState: "resource:///modules/TorConnect.jsm",
+ TorConnectTopics: "resource:///modules/TorConnect.jsm",
TorDomainIsolator: "resource://gre/modules/TorDomainIsolator.jsm",
Translation: "resource:///modules/translation/TranslationParent.jsm",
UITour: "resource:///modules/UITour.jsm",
@@ -270,6 +272,16 @@ XPCOMUtils.defineLazyScriptGetter(
"gSharedTabWarning",
"chrome://browser/content/browser-webrtc.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["gTorConnectUrlbarButton"],
+ "chrome://browser/content/torconnect/torConnectUrlbarButton.js"
+);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["gTorConnectTitlebarStatus"],
+ "chrome://browser/content/torconnect/torConnectTitlebarStatus.js"
+);
XPCOMUtils.defineLazyScriptGetter(
this,
["gTorCircuitPanel"],
@@ -1809,6 +1821,9 @@ var gBrowserInit = {
// Init the OnionAuthPrompt
OnionAuthPrompt.init();
+ gTorConnectUrlbarButton.init();
+ gTorConnectTitlebarStatus.init();
+
gTorCircuitPanel.init();
// Certain kinds of automigration rely on this notification to complete
@@ -1896,8 +1911,6 @@ var gBrowserInit = {
}
this._loadHandled = true;
-
- TorBootstrapUrlbar.init();
},
_cancelDelayedStartup() {
@@ -2555,9 +2568,10 @@ var gBrowserInit = {
OnionAuthPrompt.uninit();
- gTorCircuitPanel.uninit();
+ gTorConnectUrlbarButton.uninit();
+ gTorConnectTitlebarStatus.uninit();
- TorBootstrapUrlbar.uninit();
+ gTorCircuitPanel.uninit();
gAccessibilityServiceIndicator.uninit();
=====================================
browser/base/content/browser.xhtml
=====================================
@@ -37,6 +37,7 @@
<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/onionservices/onionservices.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/torCircuitPanel.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/torconnect/torConnectTitlebarStatus.css" type="text/css"?>
<!DOCTYPE window [
#include browser-doctype.inc
@@ -123,7 +124,6 @@
Services.scriptloader.loadSubScript("chrome://browser/content/search/searchbar.js", this);
Services.scriptloader.loadSubScript("chrome://browser/content/languageNotification.js", this);
Services.scriptloader.loadSubScript("chrome://torbutton/content/torbutton.js", this);
- Services.scriptloader.loadSubScript("chrome://browser/content/torconnect/torBootstrapUrlbar.js", this);
window.onload = gBrowserInit.onLoad.bind(gBrowserInit);
window.onunload = gBrowserInit.onUnload.bind(gBrowserInit);
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -93,6 +93,11 @@
aria-live="polite"/>
<hbox class="private-browsing-indicator"/>
+ <html:div id="tor-connect-titlebar-status" role="status">
+ <html:img alt="" id="tor-connect-titlebar-status-icon" />
+ <html:span id="tor-connect-titlebar-status-label"></html:span>
+ </html:div>
+
#include titlebar-items.inc.xhtml
</toolbar>
@@ -335,7 +340,6 @@
data-l10n-id="urlbar-go-button"/>
<hbox id="page-action-buttons" context="pageActionContextMenu">
<toolbartabstop/>
-#include ../../components/torconnect/content/torconnect-urlbar.inc.xhtml
<hbox id="contextual-feature-recommendation" role="button" hidden="true">
<hbox id="cfr-label-container">
<label id="cfr-label"/>
@@ -363,9 +367,6 @@
onclick="FullZoom.reset(); FullZoom.resetScalingZoom();"
tooltip="dynamic-shortcut-tooltip"
hidden="true"/>
-
-#include ../../components/onionservices/content/onionlocation-urlbar.inc.xhtml
-
<hbox id="pageActionButton"
class="urlbar-page-action"
role="button"
@@ -383,6 +384,15 @@
class="urlbar-icon"/>
</hbox>
</hbox>
+
+ <hbox id="tor-connect-urlbar-button"
+ role="button"
+ class="tor-urlbar-button"
+ hidden="true">
+ <label id="tor-connect-urlbar-button-label"/>
+ </hbox>
+
+#include ../../components/onionservices/content/onionlocation-urlbar.inc.xhtml
</hbox>
</hbox>
<toolbartabstop/>
=====================================
browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
=====================================
@@ -1,10 +1,10 @@
# Copyright (c) 2020, The Tor Project, Inc.
<hbox id="onion-location-box"
- class="urlbar-icon-wrapper urlbar-page-action"
+ class="tor-urlbar-button"
role="button"
hidden="true"
onclick="OnionLocationParent.buttonClick(event);">
<image id="onion-location-button" role="presentation"/>
- <hbox id="onion-label-container"><label id="onion-label"/></hbox>
+ <label id="onion-label"/>
</hbox>
=====================================
browser/components/onionservices/content/onionlocation.css
=====================================
@@ -1,44 +1,9 @@
/* Copyright (c) 2020, The Tor Project, Inc. */
-#onion-location-box {
- background-color: var(--purple-60);
- -moz-context-properties: fill;
- fill: white;
-}
-
-#onion-location-box:hover {
- background-color: var(--purple-70);
-}
-
-#onion-location-box:active {
- background-color: var(--purple-80);
-}
-
-@media (prefers-color-scheme: dark) {
- #onion-location-box {
- background-color: var(--purple-50);
- }
-
- #onion-location-box:hover {
- background-color: var(--purple-60);
- }
-
- #onion-location-box:active {
- background-color: var(--purple-70);
- }
-}
-
#onion-location-button {
list-style-image: url(chrome://browser/content/onionservices/onionlocation.svg);
- padding-inline-start: 0.5em;
-}
-
-label#onion-label {
- margin: 0;
- padding-block: 0;
- padding-inline: 0.5em;
- color: white;
- font-weight: normal;
+ -moz-context-properties: fill;
+ fill: currentColor;
}
.onionlocation-notification-icon {
=====================================
browser/components/torconnect/content/aboutTorConnect.js
=====================================
@@ -769,26 +769,29 @@ class AboutTorConnect {
}
});
- // Delay the "Enter" activation of the given button from "keydown" to
- // "keyup".
+ // Prevent repeat triggering on keydown when the Enter key is held down.
//
- // Without this, holding down Enter will continue to trigger the button
- // until the user stops holding. This means that a user can accidentally
- // re-trigger a button several times. This is particularly bad when the
- // focus gets moved to a new button, and the new button can get triggered
- // immediately. E.g. when the "Connect" button is triggered it disappears
- // and focus moves to the "Cancel" button.
+ // Without this, holding down Enter will continue to trigger the button's
+ // click event until the user stops holding. This means that a user can
+ // accidentally re-trigger a button several times. And if focus moves to a
+ // new button it can also get triggered, despite not receiving the initial
+ // keydown event.
+ //
+ // E.g. If the user presses down Enter on the "Connect" button it will
+ // trigger and focus will move to the "Cancel" button. This should prevent
+ // the user accidentally triggering the "Cancel" button if they hold down
+ // Enter for a little bit too long.
for (const button of document.body.querySelectorAll("button")) {
button.addEventListener("keydown", event => {
- if (event.key === "Enter") {
+ // If the keydown is a repeating Enter event, ignore it.
+ // NOTE: If firefox uses wayland display (rather than xwayland), the
+ // "repeat" event is always "false" so this will not work.
+ // See bugzilla bug 1784438. Also see bugzilla bug 1594003.
+ // Currently tor browser uses xwayland by default on linux.
+ if (event.key === "Enter" && event.repeat) {
event.preventDefault();
}
});
- button.addEventListener("keyup", event => {
- if (event.key === "Enter") {
- button.click();
- }
- });
}
}
=====================================
browser/components/torconnect/content/onion-slash.svg deleted
=====================================
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="m14.1161 15.6245c-.0821.0001-.1634-.016-.2393-.0474-.0758-.0314-.1447-.0775-.2027-.1356l-12.749984-12.749c-.109266-.11882-.168406-.27526-.165071-.43666.003335-.16139.068886-.31525.182967-.42946.114078-.11421.267868-.17994.429258-.18345.16139-.00352.3179.05544.43685.16457l12.74998 12.75c.1168.1176.1824.2767.1824.4425s-.0656.3249-.1824.4425c-.058.058-.1269.1039-.2028.1352-.0759.0312-.1571.0471-.2392.0468z" fill-opacity="context-fill-opacity" fill="#ff0039" />
- <path d="m 8,0.5000002 c -1.61963,0 -3.1197431,0.5137987 -4.3457031,1.3867188 l 0.84375,0.8417968 0.7792969,0.78125 0.8613281,0.8613282 0.8164062,0.8164062 0.9863281,0.984375 h 0.058594 c 1.00965,0 1.828125,0.818485 1.828125,1.828125 0,0.01968 6.2e-4,0.039074 0,0.058594 L 10.8125,9.0449221 C 10.9334,8.7195921 11,8.3674002 11,8.0000002 c 0,-1.65685 -1.34314,-3 -3,-3 v -1.078125 c 2.25231,0 4.078125,1.825845 4.078125,4.078125 0,0.67051 -0.162519,1.3033281 -0.449219,1.8613281 l 0.861328,0.8613277 C 12.972434,9.9290067 13.25,8.9965102 13.25,8.0000002 c 0,-2.89949 -2.35049,-5.25 -5.25,-5.25 v -1.078125 c 3.4949,0 6.328125,2.833195 6.328125,6.328125 0,1.29533 -0.388841,2.4990528 -1.056641,3.5019528 l 0.841797,0.84375 C 14.986181,11.119703 15.5,9.6196302 15.5,8.0000002 c 0,-4.14214 -3.3579,-7.5 -7.5,-7.5 z m -6.1113281,3.15625 C 1.0154872,4.8821451 0.5,6.3803304 0.5,8.0000002 0.5,12.1421 3.85786,15.5 8,15.5 c 1.6198027,0 3.117896,-0.515441 4.34375,-1.388672 L 11.501953,13.269531 C 10.498787,13.937828 9.295838,14.328125 8,14.328125 V 13.25 c 0.9967306,0 1.9287093,-0.277621 2.722656,-0.759766 L 9.859375,11.626953 C 9.3016226,11.913918 8.6705338,12.078125 8,12.078125 V 11 C 8.3664751,11 8.716425,10.93088 9.0410156,10.810547 6.6639891,8.4300416 4.2743195,6.0418993 1.8886719,3.6562502 Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
-</svg>
=====================================
browser/components/torconnect/content/torBootstrapUrlbar.js deleted
=====================================
@@ -1,95 +0,0 @@
-// Copyright (c) 2021, The Tor Project, Inc.
-
-"use strict";
-
-const { TorConnect, TorConnectTopics, TorConnectState } = ChromeUtils.import(
- "resource:///modules/TorConnect.jsm"
-);
-const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
-
-/* globals browser, gURLBar, Services */
-
-var TorBootstrapUrlbar = {
- selectors: Object.freeze({
- torConnect: {
- box: "hbox#torconnect-box",
- label: "label#torconnect-label",
- },
- }),
-
- elements: null,
-
- updateTorConnectBox(state) {
- switch (state) {
- case TorConnectState.Initial:
- case TorConnectState.Configuring:
- case TorConnectState.AutoConfiguring:
- case TorConnectState.Error:
- case TorConnectState.FatalError: {
- this.elements.torConnectBox.removeAttribute("hidden");
- this.elements.torConnectLabel.textContent =
- TorStrings.torConnect.torNotConnectedConcise;
- this.elements.inputContainer.setAttribute("torconnect", "offline");
- break;
- }
- case TorConnectState.Bootstrapping: {
- this.elements.torConnectBox.removeAttribute("hidden");
- this.elements.torConnectLabel.textContent =
- TorStrings.torConnect.torConnectingConcise;
- this.elements.inputContainer.setAttribute("torconnect", "connecting");
- break;
- }
- case TorConnectState.Bootstrapped: {
- this.elements.torConnectBox.removeAttribute("hidden");
- this.elements.torConnectLabel.textContent =
- TorStrings.torConnect.torConnectedConcise;
- this.elements.inputContainer.setAttribute("torconnect", "connected");
- // hide torconnect box after 5 seconds
- setTimeout(() => {
- this.elements.torConnectBox.setAttribute("hidden", "true");
- }, 5000);
- break;
- }
- case TorConnectState.Disabled: {
- this.elements.torConnectBox.setAttribute("hidden", "true");
- break;
- }
- default:
- break;
- }
- },
-
- observe(aSubject, aTopic, aData) {
- if (aTopic === TorConnectTopics.StateChange) {
- const obj = aSubject?.wrappedJSObject;
- this.updateTorConnectBox(obj?.state);
- }
- },
-
- init() {
- if (TorConnect.shouldShowTorConnect) {
- // browser isn't populated until init
- this.elements = Object.freeze({
- torConnectBox: browser.ownerGlobal.document.querySelector(
- this.selectors.torConnect.box
- ),
- torConnectLabel: browser.ownerGlobal.document.querySelector(
- this.selectors.torConnect.label
- ),
- inputContainer: gURLBar._inputContainer,
- });
- this.elements.torConnectBox.addEventListener("click", () => {
- TorConnect.openTorConnect();
- });
- Services.obs.addObserver(this, TorConnectTopics.StateChange);
- this.observing = true;
- this.updateTorConnectBox(TorConnect.state);
- }
- },
-
- uninit() {
- if (this.observing) {
- Services.obs.removeObserver(this, TorConnectTopics.StateChange);
- }
- },
-};
=====================================
browser/components/torconnect/content/torConnectTitlebarStatus.css
=====================================
@@ -0,0 +1,38 @@
+#tor-connect-titlebar-status:not([hidden]) {
+ display: flex;
+ align-items: center;
+ /* Want same as #private-browsing-indicator-with-label */
+ margin-inline: 7px;
+}
+
+#tor-connect-titlebar-status-label {
+ margin-inline: 6px;
+ white-space: nowrap;
+}
+
+#tor-connect-titlebar-status-icon {
+ -moz-context-properties: fill;
+ fill: currentColor;
+ width: 16px;
+ height: 16px;
+}
+
+#tor-connect-titlebar-status-icon.tor-connect-status-connected {
+ fill: var(--purple-60);
+}
+
+@media (prefers-color-scheme: dark) {
+ #tor-connect-titlebar-status-icon.tor-connect-status-connected {
+ fill: var(--purple-30);
+ }
+}
+
+#tor-connect-titlebar-status-icon.tor-connect-status-potentially-blocked {
+ fill: #c50042;
+}
+
+@media (prefers-color-scheme: dark) {
+ #tor-connect-titlebar-status-icon.tor-connect-status-potentially-blocked {
+ fill: #ff9aa2;
+ }
+}
=====================================
browser/components/torconnect/content/torConnectTitlebarStatus.js
=====================================
@@ -0,0 +1,115 @@
+/* eslint-env mozilla/browser-window */
+
+/**
+ * A TorConnect status shown in the application title bar.
+ */
+var gTorConnectTitlebarStatus = {
+ /**
+ * The status element in the title bar.
+ *
+ * @type {Element}
+ */
+ node: null,
+ /**
+ * The status label.
+ *
+ * @type {Element}
+ */
+ label: null,
+ /**
+ * The status icon.
+ *
+ * @type {Element}
+ */
+ icon: null,
+
+ /**
+ * Initialize the component.
+ */
+ init() {
+ const { TorStrings } = ChromeUtils.import(
+ "resource:///modules/TorStrings.jsm"
+ );
+
+ this._strings = TorStrings.torConnect;
+
+ this.node = document.getElementById("tor-connect-titlebar-status");
+ this.icon = document.getElementById("tor-connect-titlebar-status-icon");
+ this.label = document.getElementById("tor-connect-titlebar-status-label");
+ // The title also acts as an accessible name for the role="status".
+ this.node.setAttribute("title", this._strings.titlebarStatusName);
+
+ this._observeTopic = TorConnectTopics.StateChange;
+ this._stateListener = {
+ observe: (subject, topic, data) => {
+ if (topic !== this._observeTopic) {
+ return;
+ }
+ this._torConnectStateChanged();
+ },
+ };
+ Services.obs.addObserver(this._stateListener, this._observeTopic);
+
+ this._torConnectStateChanged();
+ },
+
+ /**
+ * De-initialize the component.
+ */
+ deinit() {
+ Services.obs.removeObserver(this._stateListener, this._observeTopic);
+ },
+
+ /**
+ * Callback for when the TorConnect state changes.
+ */
+ _torConnectStateChanged() {
+ let textId;
+ let connected = false;
+ let potentiallyBlocked = false;
+ switch (TorConnect.state) {
+ case TorConnectState.Disabled:
+ // Hide immediately.
+ this.node.hidden = true;
+ return;
+ case TorConnectState.Bootstrapped:
+ this._startHiding();
+ textId = "titlebarStatusConnected";
+ connected = true;
+ break;
+ case TorConnectState.Bootstrapping:
+ case TorConnectState.AutoBootstrapping:
+ textId = "titlebarStatusConnecting";
+ break;
+ default:
+ if (TorConnect.potentiallyBlocked) {
+ textId = "titlebarStatusPotentiallyBlocked";
+ potentiallyBlocked = true;
+ } else {
+ textId = "titlebarStatusNotConnected";
+ }
+ break;
+ }
+ this.label.textContent = this._strings[textId];
+ this.icon.setAttribute(
+ "src",
+ connected
+ ? "chrome://browser/content/torconnect/onion.svg"
+ : "chrome://browser/content/torconnect/onion-slash-fillable.svg"
+ );
+ this.icon.classList.toggle("tor-connect-status-connected", connected);
+ this.icon.classList.toggle(
+ "tor-connect-status-potentially-blocked",
+ potentiallyBlocked
+ );
+ },
+
+ /**
+ * Mark the component to be hidden after some delay.
+ */
+ _startHiding() {
+ setTimeout(() => {
+ this.node.hidden = true;
+ }, 5000);
+ },
+};
=====================================
browser/components/torconnect/content/torConnectUrlbarButton.js
=====================================
@@ -0,0 +1,155 @@
+/* eslint-env mozilla/browser-window */
+
+/**
+ * A "Connect" button shown in the urlbar when not connected to tor and in tabs
+ * other than about:torconnect.
+ */
+var gTorConnectUrlbarButton = {
+ /**
+ * The urlbar button node.
+ *
+ * @type {Element}
+ */
+ button: null,
+ /**
+ * Whether we are active.
+ *
+ * @type {boolean}
+ */
+ _isActive: false,
+ /**
+ * Whether we are in the "about:torconnect" tab.
+ *
+ * @type {boolean}
+ */
+ // We init to "true" so that the button can only appear after the first page
+ // load.
+ _inAboutTorConnectTab: true,
+
+ /**
+ * Initialize the button.
+ */
+ init() {
+ if (this._isActive) {
+ return;
+ }
+ this._isActive = true;
+
+ const { TorStrings } = ChromeUtils.import(
+ "resource:///modules/TorStrings.jsm"
+ );
+
+ this.button = document.getElementById("tor-connect-urlbar-button");
+ document.getElementById("tor-connect-urlbar-button-label").value =
+ TorStrings.torConnect.torConnectButton;
+ this.button.addEventListener("click", event => {
+ if (event.button !== 0) {
+ return;
+ }
+ this.connect();
+ });
+ this.button.addEventListener("keydown", event => {
+ if (event.key !== "Enter" && event.key !== " ") {
+ return;
+ }
+ this.connect();
+ });
+
+ this._observeTopic = TorConnectTopics.StateChange;
+ this._stateListener = {
+ observe: (subject, topic, data) => {
+ if (topic !== this._observeTopic) {
+ return;
+ }
+ this._torConnectStateChanged();
+ },
+ };
+ Services.obs.addObserver(this._stateListener, this._observeTopic);
+
+ this._locationListener = {
+ onLocationChange: (webProgress, request, locationURI, flags) => {
+ if (
+ webProgress.isTopLevel &&
+ !(flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT)
+ ) {
+ this._inAboutTorConnectTab = gBrowser.selectedBrowser.currentURI?.spec.startsWith(
+ "about:torconnect"
+ );
+ this._updateButtonVisibility();
+ }
+ },
+ };
+ // Notified of new locations for the currently selected browser (tab) *and*
+ // switching selected browser.
+ gBrowser.addProgressListener(this._locationListener);
+
+ this._torConnectStateChanged();
+ },
+
+ /**
+ * Deactivate and de-initialize the button.
+ */
+ deinit() {
+ if (!this._isActive) {
+ return;
+ }
+ this._isActive = false;
+
+ Services.obs.removeObserver(this._stateListener, this._observeTopic);
+ gBrowser.removeProgressListener(this._locationListener);
+ this._updateButtonVisibility();
+ },
+
+ /**
+ * Begin the tor connection bootstrapping process.
+ */
+ connect() {
+ TorConnect.openTorConnect({ beginBootstrap: true });
+ },
+
+ /**
+ * Callback for when the TorConnect state changes.
+ */
+ _torConnectStateChanged() {
+ if (
+ TorConnect.state === TorConnectState.Bootstrapped ||
+ TorConnect.state === TorConnectState.Disabled
+ ) {
+ this.deinit();
+ return;
+ }
+ this._updateButtonVisibility();
+ },
+
+ /**
+ * Callback when the TorConnect state, current browser location, or activation
+ * state changes.
+ */
+ _updateButtonVisibility() {
+ if (!this.button) {
+ return;
+ }
+ // NOTE: We do not manage focus when hiding the button. We only expect to
+ // move from "not hidden" to "hidden" when:
+ // + switching tabs to "about:torconnect", or
+ // + starting bootstrapping.
+ //
+ // When switching tabs, the normal tab switching logic will eventually move
+ // focus to the new tab or url bar, so whilst the focus may be lost
+ // temporarily when we hide the button, it will be re-established quickly on
+ // tab switch.
+ //
+ // And we don't expect bootstrapping to start whilst outside of the
+ // "about:torconnect", and the automatic bootstrapping should only trigger
+ // at the initial start.
+ this.button.hidden =
+ !this._isActive ||
+ this._inAboutTorConnectTab ||
+ !TorConnect.enabled ||
+ !TorConnect.canBeginBootstrap;
+ this.button.classList.toggle(
+ "tor-urlbar-button-plain",
+ TorConnect.potentiallyBlocked
+ );
+ },
+};
=====================================
browser/components/torconnect/content/torconnect-urlbar.css deleted
=====================================
@@ -1,37 +0,0 @@
-/*
- ensure our torconnect button is always visible (same rule as for the bookmark button)
-*/
-label#torconnect-label {
- margin: 0;
- opacity: 0.6;
- padding: 0 0.5em;
-}
-
-hbox.urlbar-page-action#torconnect-box {
- display: -moz-inline-box!important;
-}
-
-/* hide when hidden attribute is set */
-hbox.urlbar-page-action#torconnect-box[hidden="true"],
-/* hide when user is typing in URL bar */
-#urlbar[usertyping] > #urlbar-input-container > #page-action-buttons > #torconnect-box {
- display: none!important;
-}
-
-/* hide urlbar's placeholder text when not connectd to tor */
-hbox#urlbar-input-container[torconnect="offline"] input#urlbar-input::placeholder,
-hbox#urlbar-input-container[torconnect="connecting"] input#urlbar-input::placeholder {
- opacity: 0;
-}
-
-/* hide search suggestions when not connected to tor */
-hbox#urlbar-input-container[torconnect="offline"] + vbox.urlbarView,
-hbox#urlbar-input-container[torconnect="connecting"] + vbox.urlbarView {
- display: none!important;
-}
-
-/* hide search icon when we are not connected to tor */
-hbox#urlbar-input-container[torconnect="offline"] > #identity-box[pageproxystate="invalid"] > #identity-icon,
-hbox#urlbar-input-container[torconnect="connecting"] > #identity-box[pageproxystate="invalid"] > #identity-icon {
- display: none!important;
-}
=====================================
browser/components/torconnect/content/torconnect-urlbar.inc.xhtml deleted
=====================================
@@ -1,11 +0,0 @@
-# Copyright (c) 2021, The Tor Project, Inc.
-
-<hbox id="torconnect-box"
- class="urlbar-icon-wrapper urlbar-page-action"
- role="status"
- align="center"
- hidden="true">
- <hbox id="torconnect-container">
- <label id="torconnect-label"/>
- </hbox>
-</hbox>
\ No newline at end of file
=====================================
browser/components/torconnect/jar.mn
=====================================
@@ -1,5 +1,7 @@
browser.jar:
- content/browser/torconnect/torBootstrapUrlbar.js (content/torBootstrapUrlbar.js)
+ content/browser/torconnect/torConnectUrlbarButton.js (content/torConnectUrlbarButton.js)
+ content/browser/torconnect/torConnectTitlebarStatus.js (content/torConnectTitlebarStatus.js)
+ content/browser/torconnect/torConnectTitlebarStatus.css (content/torConnectTitlebarStatus.css)
content/browser/torconnect/aboutTorConnect.css (content/aboutTorConnect.css)
* content/browser/torconnect/aboutTorConnect.xhtml (content/aboutTorConnect.xhtml)
content/browser/torconnect/aboutTorConnect.js (content/aboutTorConnect.js)
@@ -8,6 +10,4 @@ browser.jar:
content/browser/torconnect/connection-failure.svg (content/connection-failure.svg)
content/browser/torconnect/connection-location.svg (content/connection-location.svg)
content/browser/torconnect/onion.svg (content/onion.svg)
- content/browser/torconnect/onion-slash.svg (content/onion-slash.svg)
content/browser/torconnect/onion-slash-fillable.svg (content/onion-slash-fillable.svg)
- skin/classic/browser/torconnect-urlbar.css (content/torconnect-urlbar.css)
=====================================
browser/components/torpreferences/content/torPreferences.css
=====================================
@@ -58,7 +58,7 @@ html:dir(rtl) input[type="checkbox"].toggle-button::before {
#torPreferences-connectMessageBox.error #torPreferences-connectMessageBox-icon
{
- mask: url("chrome://browser/skin/onion-slash.svg");
+ mask: url("chrome://browser/content/torconnect/onion-slash-fillable.svg");
background-color: white;
}
=====================================
browser/modules/TorConnect.jsm
=====================================
@@ -99,7 +99,7 @@ const TorConnectState = Object.freeze({
└─┼─────▶ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ ▲ │
- │ │ beginAutoBootstrap() │ cancelAutoBootstrap() │
+ │ │ beginAutoBootstrap() │ cancelBootstrap() │
│ ▼ │ │
│ ┌───────────────────────┐ │ │
└────── │ AutoBootstrapping │ ─┘ │
@@ -464,6 +464,7 @@ const TorConnect = (() => {
const tbr = new TorBootstrapRequest();
const internetTest = new InternetTest();
+ let cancelled = false;
let bootstrapError = "";
let bootstrapErrorDetails = "";
@@ -506,6 +507,7 @@ const TorConnect = (() => {
this.on_transition = async nextState => {
if (nextState === TorConnectState.Configuring) {
// stop bootstrap process if user cancelled
+ cancelled = true;
internetTest.cancel();
await tbr.cancel();
}
@@ -520,6 +522,19 @@ const TorConnect = (() => {
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.
+ console.log(
+ `TorConnect: 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;
@@ -1023,11 +1038,6 @@ const TorConnect = (() => {
this._changeState(TorConnectState.AutoBootstrapping, countryCode);
},
- cancelAutoBootstrap() {
- console.log("TorConnect: cancelAutoBootstrap()");
- this._changeState(TorConnectState.Configuring);
- },
-
/*
Further external commands and helper methods
*/
=====================================
browser/modules/TorStrings.jsm
=====================================
@@ -207,10 +207,6 @@ const Loader = {
torConnecting: "Establishing a Connection",
- torNotConnectedConcise: "Not Connected",
-
- torConnectingConcise: "Connecting…",
-
tryingAgain: "Trying again…",
noInternet: "Tor Browser couldn’t reach the Internet",
@@ -250,8 +246,6 @@ const Loader = {
torConnected: "Connected to the Tor network",
- torConnectedConcise: "Connected",
-
tryAgain: "Try Again",
// tor connect strings for message box in about:preferences#connection
@@ -275,6 +269,13 @@ const Loader = {
autoBootstrappingAllFailed: "None of the configurations we tried worked",
cannotDetermineCountry: "Unable to determine user country",
noSettingsForCountry: "No settings available for your location",
+
+ // Titlebar status.
+ titlebarStatusName: "Tor connection",
+ titlebarStatusNotConnected: "Not connected",
+ titlebarStatusConnecting: "Connecting…",
+ titlebarStatusPotentiallyBlocked: "Potentially blocked",
+ titlebarStatusConnected: "Connected",
};
const tsb = new TorPropertyStringBundle(
=====================================
browser/themes/shared/browser-shared.css
=====================================
@@ -23,8 +23,8 @@
@import url("chrome://browser/skin/UITour.css");
@import url("chrome://browser/skin/browser-colors.css");
@import url("chrome://branding/content/tor-styles.css");
-@import url("chrome://browser/skin/torconnect-urlbar.css");
@import url("chrome://browser/skin/onionlocation.css");
+@import url("chrome://browser/skin/tor-urlbar-button.css");
@namespace html url("http://www.w3.org/1999/xhtml");
=====================================
browser/themes/shared/identity-block/onion-slash.svg
=====================================
@@ -1,5 +1,16 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="m14.1161 15.6245c-.0821.0001-.1634-.016-.2393-.0474-.0758-.0314-.1447-.0775-.2027-.1356l-12.749984-12.749c-.109266-.11882-.168406-.27526-.165071-.43666.003335-.16139.068886-.31525.182967-.42946.114078-.11421.267868-.17994.429258-.18345.16139-.00352.3179.05544.43685.16457l12.74998 12.75c.1168.1176.1824.2767.1824.4425s-.0656.3249-.1824.4425c-.058.058-.1269.1039-.2028.1352-.0759.0312-.1571.0471-.2392.0468z" fill-opacity="context-fill-opacity" fill="#ff0039" />
- <path d="m 8,0.5000002 c -1.61963,0 -3.1197431,0.5137987 -4.3457031,1.3867188 l 0.84375,0.8417968 0.7792969,0.78125 0.8613281,0.8613282 0.8164062,0.8164062 0.9863281,0.984375 h 0.058594 c 1.00965,0 1.828125,0.818485 1.828125,1.828125 0,0.01968 6.2e-4,0.039074 0,0.058594 L 10.8125,9.0449221 C 10.9334,8.7195921 11,8.3674002 11,8.0000002 c 0,-1.65685 -1.34314,-3 -3,-3 v -1.078125 c 2.25231,0 4.078125,1.825845 4.078125,4.078125 0,0.67051 -0.162519,1.3033281 -0.449219,1.8613281 l 0.861328,0.8613277 C 12.972434,9.9290067 13.25,8.9965102 13.25,8.0000002 c 0,-2.89949 -2.35049,-5.25 -5.25,-5.25 v -1.078125 c 3.4949,0 6.328125,2.833195 6.328125,6.328125 0,1.29533 -0.388841,2.4990528 -1.056641,3.5019528 l 0.841797,0.84375 C 14.986181,11.119703 15.5,9.6196302 15.5,8.0000002 c 0,-4.14214 -3.3579,-7.5 -7.5,-7.5 z m -6.1113281,3.15625 C 1.0154872,4.8821451 0.5,6.3803304 0.5,8.0000002 0.5,12.1421 3.85786,15.5 8,15.5 c 1.6198027,0 3.117896,-0.515441 4.34375,-1.388672 L 11.501953,13.269531 C 10.498787,13.937828 9.295838,14.328125 8,14.328125 V 13.25 c 0.9967306,0 1.9287093,-0.277621 2.722656,-0.759766 L 9.859375,11.626953 C 9.3016226,11.913918 8.6705338,12.078125 8,12.078125 V 11 C 8.3664751,11 8.716425,10.93088 9.0410156,10.810547 6.6639891,8.4300416 4.2743195,6.0418993 1.8886719,3.6562502 Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_1827_6565)">
+<path d="M6.62435 8.54824C6.23983 8.91273 6 9.42836 6 10C6 11.1046 6.89543 12 8 12C8.57164 12 9.08727 11.7602 9.45176 11.3757L8.74414 10.668C8.56107 10.8718 8.29551 11 8 11C7.44772 11 7 10.5523 7 10C7 9.70449 7.12818 9.43893 7.33197 9.25586L6.62435 8.54824Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M9.99442 10.1505C9.99812 10.1008 10 10.0506 10 10C10 8.89543 9.10457 8 8 8C7.94936 8 7.89915 8.00188 7.84946 8.00558L9.99442 10.1505Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M5.20988 7.13377C4.46354 7.86041 4 8.87607 4 10C4 12.2091 5.79086 14 8 14C9.12393 14 10.1396 13.5365 10.8662 12.7901L10.159 12.0829C9.61343 12.6483 8.84778 13 8 13C6.34315 13 5 11.6569 5 10C5 9.15222 5.35166 8.38657 5.91707 7.84097L5.20988 7.13377Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M10.8331 10.9892C10.9412 10.6795 11 10.3466 11 10C11 8.34315 9.65685 7 8 7C7.65339 7 7.32052 7.05878 7.01079 7.16692L6.24731 6.40343C6.77658 6.14502 7.37135 6 8 6C10.2091 6 12 7.79086 12 10C12 10.6286 11.855 11.2234 11.5966 11.7527L10.8331 10.9892Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M14 10C14 8.223 13.2275 6.62643 12 5.52779V4C12 1.79086 10.2091 0 8 0C5.79086 0 4 1.79086 4 4V4.15613L5.50811 5.66423C6.2417 5.2417 7.09263 5 8 5C10.7614 5 13 7.23858 13 10C13 10.9074 12.7583 11.7583 12.3358 12.4919L13.0637 13.2199C13.6565 12.2896 14 11.1849 14 10ZM8 4C7.00883 4 6.0738 4.24033 5.25 4.66591V4C5.25 2.48122 6.48122 1.25 8 1.25C9.51878 1.25 10.75 2.48122 10.75 4V4.66591C9.9262 4.24033 8.99117 4 8 4Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M12.2805 14.2044C11.1919 15.3126 9.67621 16 8 16C4.68629 16 2 13.3137 2 10C2 8.32379 2.68736 6.80812 3.79558 5.71948L4.50272 6.42662C3.57545 7.33427 3 8.59993 3 10C3 12.7614 5.23858 15 8 15C9.40007 15 10.6657 14.4246 11.5734 13.4973L12.2805 14.2044Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.25801 3.93806C1.50209 3.69398 1.89782 3.69398 2.14189 3.93806L13.1419 14.9381C13.386 15.1821 13.386 15.5779 13.1419 15.8219C12.8978 16.066 12.5021 16.066 12.258 15.8219L1.25801 4.82194C1.01393 4.57787 1.01393 4.18214 1.25801 3.93806Z" fill="#F90D3F"/>
+</g>
+<defs>
+<clipPath id="clip0_1827_6565">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
</svg>
=====================================
browser/themes/shared/identity-block/onion-warning.svg
=====================================
@@ -1,4 +1,13 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="M 7.5,0.5 C 3.35786,0.5 0,3.85786 0,8 c 0,3.7093 2.6930488,6.789278 6.2304688,7.392578 -0.032181,-0.0637 -0.060149,-0.128686 -0.085938,-0.195312 -0.00862,-0.02227 -0.01751,-0.04385 -0.025391,-0.06641 -0.023385,-0.0669 -0.043878,-0.135932 -0.060547,-0.205078 -0.00186,-0.0077 -0.00213,-0.01571 -0.00391,-0.02344 -0.017615,-0.07685 -0.032109,-0.153488 -0.041016,-0.232422 -7.27e-5,-6.44e-4 7.2e-5,-0.0013 0,-0.002 -0.0087,-0.07777 -0.011896,-0.157155 -0.011719,-0.236328 7.71e-5,-0.0337 2.127e-4,-0.06769 0.00195,-0.101563 3.337e-4,-0.0065 -3.955e-4,-0.01303 0,-0.01953 0.00318,-0.05219 0.0084,-0.10381 0.015625,-0.15625 0.03623,-0.263929 0.1235201,-0.529812 0.2714844,-0.787109 L 6.421875,13.138672 C 7.1130865,11.933878 7.8482649,10.654869 8.4882812,9.5390625 8.2033713,9.7224325 7.864,9.828125 7.5,9.828125 v -3.65625 c 1.00965,0 1.828125,0.818485 1.828125,1.828125 0,0.02558 -9.131e-4,0.050842 -0.00195,0.076172 L 9.6015625,7.5957031 C 9.7779825,7.2883331 10.012797,7.0451975 10.279297,6.8671875 9.8324169,5.7717775 8.75611,5 7.5,5 V 3.921875 c 1.72627,0 3.201675,1.0728106 3.796875,2.5878906 0.4511,-0.0416 0.914353,0.052393 1.314453,0.2832032 C 12.066128,4.4750988 9.98426,2.75 7.5,2.75 V 1.671875 c 3.4949,0 6.328125,2.833195 6.328125,6.328125 0,0.10641 -0.0026,0.2112863 -0.0078,0.3164062 L 14.74806,9.9355469 C 14.912447,9.3182669 15,8.66904 15,8 15,3.85786 11.6421,0.5 7.5,0.5 Z m 4,7 c -0.40375,0 -0.808156,0.19825 -1.035156,0.59375 l -3.3105471,5.771484 c -0.446,0.775 0.1271562,1.734375 1.0351562,1.734375 H 14.8125 c 0.907,0 1.478203,-0.959375 1.033203,-1.734375 L 12.535156,8.09375 C 12.308156,7.69825 11.90375,7.5 11.5,7.5 Z m 0,2.1015625 c 0.1658,0 0.324206,0.066384 0.441406,0.1835937 0.1172,0.1172101 0.183594,0.2757058 0.183594,0.4414058 v 1.748047 c 0,0.1658 -0.06639,0.324207 -0.183594,0.441407 -0.1172,0.1172 -0.275606,0.183593 -0.441406,0.183593 -0.1657,0 -0.324206,-0.06639 -0.441406,-0.183593 -0.1172,-0.1172 -0.183594,-0.275607 -0.183594,-0.441407 v -1.748047 c 0,-0.165699 0.06639,-0.3241957 0.183594,-0.4414058 C 11.175794,9.6679462 11.3343,9.6015625 11.5,9.6015625 Z m 0,3.7480465 c 0.1658,0 0.324206,0.06639 0.441406,0.183594 0.1172,0.1172 0.183594,0.275706 0.183594,0.441406 0,0.1658 -0.06639,0.32616 -0.183594,0.44336 -0.1172,0.1172 -0.275606,0.18164 -0.441406,0.18164 -0.1657,0 -0.324206,-0.06444 -0.441406,-0.18164 -0.1172,-0.1172 -0.183594,-0.27756 -0.183594,-0.44336 0,-0.1657 0.06639,-0.324206 0.183594,-0.441406 0.1172,-0.1172 0.275706,-0.183594 0.441406,-0.183594 z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_1827_6566)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M7.92788 10.5342L7.42044 11.408C7.05803 11.7736 6.55546 12 6 12C4.89543 12 4 11.1046 4 10C4 8.89543 4.89543 8 6 8C7.10457 8 8 8.89543 8 10C8 10.185 7.97488 10.3641 7.92788 10.5342ZM7 10C7 10.5523 6.55228 11 6 11C5.44772 11 5 10.5523 5 10C5 9.44772 5.44772 9 6 9C6.55228 9 7 9.44772 7 10Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M6.52221 12.9547C6.35262 12.9845 6.17812 13 6 13C4.34315 13 3 11.6569 3 10C3 8.34315 4.34315 7 6 7C7.30202 7 8.41032 7.82945 8.8253 8.98878L9.35089 8.08372C9.37772 8.03755 9.40587 7.99285 9.43523 7.94962C8.73673 6.78186 7.45967 6 6 6C3.79086 6 2 7.79086 2 10C2 12.1857 3.75302 13.9619 5.92975 13.9994C5.96208 13.9274 5.99884 13.8558 6.0402 13.7847L6.52221 12.9547Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.1978 7.00088C10.8782 6.44807 10.4728 5.95098 10 5.52779V4C10 1.79086 8.20914 0 6 0C3.79086 0 2 1.79086 2 4V5.52779C0.772501 6.62643 0 8.223 0 10C0 13.3137 2.68629 16 6 16C6.03024 16 6.06043 15.9998 6.09057 15.9993C5.89561 15.7007 5.77424 15.3557 5.749 14.9938C3.10419 14.8631 1 12.6773 1 10C1 7.23858 3.23858 5 6 5C7.75288 5 9.29509 5.90201 10.1878 7.26719C10.5002 7.0977 10.8482 7.00893 11.1978 7.00088ZM6 4C5.00883 4 4.0738 4.24033 3.25 4.66591V4C3.25 2.48122 4.48122 1.25 6 1.25C7.51878 1.25 8.75 2.48122 8.75 4V4.66591C7.9262 4.24033 6.99117 4 6 4Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M15.5956 14.2875L12.2846 8.58591C11.8306 7.8047 10.6696 7.8047 10.2156 8.58591L6.90465 14.2875C6.45865 15.0529 7.03065 16 7.93865 16H14.5616C15.4686 16 16.0406 15.0529 15.5956 14.2875ZM11.8746 12.4189C11.8746 12.5826 11.8088 12.7396 11.6916 12.8553C11.5744 12.9711 11.4154 13.0361 11.2496 13.0361C11.0839 13.0361 10.9249 12.9711 10.8077 12.8553C10.6905 12.7396 10.6246 12.5826 10.6246 12.4189V10.6935C10.6246 10.5298 10.6905 10.3728 10.8077 10.257C10.9249 10.1413 11.0839 10.0762 11.2496 10.0762C11.4154 10.0762 11.5744 10.1413 11.6916 10.257C11.8088 10.3728 11.8746 10.5298 11.8746 10.6935V12.4189ZM11.2496 15.0124C11.0839 15.0124 10.9249 14.9473 10.8077 14.8316C10.6905 14.7158 10.6246 14.5588 10.6246 14.3951C10.6246 14.2314 10.6905 14.0744 10.8077 13.9586C10.9249 13.8429 11.0839 13.7778 11.2496 13.7778C11.4154 13.7778 11.5744 13.8429 11.6916 13.9586C11.8088 14.0744 11.8746 14.2314 11.8746 14.3951C11.8746 14.5588 11.8088 14.7158 11.6916 14.8316C11.5744 14.9473 11.4154 15.0124 11.2496 15.0124Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+</g>
+<defs>
+<clipPath id="clip0_1827_6566">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
</svg>
=====================================
browser/themes/shared/identity-block/onion.svg
=====================================
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="M 8 0.5 C 3.85786 0.5 0.5 3.85786 0.5 8 C 0.5 12.1421 3.85786 15.5 8 15.5 C 12.1421 15.5 15.5 12.1421 15.5 8 C 15.5 3.85786 12.1421 0.5 8 0.5 z M 8 1.671875 C 11.4949 1.671875 14.328125 4.50507 14.328125 8 C 14.328125 11.4949 11.4949 14.328125 8 14.328125 L 8 13.25 C 10.89951 13.25 13.25 10.89951 13.25 8 C 13.25 5.10051 10.89951 2.75 8 2.75 L 8 1.671875 z M 8 3.921875 C 10.25231 3.921875 12.078125 5.74772 12.078125 8 C 12.078125 10.25231 10.25231 12.078125 8 12.078125 L 8 11 C 9.65686 11 11 9.65686 11 8 C 11 6.34315 9.65686 5 8 5 L 8 3.921875 z M 8 6.171875 C 9.00965 6.171875 9.828125 6.99036 9.828125 8 C 9.828125 9.00965 9.00965 9.828125 8 9.828125 L 8 6.171875 z " clip-rule="evenodd" fill-rule="evenodd" fill="context-fill" fill-opacity="context-fill-opacity"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 13C9.65685 13 11 11.6569 11 10C11 8.34315 9.65685 7 8 7C6.34315 7 5 8.34315 5 10C5 11.6569 6.34315 13 8 13ZM8 14C10.2091 14 12 12.2091 12 10C12 7.79086 10.2091 6 8 6C5.79086 6 4 7.79086 4 10C4 12.2091 5.79086 14 8 14Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 11C8.55228 11 9 10.5523 9 10C9 9.44772 8.55228 9 8 9C7.44772 9 7 9.44772 7 10C7 10.5523 7.44772 11 8 11ZM8 12C9.10457 12 10 11.1046 10 10C10 8.89543 9.10457 8 8 8C6.89543 8 6 8.89543 6 10C6 11.1046 6.89543 12 8 12Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.52779C13.2275 6.62643 14 8.223 14 10C14 13.3137 11.3137 16 8 16C4.68629 16 2 13.3137 2 10C2 8.223 2.7725 6.62643 4 5.52779V4C4 1.79086 5.79086 0 8 0C10.2091 0 12 1.79086 12 4V5.52779ZM5.25 4.66591C6.0738 4.24033 7.00883 4 8 4C8.99117 4 9.9262 4.24033 10.75 4.66591V4C10.75 2.48122 9.51878 1.25 8 1.25C6.48122 1.25 5.25 2.48122 5.25 4V4.66591ZM13 10C13 12.7614 10.7614 15 8 15C5.23858 15 3 12.7614 3 10C3 7.23858 5.23858 5 8 5C10.7614 5 13 7.23858 13 10Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
</svg>
=====================================
browser/themes/shared/jar.inc.mn
=====================================
@@ -32,6 +32,7 @@
skin/classic/browser/tabs.css (../shared/tabs.css)
skin/classic/browser/toolbarbuttons.css (../shared/toolbarbuttons.css)
skin/classic/browser/toolbarbutton-icons.css (../shared/toolbarbutton-icons.css)
+ skin/classic/browser/tor-urlbar-button.css (../shared/tor-urlbar-button.css)
skin/classic/browser/urlbar-dynamic-results.css (../shared/urlbar-dynamic-results.css)
skin/classic/browser/urlbar-searchbar.css (../shared/urlbar-searchbar.css)
skin/classic/browser/urlbarView.css (../shared/urlbarView.css)
=====================================
browser/themes/shared/tor-urlbar-button.css
=====================================
@@ -0,0 +1,107 @@
+.tor-urlbar-button:not([hidden]) {
+ --tor-urlbar-button-background-color: var(--purple-60);
+ background-color: var(--tor-urlbar-button-background-color);
+ /* FIXME: Use different colors for light and dark theme, rather than "white".
+ * See tor-browser#41787 */
+ color: white;
+ display: flex;
+ align-items: center;
+ gap: 0.5em;
+ border-radius: var(--urlbar-icon-border-radius);
+ --tor-urlbar-button-inline-padding: 8px;
+ padding-inline: var(--tor-urlbar-button-inline-padding);
+ margin: 0;
+}
+
+.tor-urlbar-button > * {
+ flex: 0 0 auto;
+ margin: 0;
+}
+
+.tor-urlbar-button:focus-visible {
+ /* This button lies within the urlbar, so if the outline extends beyond the
+ * button's boundary, it will be clipped by the urlbar.
+ * Most button's in the urlbar get around this by using --focus-outline-inset,
+ * but our button has a purple background, which does not contrast well with
+ * the focus outline.
+ * Therefore, we use an offset outline rather than an inset outline, and
+ * compensate by shrinking the button's width and height so that the outline
+ * fits within the non-focused button boundary. Essentially, this has a
+ * similar effect to using an inset outline that matches the color of the
+ * urlbar background, but we keep the rounded corners. */
+ outline: var(--focus-outline);
+ outline-offset: var(--focus-outline-offset);
+ /* Use the background color for the outline, same as in-content buttons. */
+ outline-color: var(--tor-urlbar-button-background-color);
+ /* Calculate the difference between the button's border area and the outline
+ * area. */
+ --tor-urlbar-focus-outline-difference: calc(
+ var(--focus-outline-offset)
+ + var(--focus-outline-width)
+ );
+ /* For the inline direction, we shrink the padding by the difference, and
+ * increase the margin by the same amount so that the button text remains in
+ * the same position.
+ * For the block direction, the height of the button is flexibly sized with
+ * the urlbar height, so we should only need to increase the margin. */
+ padding-inline: calc(
+ var(--tor-urlbar-button-inline-padding)
+ - var(--tor-urlbar-focus-outline-difference)
+ );
+ margin: var(--tor-urlbar-focus-outline-difference);
+}
+
+.tor-urlbar-button:focus-visible > * {
+ /* Negate the margin that would be added on focus to ensure the button does
+ * not grow in height.
+ * Ideally, this should not change anything noticeable, otherwise the text
+ * could be clipped when focused. */
+ margin-block: calc(-1 * var(--tor-urlbar-focus-outline-difference));
+}
+
+#urlbar[usertyping] .tor-urlbar-button {
+ /* Hide whilst the user is typing in the url bar. */
+ display: none;
+}
+
+.tor-urlbar-button:hover {
+ --tor-urlbar-button-background-color: var(--purple-70);
+}
+
+.tor-urlbar-button:hover:active {
+ --tor-urlbar-button-background-color: var(--purple-80);
+}
+
+@media (prefers-color-scheme: dark) {
+ .tor-urlbar-button {
+ --tor-urlbar-button-background-color: var(--purple-50);
+ }
+
+ .tor-urlbar-button:hover {
+ --tor-urlbar-button-background-color: var(--purple-60);
+ }
+
+ .tor-urlbar-button:hover:active {
+ --tor-urlbar-button-background-color: var(--purple-70);
+ }
+}
+
+/* Make the button look plain like the identity #urlbar-label-box. */
+.tor-urlbar-button.tor-urlbar-button-plain {
+ --tor-urlbar-button-background-color: var(--urlbar-box-bgcolor);
+ color: var(--urlbar-box-text-color);
+}
+
+.tor-urlbar-button.tor-urlbar-button-plain:focus-visible {
+ outline-color: var(--focus-outline-color);
+}
+
+.tor-urlbar-button.tor-urlbar-button-plain:hover {
+ --tor-urlbar-button-background-color: var(--urlbar-box-hover-bgcolor);
+ color: var(--urlbar-box-hover-text-color);
+}
+
+.tor-urlbar-button.tor-urlbar-button-plain:hover:active {
+ --tor-urlbar-button-background-color: var(--urlbar-box-active-bgcolor);
+ color: var(--urlbar-box-hover-text-color);
+}
=====================================
devtools/shared/webconsole/network-helper.js
=====================================
@@ -600,6 +600,9 @@ var NetworkHelper = {
// The request did not contain any security info.
if (!securityInfo) {
+ if (httpActivity.hostname && httpActivity.hostname.endsWith(".onion")) {
+ info.state = "secure";
+ }
return info;
}
@@ -651,7 +654,11 @@ var NetworkHelper = {
// schemes other than https and wss are subject to
// downgrade/etc at the scheme level and should always be
// considered insecure
- info.state = "insecure";
+ if (httpActivity.hostname && httpActivity.hostname.endsWith(".onion")) {
+ info.state = "secure";
+ } else {
+ info.state = "insecure";
+ }
} else if (state & wpl.STATE_IS_SECURE) {
// The connection is secure if the scheme is sufficient
info.state = "secure";
=====================================
dom/html/HTMLFormElement.cpp
=====================================
@@ -893,7 +893,10 @@ nsresult HTMLFormElement::DoSecureToInsecureSubmitCheck(nsIURI* aActionURL,
formIsHTTPS = OwnerDoc()->GetDocumentURI()->SchemeIs("https");
}
if (!formIsHTTPS) {
- return NS_OK;
+ bool formIsOnion = nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(OwnerDoc()->GetDocumentURI());
+ if (!formIsOnion) {
+ return NS_OK;
+ }
}
if (nsMixedContentBlocker::IsPotentiallyTrustworthyLoopbackURL(aActionURL)) {
=====================================
toolkit/torbutton/chrome/locale/en-US/torConnect.properties
=====================================
@@ -3,10 +3,14 @@
# 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/.
+torConnect.titlebarStatusName=Tor connection
+torConnect.titlebarStatusNotConnected=Not connected
+torConnect.titlebarStatusConnecting=Connecting…
+torConnect.titlebarStatusPotentiallyBlocked=Potentially blocked
+torConnect.titlebarStatusConnected=Connected
+
torConnect.torConnect=Connect to Tor
torConnect.torConnecting=Establishing a Connection
-torConnect.torNotConnectedConcise=Not Connected
-torConnect.torConnectingConcise=Connecting…
torConnect.tryingAgain=Trying again…
torConnect.noInternet=Tor Browser couldn’t reach the Internet
torConnect.noInternetDescription=This could be due to a connection issue rather than Tor being blocked. Check your Internet connection, proxy and firewall settings before trying again.
@@ -35,7 +39,6 @@ torConnect.viewLog=View logs…
torConnect.torConnectButton=Connect
torConnect.cancel=Cancel
torConnect.torConnected=Connected to the Tor network!
-torConnect.torConnectedConcise=Connected
torConnect.tryAgain=Try Again
torConnect.connectMessage=Changes to Tor Settings will not take effect until you connect
torConnect.tryAgainMessage=Tor Browser has failed to establish a connection to the Tor Network
@@ -51,3 +54,8 @@ torConnect.autoBootstrappingFailed=Automatic configuration failed
torConnect.autoBootstrappingAllFailed=None of the configurations we tried worked
torConnect.cannotDetermineCountry=Unable to determine user country
torConnect.noSettingsForCountry=No settings available for your location
+
+# Urlbar strings used up to 12.0 - TODO: remove when 12.5 becomes stable:
+torConnect.torNotConnectedConcise=Not Connected
+torConnect.torConnectingConcise=Connecting…
+torConnect.torConnectedConcise=Connected
=====================================
tools/update-packaging/common.sh
=====================================
@@ -108,6 +108,28 @@ make_add_if_not_instruction() {
echo "add-if-not \"$f\" \"$f\"" >> "$filev3"
}
+check_for_add_if_update() {
+ add_if_file_chk="$1"
+
+ # tor-browser#41776: We will remove with the old fontconfig file manually
+ # outside the update process. So, let the updater add the file if there.
+ # TODO: Remove once we do a watershed release.
+ if [ "$add_if_file_chk" = "TorBrowser/Data/fontconfig/fonts.conf" ]; then
+ ## "true" *giggle*
+ return 0;
+ fi
+ ## 'false'... because this is bash. Oh yay!
+ return 1;
+}
+
+make_add_if_instruction() {
+ f="$1"
+ filev3="$2"
+
+ verbose_notice " add-if \"$f\" \"$f\""
+ echo "add-if \"$f\" \"$f\"" >> "$filev3"
+}
+
make_addsymlink_instruction() {
link="$1"
target="$2"
=====================================
tools/update-packaging/make_full_update.sh
=====================================
@@ -106,6 +106,9 @@ for ((i=0; $i<$num_files; i=$i+1)); do
if check_for_add_if_not_update "$f"; then
make_add_if_not_instruction "$f" "$updatemanifestv3"
+ elif check_for_add_if_update "$f"; then
+ # TODO: Remove once we do a watershed release
+ make_add_if_instruction "$f" "$updatemanifestv3"
else
make_add_instruction "$f" "$updatemanifestv3"
fi
=====================================
tools/update-packaging/make_incremental_update.sh
=====================================
@@ -220,6 +220,17 @@ for ((i=0; $i<$num_oldfiles; i=$i+1)); do
continue 1
fi
+ if check_for_add_if_update "$f"; then
+ # TODO: Remove once we do a watershed release
+ # The full workdir may not exist yet, so create it if necessary.
+ mkdir -p `dirname "$workdir/$f"`
+ $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force --stdout "$newdir/$f" > "$workdir/$f"
+ copy_perm "$newdir/$f" "$workdir/$f"
+ make_add_if_instruction "$f" "$updatemanifestv3"
+ archivefiles="$archivefiles \"$f\""
+ continue 1
+ fi
+
if check_for_forced_update "$requested_forced_updates" "$f"; then
# The full workdir may not exist yet, so create it if necessary.
mkdir -p `dirname "$workdir/$f"`
@@ -328,6 +339,9 @@ for ((i=0; $i<$num_newfiles; i=$i+1)); do
if check_for_add_if_not_update "$f"; then
make_add_if_not_instruction "$f" "$updatemanifestv3"
+ elif check_for_add_if_update "$f"; then
+ # TODO: Remove once we do a watershed release
+ make_add_if_instruction "$f" "$updatemanifestv3"
else
make_add_instruction "$f" "$updatemanifestv3"
fi
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/5b547f…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/5b547f…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-12.5-1] Bug 41749: Replace the onion-glyph with dedicated icon for onion services
by Pier Angelo Vendrame (@pierov) 29 May '23
by Pier Angelo Vendrame (@pierov) 29 May '23
29 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
d441f698 by Dan Ballard at 2023-05-29T07:59:44+00:00
Bug 41749: Replace the onion-glyph with dedicated icon for onion services
- - - - -
3 changed files:
- browser/themes/shared/identity-block/onion-slash.svg
- browser/themes/shared/identity-block/onion-warning.svg
- browser/themes/shared/identity-block/onion.svg
Changes:
=====================================
browser/themes/shared/identity-block/onion-slash.svg
=====================================
@@ -1,5 +1,16 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="m14.1161 15.6245c-.0821.0001-.1634-.016-.2393-.0474-.0758-.0314-.1447-.0775-.2027-.1356l-12.749984-12.749c-.109266-.11882-.168406-.27526-.165071-.43666.003335-.16139.068886-.31525.182967-.42946.114078-.11421.267868-.17994.429258-.18345.16139-.00352.3179.05544.43685.16457l12.74998 12.75c.1168.1176.1824.2767.1824.4425s-.0656.3249-.1824.4425c-.058.058-.1269.1039-.2028.1352-.0759.0312-.1571.0471-.2392.0468z" fill-opacity="context-fill-opacity" fill="#ff0039" />
- <path d="m 8,0.5000002 c -1.61963,0 -3.1197431,0.5137987 -4.3457031,1.3867188 l 0.84375,0.8417968 0.7792969,0.78125 0.8613281,0.8613282 0.8164062,0.8164062 0.9863281,0.984375 h 0.058594 c 1.00965,0 1.828125,0.818485 1.828125,1.828125 0,0.01968 6.2e-4,0.039074 0,0.058594 L 10.8125,9.0449221 C 10.9334,8.7195921 11,8.3674002 11,8.0000002 c 0,-1.65685 -1.34314,-3 -3,-3 v -1.078125 c 2.25231,0 4.078125,1.825845 4.078125,4.078125 0,0.67051 -0.162519,1.3033281 -0.449219,1.8613281 l 0.861328,0.8613277 C 12.972434,9.9290067 13.25,8.9965102 13.25,8.0000002 c 0,-2.89949 -2.35049,-5.25 -5.25,-5.25 v -1.078125 c 3.4949,0 6.328125,2.833195 6.328125,6.328125 0,1.29533 -0.388841,2.4990528 -1.056641,3.5019528 l 0.841797,0.84375 C 14.986181,11.119703 15.5,9.6196302 15.5,8.0000002 c 0,-4.14214 -3.3579,-7.5 -7.5,-7.5 z m -6.1113281,3.15625 C 1.0154872,4.8821451 0.5,6.3803304 0.5,8.0000002 0.5,12.1421 3.85786,15.5 8,15.5 c 1.6198027,0 3.117896,-0.515441 4.34375,-1.388672 L 11.501953,13.269531 C 10.498787,13.937828 9.295838,14.328125 8,14.328125 V 13.25 c 0.9967306,0 1.9287093,-0.277621 2.722656,-0.759766 L 9.859375,11.626953 C 9.3016226,11.913918 8.6705338,12.078125 8,12.078125 V 11 C 8.3664751,11 8.716425,10.93088 9.0410156,10.810547 6.6639891,8.4300416 4.2743195,6.0418993 1.8886719,3.6562502 Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_1827_6565)">
+<path d="M6.62435 8.54824C6.23983 8.91273 6 9.42836 6 10C6 11.1046 6.89543 12 8 12C8.57164 12 9.08727 11.7602 9.45176 11.3757L8.74414 10.668C8.56107 10.8718 8.29551 11 8 11C7.44772 11 7 10.5523 7 10C7 9.70449 7.12818 9.43893 7.33197 9.25586L6.62435 8.54824Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M9.99442 10.1505C9.99812 10.1008 10 10.0506 10 10C10 8.89543 9.10457 8 8 8C7.94936 8 7.89915 8.00188 7.84946 8.00558L9.99442 10.1505Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M5.20988 7.13377C4.46354 7.86041 4 8.87607 4 10C4 12.2091 5.79086 14 8 14C9.12393 14 10.1396 13.5365 10.8662 12.7901L10.159 12.0829C9.61343 12.6483 8.84778 13 8 13C6.34315 13 5 11.6569 5 10C5 9.15222 5.35166 8.38657 5.91707 7.84097L5.20988 7.13377Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M10.8331 10.9892C10.9412 10.6795 11 10.3466 11 10C11 8.34315 9.65685 7 8 7C7.65339 7 7.32052 7.05878 7.01079 7.16692L6.24731 6.40343C6.77658 6.14502 7.37135 6 8 6C10.2091 6 12 7.79086 12 10C12 10.6286 11.855 11.2234 11.5966 11.7527L10.8331 10.9892Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M14 10C14 8.223 13.2275 6.62643 12 5.52779V4C12 1.79086 10.2091 0 8 0C5.79086 0 4 1.79086 4 4V4.15613L5.50811 5.66423C6.2417 5.2417 7.09263 5 8 5C10.7614 5 13 7.23858 13 10C13 10.9074 12.7583 11.7583 12.3358 12.4919L13.0637 13.2199C13.6565 12.2896 14 11.1849 14 10ZM8 4C7.00883 4 6.0738 4.24033 5.25 4.66591V4C5.25 2.48122 6.48122 1.25 8 1.25C9.51878 1.25 10.75 2.48122 10.75 4V4.66591C9.9262 4.24033 8.99117 4 8 4Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M12.2805 14.2044C11.1919 15.3126 9.67621 16 8 16C4.68629 16 2 13.3137 2 10C2 8.32379 2.68736 6.80812 3.79558 5.71948L4.50272 6.42662C3.57545 7.33427 3 8.59993 3 10C3 12.7614 5.23858 15 8 15C9.40007 15 10.6657 14.4246 11.5734 13.4973L12.2805 14.2044Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M1.25801 3.93806C1.50209 3.69398 1.89782 3.69398 2.14189 3.93806L13.1419 14.9381C13.386 15.1821 13.386 15.5779 13.1419 15.8219C12.8978 16.066 12.5021 16.066 12.258 15.8219L1.25801 4.82194C1.01393 4.57787 1.01393 4.18214 1.25801 3.93806Z" fill="#F90D3F"/>
+</g>
+<defs>
+<clipPath id="clip0_1827_6565">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
</svg>
=====================================
browser/themes/shared/identity-block/onion-warning.svg
=====================================
@@ -1,4 +1,13 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="M 7.5,0.5 C 3.35786,0.5 0,3.85786 0,8 c 0,3.7093 2.6930488,6.789278 6.2304688,7.392578 -0.032181,-0.0637 -0.060149,-0.128686 -0.085938,-0.195312 -0.00862,-0.02227 -0.01751,-0.04385 -0.025391,-0.06641 -0.023385,-0.0669 -0.043878,-0.135932 -0.060547,-0.205078 -0.00186,-0.0077 -0.00213,-0.01571 -0.00391,-0.02344 -0.017615,-0.07685 -0.032109,-0.153488 -0.041016,-0.232422 -7.27e-5,-6.44e-4 7.2e-5,-0.0013 0,-0.002 -0.0087,-0.07777 -0.011896,-0.157155 -0.011719,-0.236328 7.71e-5,-0.0337 2.127e-4,-0.06769 0.00195,-0.101563 3.337e-4,-0.0065 -3.955e-4,-0.01303 0,-0.01953 0.00318,-0.05219 0.0084,-0.10381 0.015625,-0.15625 0.03623,-0.263929 0.1235201,-0.529812 0.2714844,-0.787109 L 6.421875,13.138672 C 7.1130865,11.933878 7.8482649,10.654869 8.4882812,9.5390625 8.2033713,9.7224325 7.864,9.828125 7.5,9.828125 v -3.65625 c 1.00965,0 1.828125,0.818485 1.828125,1.828125 0,0.02558 -9.131e-4,0.050842 -0.00195,0.076172 L 9.6015625,7.5957031 C 9.7779825,7.2883331 10.012797,7.0451975 10.279297,6.8671875 9.8324169,5.7717775 8.75611,5 7.5,5 V 3.921875 c 1.72627,0 3.201675,1.0728106 3.796875,2.5878906 0.4511,-0.0416 0.914353,0.052393 1.314453,0.2832032 C 12.066128,4.4750988 9.98426,2.75 7.5,2.75 V 1.671875 c 3.4949,0 6.328125,2.833195 6.328125,6.328125 0,0.10641 -0.0026,0.2112863 -0.0078,0.3164062 L 14.74806,9.9355469 C 14.912447,9.3182669 15,8.66904 15,8 15,3.85786 11.6421,0.5 7.5,0.5 Z m 4,7 c -0.40375,0 -0.808156,0.19825 -1.035156,0.59375 l -3.3105471,5.771484 c -0.446,0.775 0.1271562,1.734375 1.0351562,1.734375 H 14.8125 c 0.907,0 1.478203,-0.959375 1.033203,-1.734375 L 12.535156,8.09375 C 12.308156,7.69825 11.90375,7.5 11.5,7.5 Z m 0,2.1015625 c 0.1658,0 0.324206,0.066384 0.441406,0.1835937 0.1172,0.1172101 0.183594,0.2757058 0.183594,0.4414058 v 1.748047 c 0,0.1658 -0.06639,0.324207 -0.183594,0.441407 -0.1172,0.1172 -0.275606,0.183593 -0.441406,0.183593 -0.1657,0 -0.324206,-0.06639 -0.441406,-0.183593 -0.1172,-0.1172 -0.183594,-0.275607 -0.183594,-0.441407 v -1.748047 c 0,-0.165699 0.06639,-0.3241957 0.183594,-0.4414058 C 11.175794,9.6679462 11.3343,9.6015625 11.5,9.6015625 Z m 0,3.7480465 c 0.1658,0 0.324206,0.06639 0.441406,0.183594 0.1172,0.1172 0.183594,0.275706 0.183594,0.441406 0,0.1658 -0.06639,0.32616 -0.183594,0.44336 -0.1172,0.1172 -0.275606,0.18164 -0.441406,0.18164 -0.1657,0 -0.324206,-0.06444 -0.441406,-0.18164 -0.1172,-0.1172 -0.183594,-0.27756 -0.183594,-0.44336 0,-0.1657 0.06639,-0.324206 0.183594,-0.441406 0.1172,-0.1172 0.275706,-0.183594 0.441406,-0.183594 z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_1827_6566)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M7.92788 10.5342L7.42044 11.408C7.05803 11.7736 6.55546 12 6 12C4.89543 12 4 11.1046 4 10C4 8.89543 4.89543 8 6 8C7.10457 8 8 8.89543 8 10C8 10.185 7.97488 10.3641 7.92788 10.5342ZM7 10C7 10.5523 6.55228 11 6 11C5.44772 11 5 10.5523 5 10C5 9.44772 5.44772 9 6 9C6.55228 9 7 9.44772 7 10Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M6.52221 12.9547C6.35262 12.9845 6.17812 13 6 13C4.34315 13 3 11.6569 3 10C3 8.34315 4.34315 7 6 7C7.30202 7 8.41032 7.82945 8.8253 8.98878L9.35089 8.08372C9.37772 8.03755 9.40587 7.99285 9.43523 7.94962C8.73673 6.78186 7.45967 6 6 6C3.79086 6 2 7.79086 2 10C2 12.1857 3.75302 13.9619 5.92975 13.9994C5.96208 13.9274 5.99884 13.8558 6.0402 13.7847L6.52221 12.9547Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.1978 7.00088C10.8782 6.44807 10.4728 5.95098 10 5.52779V4C10 1.79086 8.20914 0 6 0C3.79086 0 2 1.79086 2 4V5.52779C0.772501 6.62643 0 8.223 0 10C0 13.3137 2.68629 16 6 16C6.03024 16 6.06043 15.9998 6.09057 15.9993C5.89561 15.7007 5.77424 15.3557 5.749 14.9938C3.10419 14.8631 1 12.6773 1 10C1 7.23858 3.23858 5 6 5C7.75288 5 9.29509 5.90201 10.1878 7.26719C10.5002 7.0977 10.8482 7.00893 11.1978 7.00088ZM6 4C5.00883 4 4.0738 4.24033 3.25 4.66591V4C3.25 2.48122 4.48122 1.25 6 1.25C7.51878 1.25 8.75 2.48122 8.75 4V4.66591C7.9262 4.24033 6.99117 4 6 4Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+<path d="M15.5956 14.2875L12.2846 8.58591C11.8306 7.8047 10.6696 7.8047 10.2156 8.58591L6.90465 14.2875C6.45865 15.0529 7.03065 16 7.93865 16H14.5616C15.4686 16 16.0406 15.0529 15.5956 14.2875ZM11.8746 12.4189C11.8746 12.5826 11.8088 12.7396 11.6916 12.8553C11.5744 12.9711 11.4154 13.0361 11.2496 13.0361C11.0839 13.0361 10.9249 12.9711 10.8077 12.8553C10.6905 12.7396 10.6246 12.5826 10.6246 12.4189V10.6935C10.6246 10.5298 10.6905 10.3728 10.8077 10.257C10.9249 10.1413 11.0839 10.0762 11.2496 10.0762C11.4154 10.0762 11.5744 10.1413 11.6916 10.257C11.8088 10.3728 11.8746 10.5298 11.8746 10.6935V12.4189ZM11.2496 15.0124C11.0839 15.0124 10.9249 14.9473 10.8077 14.8316C10.6905 14.7158 10.6246 14.5588 10.6246 14.3951C10.6246 14.2314 10.6905 14.0744 10.8077 13.9586C10.9249 13.8429 11.0839 13.7778 11.2496 13.7778C11.4154 13.7778 11.5744 13.8429 11.6916 13.9586C11.8088 14.0744 11.8746 14.2314 11.8746 14.3951C11.8746 14.5588 11.8088 14.7158 11.6916 14.8316C11.5744 14.9473 11.4154 15.0124 11.2496 15.0124Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
+</g>
+<defs>
+<clipPath id="clip0_1827_6566">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
</svg>
=====================================
browser/themes/shared/identity-block/onion.svg
=====================================
@@ -1,4 +1,5 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="M 8 0.5 C 3.85786 0.5 0.5 3.85786 0.5 8 C 0.5 12.1421 3.85786 15.5 8 15.5 C 12.1421 15.5 15.5 12.1421 15.5 8 C 15.5 3.85786 12.1421 0.5 8 0.5 z M 8 1.671875 C 11.4949 1.671875 14.328125 4.50507 14.328125 8 C 14.328125 11.4949 11.4949 14.328125 8 14.328125 L 8 13.25 C 10.89951 13.25 13.25 10.89951 13.25 8 C 13.25 5.10051 10.89951 2.75 8 2.75 L 8 1.671875 z M 8 3.921875 C 10.25231 3.921875 12.078125 5.74772 12.078125 8 C 12.078125 10.25231 10.25231 12.078125 8 12.078125 L 8 11 C 9.65686 11 11 9.65686 11 8 C 11 6.34315 9.65686 5 8 5 L 8 3.921875 z M 8 6.171875 C 9.00965 6.171875 9.828125 6.99036 9.828125 8 C 9.828125 9.00965 9.00965 9.828125 8 9.828125 L 8 6.171875 z " clip-rule="evenodd" fill-rule="evenodd" fill="context-fill" fill-opacity="context-fill-opacity"/>
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 13C9.65685 13 11 11.6569 11 10C11 8.34315 9.65685 7 8 7C6.34315 7 5 8.34315 5 10C5 11.6569 6.34315 13 8 13ZM8 14C10.2091 14 12 12.2091 12 10C12 7.79086 10.2091 6 8 6C5.79086 6 4 7.79086 4 10C4 12.2091 5.79086 14 8 14Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 11C8.55228 11 9 10.5523 9 10C9 9.44772 8.55228 9 8 9C7.44772 9 7 9.44772 7 10C7 10.5523 7.44772 11 8 11ZM8 12C9.10457 12 10 11.1046 10 10C10 8.89543 9.10457 8 8 8C6.89543 8 6 8.89543 6 10C6 11.1046 6.89543 12 8 12Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.52779C13.2275 6.62643 14 8.223 14 10C14 13.3137 11.3137 16 8 16C4.68629 16 2 13.3137 2 10C2 8.223 2.7725 6.62643 4 5.52779V4C4 1.79086 5.79086 0 8 0C10.2091 0 12 1.79086 12 4V5.52779ZM5.25 4.66591C6.0738 4.24033 7.00883 4 8 4C8.99117 4 9.9262 4.24033 10.75 4.66591V4C10.75 2.48122 9.51878 1.25 8 1.25C6.48122 1.25 5.25 2.48122 5.25 4V4.66591ZM13 10C13 12.7614 10.7614 15 8 15C5.23858 15 3 12.7614 3 10C3 7.23858 5.23858 5 8 5C10.7614 5 13 7.23858 13 10Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
</svg>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d441f69…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d441f69…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 40858: Add a script for MacOS to selfsign an unsigned browser (so it can run on ARM Mx macs)
by Pier Angelo Vendrame (@pierov) 29 May '23
by Pier Angelo Vendrame (@pierov) 29 May '23
29 May '23
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
96045df2 by Dan Ballard at 2023-05-29T08:02:10+00:00
Bug 40858: Add a script for MacOS to selfsign an unsigned browser (so it can run on ARM Mx macs)
- - - - -
1 changed file:
- + tools/browser-self-sign-macos.sh
Changes:
=====================================
tools/browser-self-sign-macos.sh
=====================================
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+CERTNAME=my-codesign-cert-tor
+BROWSERPATH=.
+
+if [ $# -ge 1 ]
+then
+ BROWSERPATH=$1
+fi
+
+
+security find-certificate -c $CERTNAME > /dev/null
+
+if [ $? -ne 0 ]
+then
+ echo ""
+ echo "ERROR: Self Signing Certificate not found, please create:"
+ echo " 1. In the Keychain Access app on your Mac, choose Keychain Access > Certificate Assistant > Create a Certificate."
+ echo " 2. Enter the name '$CERTNAME' for the certificate"
+ echo " 3. Choose an identity type: Self Signed Root"
+ echo " 4. Certificate Type > Code Signing"
+ echo " 5. Check 'Let me override defaults' & click Continue."
+ echo " 6. Enter a unique Serial Number. (123 is fine)"
+ echo " 7. Enter a big Validity Period (days), like 3560 & click Continue."
+ echo " 8. Fill in your personal information & click Continue."
+ echo " 9. Accept defaults for the rest of the dialog boxes. (Continue several times)"
+ echo " 10. Certificate Created! Click Done."
+ echo ""
+ echo "For additional help see:"
+ echo " https://support.apple.com/en-ca/guide/keychain-access/kyca8916/mac"
+ echo " https://stackoverflow.com/questions/58356844/what-are-the-ways-or-technolog…"
+
+ echo ""
+ read -n 1 -r -s -p $'Press enter to launch "Keychain Access"...\n'
+ open /System/Applications/Utilities/Keychain\ Access.app
+
+ exit -1
+fi
+
+echo "Found $CERTNAME, looking for browser to sign..."
+
+if [ ! -f "$BROWSERPATH/XUL" ]
+then
+ TESTPATH="$BROWSERPATH/Contents/MacOS"
+ if [ -f "$TESTPATH/XUL" ]
+ then
+ BROWSERPATH=$TESTPATH
+ else
+ echo "Error: browser files not detected in $BROWSERPATH!"
+ echo " This script needs to be run in the 'Contents/MacOS' directory of a SomeBrowser.app directory"
+ exit -1
+ fi
+fi
+
+echo "Mozilla based browser found, signing..."
+echo ' Will be asked for password to certificate for all the things that need to be signed. Click "Always Allow" to automate'
+
+cd "$BROWSERPATH"
+
+codesign -s $CERTNAME *.dylib
+codesign -s $CERTNAME plugin-container.app
+
+if [ -d Tor ]
+then
+ codesign -s $CERTNAME Tor/PluggableTransports/*
+ codesign -s $CERTNAME Tor/libevent-2.1.7.dylib
+ if [ -f Tor/tor.real ]
+ then
+ codesign -s $CERTNAME Tor/tor.real
+ fi
+ if [ -f Tor/tor ]
+ then
+ codesign -s $CERTNAME Tor/tor
+ fi
+fi
+
+codesign -s $CERTNAME XUL
+
+if [ -d updater.app ]
+then
+ codesign -s $CERTNAME updater.app
+fi
+
+# mullvadbrowser
+if [ -f mullvadbrowser ]
+then
+ codesign -s $CERTNAME mullvadbrowser
+fi
+
+# BB or TB
+if [ -f firefox ]
+then
+ codesign -s $CERTNAME firefox
+fi
+
+echo ""
+echo "Browser signing step done!"
+echo ""
+
+echo "App still needs one more override to be easily opened with double click in Finder"
+echo "Alternatively you can right click it, select 'Open' and then select 'Open' from the override popup"
+echo "Or to enable it to be double clicked to open perform the following"
+echo ""
+echo "Double click the app and select either 'Ok' or 'Cancel' from the warning popup depending on which you get (Do Not 'Move to Trash')"
+echo 'Go to Preferences -> Security & Privacy and click on padlock to allow changes. '
+echo ' Then in "Allow appications downloaded from" select either:'
+echo ' - App Store and identified developers'
+echo ' - Anywhere'
+echo ' Below that may be a notice about your specific app saying it was blocked because it was not from an identified developer. Click "Open Anyways" and "Open"'
+
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/tor-browser-build][main] Bug 40850: Use obfs4 main branch in nightly
by richard (@richard) 25 May '23
by richard (@richard) 25 May '23
25 May '23
richard pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
ee633476 by Nicolas Vigier at 2023-05-25T20:28:24+00:00
Bug 40850: Use obfs4 main branch in nightly
In 076ffcf14d8f51d1837889c25a0fddc0afc42796 we stopped using the main
branch, because the build of tpo/anti-censorship/pluggable-transports/obfs4#40011.
Since this is now fixed, we can use the main branch again.
- - - - -
1 changed file:
- projects/obfs4/config
Changes:
=====================================
projects/obfs4/config
=====================================
@@ -11,14 +11,13 @@ container:
var:
go_vendor_sha256sum: 5d2d82d00afc5fe044ee6df718ffe066b7d9e5446944c0ee0870e060e4e6bcc8
-# Stop using `main` on nightly, until tor-browser-build#40850 is fixed
-#targets:
-# nightly:
-# git_hash: main
-# version: '[% c("abbrev") %]'
-# tag_gpg_id: 0
-# var:
-# go_vendor_sha256sum: ad5cbcb09580c74b02b230b4fad7d2362c3b2f4537cdefd4abdeb0c3c4e97adb
+targets:
+ nightly:
+ git_hash: main
+ version: '[% c("abbrev") %]'
+ tag_gpg_id: 0
+ var:
+ go_vendor_sha256sum: 8b7e04a43bfbcdc829ea5093d8ee0a50eddefad543acd201b25424b33a7f882b
steps:
build:
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-12.5-1] 6 commits: fixup! Bug 40597: Implement TorSettings module
by richard (@richard) 25 May '23
by richard (@richard) 25 May '23
25 May '23
richard pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
f89920b2 by Henry Wilkes at 2023-05-25T19:57:03+00:00
fixup! Bug 40597: Implement TorSettings module
Bug 41608 - Ignore tor connection errors when tor connection is
cancelled by the user. This can happen if the bootstrap process is
cancelled late in the process.
Also remove unused cancelAutoBootstrapping.
- - - - -
77d2560d by Henry Wilkes at 2023-05-25T19:57:03+00:00
fixup! Add TorStrings module for localization
Bug 41608 - Add new connection status strings.
- - - - -
efa05015 by Henry Wilkes at 2023-05-25T19:57:03+00:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 41608 - Use the torconnect icon for the onion slash.
- - - - -
a71b5035 by Henry Wilkes at 2023-05-25T19:57:03+00:00
fixup! Bug 21952: Implement Onion-Location
Bug 41608 - Use the same styling for ".onion available" urlbar button as
the tor-connect-urlbar-button. This also stops the button from
overflowing its container like before. Also move to after the bookmark
button.
- - - - -
ba98c304 by Henry Wilkes at 2023-05-25T19:57:03+00:00
amend! Bug 27476: Implement about:torconnect captive portal within Tor Browser
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.
- - - - -
702051f1 by Henry Wilkes at 2023-05-25T19:57:03+00:00
fixup! Bug 27476: Implement about:torconnect captive portal within Tor Browser
Bug 41608 and 41526 - Use KeyboardEvent.repeat to block triggering newly
focused buttons in about:torconnect. The approach in tor-browser!607
prevented this by waiting for keyup, but keyup could still be triggered
by a key event initialized elsewhere. E.g. when pressing Enter to close
a modal dialog, the Enter's keyup event would be sent to the
about:torconnect page and trigger the focused button.
- - - - -
21 changed files:
- browser/base/content/browser.js
- browser/base/content/browser.xhtml
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
- browser/components/onionservices/content/onionlocation.css
- browser/components/torconnect/content/aboutTorConnect.js
- − browser/components/torconnect/content/onion-slash.svg
- − browser/components/torconnect/content/torBootstrapUrlbar.js
- + browser/components/torconnect/content/torConnectTitlebarStatus.css
- + browser/components/torconnect/content/torConnectTitlebarStatus.js
- + browser/components/torconnect/content/torConnectUrlbarButton.js
- − browser/components/torconnect/content/torconnect-urlbar.css
- − browser/components/torconnect/content/torconnect-urlbar.inc.xhtml
- browser/components/torconnect/jar.mn
- browser/components/torpreferences/content/torPreferences.css
- browser/modules/TorConnect.jsm
- browser/modules/TorStrings.jsm
- browser/themes/shared/browser-shared.css
- browser/themes/shared/jar.inc.mn
- + browser/themes/shared/tor-urlbar-button.css
- toolkit/torbutton/chrome/locale/en-US/torConnect.properties
Changes:
=====================================
browser/base/content/browser.js
=====================================
@@ -80,6 +80,8 @@ XPCOMUtils.defineLazyModuleGetters(this, {
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
TorConnect: "resource:///modules/TorConnect.jsm",
+ TorConnectState: "resource:///modules/TorConnect.jsm",
+ TorConnectTopics: "resource:///modules/TorConnect.jsm",
Translation: "resource:///modules/translation/TranslationParent.jsm",
UITour: "resource:///modules/UITour.jsm",
UpdateUtils: "resource://gre/modules/UpdateUtils.jsm",
@@ -269,6 +271,16 @@ XPCOMUtils.defineLazyScriptGetter(
"gSharedTabWarning",
"chrome://browser/content/browser-webrtc.js"
);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["gTorConnectUrlbarButton"],
+ "chrome://browser/content/torconnect/torConnectUrlbarButton.js"
+);
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ ["gTorConnectTitlebarStatus"],
+ "chrome://browser/content/torconnect/torConnectTitlebarStatus.js"
+);
XPCOMUtils.defineLazyScriptGetter(
this,
["gTorCircuitPanel"],
@@ -1808,6 +1820,9 @@ var gBrowserInit = {
// Init the OnionAuthPrompt
OnionAuthPrompt.init();
+ gTorConnectUrlbarButton.init();
+ gTorConnectTitlebarStatus.init();
+
gTorCircuitPanel.init();
// Certain kinds of automigration rely on this notification to complete
@@ -1895,8 +1910,6 @@ var gBrowserInit = {
}
this._loadHandled = true;
-
- TorBootstrapUrlbar.init();
},
_cancelDelayedStartup() {
@@ -2554,9 +2567,10 @@ var gBrowserInit = {
OnionAuthPrompt.uninit();
- gTorCircuitPanel.uninit();
+ gTorConnectUrlbarButton.uninit();
+ gTorConnectTitlebarStatus.uninit();
- TorBootstrapUrlbar.uninit();
+ gTorCircuitPanel.uninit();
gAccessibilityServiceIndicator.uninit();
=====================================
browser/base/content/browser.xhtml
=====================================
@@ -37,6 +37,7 @@
<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/onionservices/onionservices.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/torCircuitPanel.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/torconnect/torConnectTitlebarStatus.css" type="text/css"?>
<!DOCTYPE window [
#include browser-doctype.inc
@@ -123,7 +124,6 @@
Services.scriptloader.loadSubScript("chrome://browser/content/search/searchbar.js", this);
Services.scriptloader.loadSubScript("chrome://browser/content/languageNotification.js", this);
Services.scriptloader.loadSubScript("chrome://torbutton/content/torbutton.js", this);
- Services.scriptloader.loadSubScript("chrome://browser/content/torconnect/torBootstrapUrlbar.js", this);
window.onload = gBrowserInit.onLoad.bind(gBrowserInit);
window.onunload = gBrowserInit.onUnload.bind(gBrowserInit);
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -93,6 +93,11 @@
aria-live="polite"/>
<hbox class="private-browsing-indicator"/>
+ <html:div id="tor-connect-titlebar-status" role="status">
+ <html:img alt="" id="tor-connect-titlebar-status-icon" />
+ <html:span id="tor-connect-titlebar-status-label"></html:span>
+ </html:div>
+
#include titlebar-items.inc.xhtml
</toolbar>
@@ -335,7 +340,6 @@
data-l10n-id="urlbar-go-button"/>
<hbox id="page-action-buttons" context="pageActionContextMenu">
<toolbartabstop/>
-#include ../../components/torconnect/content/torconnect-urlbar.inc.xhtml
<hbox id="contextual-feature-recommendation" role="button" hidden="true">
<hbox id="cfr-label-container">
<label id="cfr-label"/>
@@ -363,9 +367,6 @@
onclick="FullZoom.reset(); FullZoom.resetScalingZoom();"
tooltip="dynamic-shortcut-tooltip"
hidden="true"/>
-
-#include ../../components/onionservices/content/onionlocation-urlbar.inc.xhtml
-
<hbox id="pageActionButton"
class="urlbar-page-action"
role="button"
@@ -383,6 +384,15 @@
class="urlbar-icon"/>
</hbox>
</hbox>
+
+ <hbox id="tor-connect-urlbar-button"
+ role="button"
+ class="tor-urlbar-button"
+ hidden="true">
+ <label id="tor-connect-urlbar-button-label"/>
+ </hbox>
+
+#include ../../components/onionservices/content/onionlocation-urlbar.inc.xhtml
</hbox>
</hbox>
<toolbartabstop/>
=====================================
browser/components/onionservices/content/onionlocation-urlbar.inc.xhtml
=====================================
@@ -1,10 +1,10 @@
# Copyright (c) 2020, The Tor Project, Inc.
<hbox id="onion-location-box"
- class="urlbar-icon-wrapper urlbar-page-action"
+ class="tor-urlbar-button"
role="button"
hidden="true"
onclick="OnionLocationParent.buttonClick(event);">
<image id="onion-location-button" role="presentation"/>
- <hbox id="onion-label-container"><label id="onion-label"/></hbox>
+ <label id="onion-label"/>
</hbox>
=====================================
browser/components/onionservices/content/onionlocation.css
=====================================
@@ -1,44 +1,9 @@
/* Copyright (c) 2020, The Tor Project, Inc. */
-#onion-location-box {
- background-color: var(--purple-60);
- -moz-context-properties: fill;
- fill: white;
-}
-
-#onion-location-box:hover {
- background-color: var(--purple-70);
-}
-
-#onion-location-box:active {
- background-color: var(--purple-80);
-}
-
-@media (prefers-color-scheme: dark) {
- #onion-location-box {
- background-color: var(--purple-50);
- }
-
- #onion-location-box:hover {
- background-color: var(--purple-60);
- }
-
- #onion-location-box:active {
- background-color: var(--purple-70);
- }
-}
-
#onion-location-button {
list-style-image: url(chrome://browser/content/onionservices/onionlocation.svg);
- padding-inline-start: 0.5em;
-}
-
-label#onion-label {
- margin: 0;
- padding-block: 0;
- padding-inline: 0.5em;
- color: white;
- font-weight: normal;
+ -moz-context-properties: fill;
+ fill: currentColor;
}
.onionlocation-notification-icon {
=====================================
browser/components/torconnect/content/aboutTorConnect.js
=====================================
@@ -769,26 +769,29 @@ class AboutTorConnect {
}
});
- // Delay the "Enter" activation of the given button from "keydown" to
- // "keyup".
+ // Prevent repeat triggering on keydown when the Enter key is held down.
//
- // Without this, holding down Enter will continue to trigger the button
- // until the user stops holding. This means that a user can accidentally
- // re-trigger a button several times. This is particularly bad when the
- // focus gets moved to a new button, and the new button can get triggered
- // immediately. E.g. when the "Connect" button is triggered it disappears
- // and focus moves to the "Cancel" button.
+ // Without this, holding down Enter will continue to trigger the button's
+ // click event until the user stops holding. This means that a user can
+ // accidentally re-trigger a button several times. And if focus moves to a
+ // new button it can also get triggered, despite not receiving the initial
+ // keydown event.
+ //
+ // E.g. If the user presses down Enter on the "Connect" button it will
+ // trigger and focus will move to the "Cancel" button. This should prevent
+ // the user accidentally triggering the "Cancel" button if they hold down
+ // Enter for a little bit too long.
for (const button of document.body.querySelectorAll("button")) {
button.addEventListener("keydown", event => {
- if (event.key === "Enter") {
+ // If the keydown is a repeating Enter event, ignore it.
+ // NOTE: If firefox uses wayland display (rather than xwayland), the
+ // "repeat" event is always "false" so this will not work.
+ // See bugzilla bug 1784438. Also see bugzilla bug 1594003.
+ // Currently tor browser uses xwayland by default on linux.
+ if (event.key === "Enter" && event.repeat) {
event.preventDefault();
}
});
- button.addEventListener("keyup", event => {
- if (event.key === "Enter") {
- button.click();
- }
- });
}
}
=====================================
browser/components/torconnect/content/onion-slash.svg deleted
=====================================
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
- <path d="m14.1161 15.6245c-.0821.0001-.1634-.016-.2393-.0474-.0758-.0314-.1447-.0775-.2027-.1356l-12.749984-12.749c-.109266-.11882-.168406-.27526-.165071-.43666.003335-.16139.068886-.31525.182967-.42946.114078-.11421.267868-.17994.429258-.18345.16139-.00352.3179.05544.43685.16457l12.74998 12.75c.1168.1176.1824.2767.1824.4425s-.0656.3249-.1824.4425c-.058.058-.1269.1039-.2028.1352-.0759.0312-.1571.0471-.2392.0468z" fill-opacity="context-fill-opacity" fill="#ff0039" />
- <path d="m 8,0.5000002 c -1.61963,0 -3.1197431,0.5137987 -4.3457031,1.3867188 l 0.84375,0.8417968 0.7792969,0.78125 0.8613281,0.8613282 0.8164062,0.8164062 0.9863281,0.984375 h 0.058594 c 1.00965,0 1.828125,0.818485 1.828125,1.828125 0,0.01968 6.2e-4,0.039074 0,0.058594 L 10.8125,9.0449221 C 10.9334,8.7195921 11,8.3674002 11,8.0000002 c 0,-1.65685 -1.34314,-3 -3,-3 v -1.078125 c 2.25231,0 4.078125,1.825845 4.078125,4.078125 0,0.67051 -0.162519,1.3033281 -0.449219,1.8613281 l 0.861328,0.8613277 C 12.972434,9.9290067 13.25,8.9965102 13.25,8.0000002 c 0,-2.89949 -2.35049,-5.25 -5.25,-5.25 v -1.078125 c 3.4949,0 6.328125,2.833195 6.328125,6.328125 0,1.29533 -0.388841,2.4990528 -1.056641,3.5019528 l 0.841797,0.84375 C 14.986181,11.119703 15.5,9.6196302 15.5,8.0000002 c 0,-4.14214 -3.3579,-7.5 -7.5,-7.5 z m -6.1113281,3.15625 C 1.0154872,4.8821451 0.5,6.3803304 0.5,8.0000002 0.5,12.1421 3.85786,15.5 8,15.5 c 1.6198027,0 3.117896,-0.515441 4.34375,-1.388672 L 11.501953,13.269531 C 10.498787,13.937828 9.295838,14.328125 8,14.328125 V 13.25 c 0.9967306,0 1.9287093,-0.277621 2.722656,-0.759766 L 9.859375,11.626953 C 9.3016226,11.913918 8.6705338,12.078125 8,12.078125 V 11 C 8.3664751,11 8.716425,10.93088 9.0410156,10.810547 6.6639891,8.4300416 4.2743195,6.0418993 1.8886719,3.6562502 Z" fill-opacity="context-fill-opacity" fill="context-fill"/>
-</svg>
=====================================
browser/components/torconnect/content/torBootstrapUrlbar.js deleted
=====================================
@@ -1,95 +0,0 @@
-// Copyright (c) 2021, The Tor Project, Inc.
-
-"use strict";
-
-const { TorConnect, TorConnectTopics, TorConnectState } = ChromeUtils.import(
- "resource:///modules/TorConnect.jsm"
-);
-const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
-
-/* globals browser, gURLBar, Services */
-
-var TorBootstrapUrlbar = {
- selectors: Object.freeze({
- torConnect: {
- box: "hbox#torconnect-box",
- label: "label#torconnect-label",
- },
- }),
-
- elements: null,
-
- updateTorConnectBox(state) {
- switch (state) {
- case TorConnectState.Initial:
- case TorConnectState.Configuring:
- case TorConnectState.AutoConfiguring:
- case TorConnectState.Error:
- case TorConnectState.FatalError: {
- this.elements.torConnectBox.removeAttribute("hidden");
- this.elements.torConnectLabel.textContent =
- TorStrings.torConnect.torNotConnectedConcise;
- this.elements.inputContainer.setAttribute("torconnect", "offline");
- break;
- }
- case TorConnectState.Bootstrapping: {
- this.elements.torConnectBox.removeAttribute("hidden");
- this.elements.torConnectLabel.textContent =
- TorStrings.torConnect.torConnectingConcise;
- this.elements.inputContainer.setAttribute("torconnect", "connecting");
- break;
- }
- case TorConnectState.Bootstrapped: {
- this.elements.torConnectBox.removeAttribute("hidden");
- this.elements.torConnectLabel.textContent =
- TorStrings.torConnect.torConnectedConcise;
- this.elements.inputContainer.setAttribute("torconnect", "connected");
- // hide torconnect box after 5 seconds
- setTimeout(() => {
- this.elements.torConnectBox.setAttribute("hidden", "true");
- }, 5000);
- break;
- }
- case TorConnectState.Disabled: {
- this.elements.torConnectBox.setAttribute("hidden", "true");
- break;
- }
- default:
- break;
- }
- },
-
- observe(aSubject, aTopic, aData) {
- if (aTopic === TorConnectTopics.StateChange) {
- const obj = aSubject?.wrappedJSObject;
- this.updateTorConnectBox(obj?.state);
- }
- },
-
- init() {
- if (TorConnect.shouldShowTorConnect) {
- // browser isn't populated until init
- this.elements = Object.freeze({
- torConnectBox: browser.ownerGlobal.document.querySelector(
- this.selectors.torConnect.box
- ),
- torConnectLabel: browser.ownerGlobal.document.querySelector(
- this.selectors.torConnect.label
- ),
- inputContainer: gURLBar._inputContainer,
- });
- this.elements.torConnectBox.addEventListener("click", () => {
- TorConnect.openTorConnect();
- });
- Services.obs.addObserver(this, TorConnectTopics.StateChange);
- this.observing = true;
- this.updateTorConnectBox(TorConnect.state);
- }
- },
-
- uninit() {
- if (this.observing) {
- Services.obs.removeObserver(this, TorConnectTopics.StateChange);
- }
- },
-};
=====================================
browser/components/torconnect/content/torConnectTitlebarStatus.css
=====================================
@@ -0,0 +1,38 @@
+#tor-connect-titlebar-status:not([hidden]) {
+ display: flex;
+ align-items: center;
+ /* Want same as #private-browsing-indicator-with-label */
+ margin-inline: 7px;
+}
+
+#tor-connect-titlebar-status-label {
+ margin-inline: 6px;
+ white-space: nowrap;
+}
+
+#tor-connect-titlebar-status-icon {
+ -moz-context-properties: fill;
+ fill: currentColor;
+ width: 16px;
+ height: 16px;
+}
+
+#tor-connect-titlebar-status-icon.tor-connect-status-connected {
+ fill: var(--purple-60);
+}
+
+@media (prefers-color-scheme: dark) {
+ #tor-connect-titlebar-status-icon.tor-connect-status-connected {
+ fill: var(--purple-30);
+ }
+}
+
+#tor-connect-titlebar-status-icon.tor-connect-status-potentially-blocked {
+ fill: #c50042;
+}
+
+@media (prefers-color-scheme: dark) {
+ #tor-connect-titlebar-status-icon.tor-connect-status-potentially-blocked {
+ fill: #ff9aa2;
+ }
+}
=====================================
browser/components/torconnect/content/torConnectTitlebarStatus.js
=====================================
@@ -0,0 +1,115 @@
+/* eslint-env mozilla/browser-window */
+
+/**
+ * A TorConnect status shown in the application title bar.
+ */
+var gTorConnectTitlebarStatus = {
+ /**
+ * The status element in the title bar.
+ *
+ * @type {Element}
+ */
+ node: null,
+ /**
+ * The status label.
+ *
+ * @type {Element}
+ */
+ label: null,
+ /**
+ * The status icon.
+ *
+ * @type {Element}
+ */
+ icon: null,
+
+ /**
+ * Initialize the component.
+ */
+ init() {
+ const { TorStrings } = ChromeUtils.import(
+ "resource:///modules/TorStrings.jsm"
+ );
+
+ this._strings = TorStrings.torConnect;
+
+ this.node = document.getElementById("tor-connect-titlebar-status");
+ this.icon = document.getElementById("tor-connect-titlebar-status-icon");
+ this.label = document.getElementById("tor-connect-titlebar-status-label");
+ // The title also acts as an accessible name for the role="status".
+ this.node.setAttribute("title", this._strings.titlebarStatusName);
+
+ this._observeTopic = TorConnectTopics.StateChange;
+ this._stateListener = {
+ observe: (subject, topic, data) => {
+ if (topic !== this._observeTopic) {
+ return;
+ }
+ this._torConnectStateChanged();
+ },
+ };
+ Services.obs.addObserver(this._stateListener, this._observeTopic);
+
+ this._torConnectStateChanged();
+ },
+
+ /**
+ * De-initialize the component.
+ */
+ deinit() {
+ Services.obs.removeObserver(this._stateListener, this._observeTopic);
+ },
+
+ /**
+ * Callback for when the TorConnect state changes.
+ */
+ _torConnectStateChanged() {
+ let textId;
+ let connected = false;
+ let potentiallyBlocked = false;
+ switch (TorConnect.state) {
+ case TorConnectState.Disabled:
+ // Hide immediately.
+ this.node.hidden = true;
+ return;
+ case TorConnectState.Bootstrapped:
+ this._startHiding();
+ textId = "titlebarStatusConnected";
+ connected = true;
+ break;
+ case TorConnectState.Bootstrapping:
+ case TorConnectState.AutoBootstrapping:
+ textId = "titlebarStatusConnecting";
+ break;
+ default:
+ if (TorConnect.potentiallyBlocked) {
+ textId = "titlebarStatusPotentiallyBlocked";
+ potentiallyBlocked = true;
+ } else {
+ textId = "titlebarStatusNotConnected";
+ }
+ break;
+ }
+ this.label.textContent = this._strings[textId];
+ this.icon.setAttribute(
+ "src",
+ connected
+ ? "chrome://browser/content/torconnect/onion.svg"
+ : "chrome://browser/content/torconnect/onion-slash-fillable.svg"
+ );
+ this.icon.classList.toggle("tor-connect-status-connected", connected);
+ this.icon.classList.toggle(
+ "tor-connect-status-potentially-blocked",
+ potentiallyBlocked
+ );
+ },
+
+ /**
+ * Mark the component to be hidden after some delay.
+ */
+ _startHiding() {
+ setTimeout(() => {
+ this.node.hidden = true;
+ }, 5000);
+ },
+};
=====================================
browser/components/torconnect/content/torConnectUrlbarButton.js
=====================================
@@ -0,0 +1,155 @@
+/* eslint-env mozilla/browser-window */
+
+/**
+ * A "Connect" button shown in the urlbar when not connected to tor and in tabs
+ * other than about:torconnect.
+ */
+var gTorConnectUrlbarButton = {
+ /**
+ * The urlbar button node.
+ *
+ * @type {Element}
+ */
+ button: null,
+ /**
+ * Whether we are active.
+ *
+ * @type {boolean}
+ */
+ _isActive: false,
+ /**
+ * Whether we are in the "about:torconnect" tab.
+ *
+ * @type {boolean}
+ */
+ // We init to "true" so that the button can only appear after the first page
+ // load.
+ _inAboutTorConnectTab: true,
+
+ /**
+ * Initialize the button.
+ */
+ init() {
+ if (this._isActive) {
+ return;
+ }
+ this._isActive = true;
+
+ const { TorStrings } = ChromeUtils.import(
+ "resource:///modules/TorStrings.jsm"
+ );
+
+ this.button = document.getElementById("tor-connect-urlbar-button");
+ document.getElementById("tor-connect-urlbar-button-label").value =
+ TorStrings.torConnect.torConnectButton;
+ this.button.addEventListener("click", event => {
+ if (event.button !== 0) {
+ return;
+ }
+ this.connect();
+ });
+ this.button.addEventListener("keydown", event => {
+ if (event.key !== "Enter" && event.key !== " ") {
+ return;
+ }
+ this.connect();
+ });
+
+ this._observeTopic = TorConnectTopics.StateChange;
+ this._stateListener = {
+ observe: (subject, topic, data) => {
+ if (topic !== this._observeTopic) {
+ return;
+ }
+ this._torConnectStateChanged();
+ },
+ };
+ Services.obs.addObserver(this._stateListener, this._observeTopic);
+
+ this._locationListener = {
+ onLocationChange: (webProgress, request, locationURI, flags) => {
+ if (
+ webProgress.isTopLevel &&
+ !(flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT)
+ ) {
+ this._inAboutTorConnectTab = gBrowser.selectedBrowser.currentURI?.spec.startsWith(
+ "about:torconnect"
+ );
+ this._updateButtonVisibility();
+ }
+ },
+ };
+ // Notified of new locations for the currently selected browser (tab) *and*
+ // switching selected browser.
+ gBrowser.addProgressListener(this._locationListener);
+
+ this._torConnectStateChanged();
+ },
+
+ /**
+ * Deactivate and de-initialize the button.
+ */
+ deinit() {
+ if (!this._isActive) {
+ return;
+ }
+ this._isActive = false;
+
+ Services.obs.removeObserver(this._stateListener, this._observeTopic);
+ gBrowser.removeProgressListener(this._locationListener);
+ this._updateButtonVisibility();
+ },
+
+ /**
+ * Begin the tor connection bootstrapping process.
+ */
+ connect() {
+ TorConnect.openTorConnect({ beginBootstrap: true });
+ },
+
+ /**
+ * Callback for when the TorConnect state changes.
+ */
+ _torConnectStateChanged() {
+ if (
+ TorConnect.state === TorConnectState.Bootstrapped ||
+ TorConnect.state === TorConnectState.Disabled
+ ) {
+ this.deinit();
+ return;
+ }
+ this._updateButtonVisibility();
+ },
+
+ /**
+ * Callback when the TorConnect state, current browser location, or activation
+ * state changes.
+ */
+ _updateButtonVisibility() {
+ if (!this.button) {
+ return;
+ }
+ // NOTE: We do not manage focus when hiding the button. We only expect to
+ // move from "not hidden" to "hidden" when:
+ // + switching tabs to "about:torconnect", or
+ // + starting bootstrapping.
+ //
+ // When switching tabs, the normal tab switching logic will eventually move
+ // focus to the new tab or url bar, so whilst the focus may be lost
+ // temporarily when we hide the button, it will be re-established quickly on
+ // tab switch.
+ //
+ // And we don't expect bootstrapping to start whilst outside of the
+ // "about:torconnect", and the automatic bootstrapping should only trigger
+ // at the initial start.
+ this.button.hidden =
+ !this._isActive ||
+ this._inAboutTorConnectTab ||
+ !TorConnect.enabled ||
+ !TorConnect.canBeginBootstrap;
+ this.button.classList.toggle(
+ "tor-urlbar-button-plain",
+ TorConnect.potentiallyBlocked
+ );
+ },
+};
=====================================
browser/components/torconnect/content/torconnect-urlbar.css deleted
=====================================
@@ -1,37 +0,0 @@
-/*
- ensure our torconnect button is always visible (same rule as for the bookmark button)
-*/
-label#torconnect-label {
- margin: 0;
- opacity: 0.6;
- padding: 0 0.5em;
-}
-
-hbox.urlbar-page-action#torconnect-box {
- display: -moz-inline-box!important;
-}
-
-/* hide when hidden attribute is set */
-hbox.urlbar-page-action#torconnect-box[hidden="true"],
-/* hide when user is typing in URL bar */
-#urlbar[usertyping] > #urlbar-input-container > #page-action-buttons > #torconnect-box {
- display: none!important;
-}
-
-/* hide urlbar's placeholder text when not connectd to tor */
-hbox#urlbar-input-container[torconnect="offline"] input#urlbar-input::placeholder,
-hbox#urlbar-input-container[torconnect="connecting"] input#urlbar-input::placeholder {
- opacity: 0;
-}
-
-/* hide search suggestions when not connected to tor */
-hbox#urlbar-input-container[torconnect="offline"] + vbox.urlbarView,
-hbox#urlbar-input-container[torconnect="connecting"] + vbox.urlbarView {
- display: none!important;
-}
-
-/* hide search icon when we are not connected to tor */
-hbox#urlbar-input-container[torconnect="offline"] > #identity-box[pageproxystate="invalid"] > #identity-icon,
-hbox#urlbar-input-container[torconnect="connecting"] > #identity-box[pageproxystate="invalid"] > #identity-icon {
- display: none!important;
-}
=====================================
browser/components/torconnect/content/torconnect-urlbar.inc.xhtml deleted
=====================================
@@ -1,11 +0,0 @@
-# Copyright (c) 2021, The Tor Project, Inc.
-
-<hbox id="torconnect-box"
- class="urlbar-icon-wrapper urlbar-page-action"
- role="status"
- align="center"
- hidden="true">
- <hbox id="torconnect-container">
- <label id="torconnect-label"/>
- </hbox>
-</hbox>
\ No newline at end of file
=====================================
browser/components/torconnect/jar.mn
=====================================
@@ -1,5 +1,7 @@
browser.jar:
- content/browser/torconnect/torBootstrapUrlbar.js (content/torBootstrapUrlbar.js)
+ content/browser/torconnect/torConnectUrlbarButton.js (content/torConnectUrlbarButton.js)
+ content/browser/torconnect/torConnectTitlebarStatus.js (content/torConnectTitlebarStatus.js)
+ content/browser/torconnect/torConnectTitlebarStatus.css (content/torConnectTitlebarStatus.css)
content/browser/torconnect/aboutTorConnect.css (content/aboutTorConnect.css)
* content/browser/torconnect/aboutTorConnect.xhtml (content/aboutTorConnect.xhtml)
content/browser/torconnect/aboutTorConnect.js (content/aboutTorConnect.js)
@@ -8,6 +10,4 @@ browser.jar:
content/browser/torconnect/connection-failure.svg (content/connection-failure.svg)
content/browser/torconnect/connection-location.svg (content/connection-location.svg)
content/browser/torconnect/onion.svg (content/onion.svg)
- content/browser/torconnect/onion-slash.svg (content/onion-slash.svg)
content/browser/torconnect/onion-slash-fillable.svg (content/onion-slash-fillable.svg)
- skin/classic/browser/torconnect-urlbar.css (content/torconnect-urlbar.css)
=====================================
browser/components/torpreferences/content/torPreferences.css
=====================================
@@ -58,7 +58,7 @@ html:dir(rtl) input[type="checkbox"].toggle-button::before {
#torPreferences-connectMessageBox.error #torPreferences-connectMessageBox-icon
{
- mask: url("chrome://browser/skin/onion-slash.svg");
+ mask: url("chrome://browser/content/torconnect/onion-slash-fillable.svg");
background-color: white;
}
=====================================
browser/modules/TorConnect.jsm
=====================================
@@ -99,7 +99,7 @@ const TorConnectState = Object.freeze({
└─┼─────▶ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ ▲ │
- │ │ beginAutoBootstrap() │ cancelAutoBootstrap() │
+ │ │ beginAutoBootstrap() │ cancelBootstrap() │
│ ▼ │ │
│ ┌───────────────────────┐ │ │
└────── │ AutoBootstrapping │ ─┘ │
@@ -464,6 +464,7 @@ const TorConnect = (() => {
const tbr = new TorBootstrapRequest();
const internetTest = new InternetTest();
+ let cancelled = false;
let bootstrapError = "";
let bootstrapErrorDetails = "";
@@ -506,6 +507,7 @@ const TorConnect = (() => {
this.on_transition = async nextState => {
if (nextState === TorConnectState.Configuring) {
// stop bootstrap process if user cancelled
+ cancelled = true;
internetTest.cancel();
await tbr.cancel();
}
@@ -520,6 +522,19 @@ const TorConnect = (() => {
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.
+ console.log(
+ `TorConnect: 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;
@@ -1023,11 +1038,6 @@ const TorConnect = (() => {
this._changeState(TorConnectState.AutoBootstrapping, countryCode);
},
- cancelAutoBootstrap() {
- console.log("TorConnect: cancelAutoBootstrap()");
- this._changeState(TorConnectState.Configuring);
- },
-
/*
Further external commands and helper methods
*/
=====================================
browser/modules/TorStrings.jsm
=====================================
@@ -207,10 +207,6 @@ const Loader = {
torConnecting: "Establishing a Connection",
- torNotConnectedConcise: "Not Connected",
-
- torConnectingConcise: "Connecting…",
-
tryingAgain: "Trying again…",
noInternet: "Tor Browser couldn’t reach the Internet",
@@ -250,8 +246,6 @@ const Loader = {
torConnected: "Connected to the Tor network",
- torConnectedConcise: "Connected",
-
tryAgain: "Try Again",
// tor connect strings for message box in about:preferences#connection
@@ -275,6 +269,13 @@ const Loader = {
autoBootstrappingAllFailed: "None of the configurations we tried worked",
cannotDetermineCountry: "Unable to determine user country",
noSettingsForCountry: "No settings available for your location",
+
+ // Titlebar status.
+ titlebarStatusName: "Tor connection",
+ titlebarStatusNotConnected: "Not connected",
+ titlebarStatusConnecting: "Connecting…",
+ titlebarStatusPotentiallyBlocked: "Potentially blocked",
+ titlebarStatusConnected: "Connected",
};
const tsb = new TorPropertyStringBundle(
=====================================
browser/themes/shared/browser-shared.css
=====================================
@@ -23,8 +23,8 @@
@import url("chrome://browser/skin/UITour.css");
@import url("chrome://browser/skin/browser-colors.css");
@import url("chrome://branding/content/tor-styles.css");
-@import url("chrome://browser/skin/torconnect-urlbar.css");
@import url("chrome://browser/skin/onionlocation.css");
+@import url("chrome://browser/skin/tor-urlbar-button.css");
@namespace html url("http://www.w3.org/1999/xhtml");
=====================================
browser/themes/shared/jar.inc.mn
=====================================
@@ -32,6 +32,7 @@
skin/classic/browser/tabs.css (../shared/tabs.css)
skin/classic/browser/toolbarbuttons.css (../shared/toolbarbuttons.css)
skin/classic/browser/toolbarbutton-icons.css (../shared/toolbarbutton-icons.css)
+ skin/classic/browser/tor-urlbar-button.css (../shared/tor-urlbar-button.css)
skin/classic/browser/urlbar-dynamic-results.css (../shared/urlbar-dynamic-results.css)
skin/classic/browser/urlbar-searchbar.css (../shared/urlbar-searchbar.css)
skin/classic/browser/urlbarView.css (../shared/urlbarView.css)
=====================================
browser/themes/shared/tor-urlbar-button.css
=====================================
@@ -0,0 +1,107 @@
+.tor-urlbar-button:not([hidden]) {
+ --tor-urlbar-button-background-color: var(--purple-60);
+ background-color: var(--tor-urlbar-button-background-color);
+ /* FIXME: Use different colors for light and dark theme, rather than "white".
+ * See tor-browser#41787 */
+ color: white;
+ display: flex;
+ align-items: center;
+ gap: 0.5em;
+ border-radius: var(--urlbar-icon-border-radius);
+ --tor-urlbar-button-inline-padding: 8px;
+ padding-inline: var(--tor-urlbar-button-inline-padding);
+ margin: 0;
+}
+
+.tor-urlbar-button > * {
+ flex: 0 0 auto;
+ margin: 0;
+}
+
+.tor-urlbar-button:focus-visible {
+ /* This button lies within the urlbar, so if the outline extends beyond the
+ * button's boundary, it will be clipped by the urlbar.
+ * Most button's in the urlbar get around this by using --focus-outline-inset,
+ * but our button has a purple background, which does not contrast well with
+ * the focus outline.
+ * Therefore, we use an offset outline rather than an inset outline, and
+ * compensate by shrinking the button's width and height so that the outline
+ * fits within the non-focused button boundary. Essentially, this has a
+ * similar effect to using an inset outline that matches the color of the
+ * urlbar background, but we keep the rounded corners. */
+ outline: var(--focus-outline);
+ outline-offset: var(--focus-outline-offset);
+ /* Use the background color for the outline, same as in-content buttons. */
+ outline-color: var(--tor-urlbar-button-background-color);
+ /* Calculate the difference between the button's border area and the outline
+ * area. */
+ --tor-urlbar-focus-outline-difference: calc(
+ var(--focus-outline-offset)
+ + var(--focus-outline-width)
+ );
+ /* For the inline direction, we shrink the padding by the difference, and
+ * increase the margin by the same amount so that the button text remains in
+ * the same position.
+ * For the block direction, the height of the button is flexibly sized with
+ * the urlbar height, so we should only need to increase the margin. */
+ padding-inline: calc(
+ var(--tor-urlbar-button-inline-padding)
+ - var(--tor-urlbar-focus-outline-difference)
+ );
+ margin: var(--tor-urlbar-focus-outline-difference);
+}
+
+.tor-urlbar-button:focus-visible > * {
+ /* Negate the margin that would be added on focus to ensure the button does
+ * not grow in height.
+ * Ideally, this should not change anything noticeable, otherwise the text
+ * could be clipped when focused. */
+ margin-block: calc(-1 * var(--tor-urlbar-focus-outline-difference));
+}
+
+#urlbar[usertyping] .tor-urlbar-button {
+ /* Hide whilst the user is typing in the url bar. */
+ display: none;
+}
+
+.tor-urlbar-button:hover {
+ --tor-urlbar-button-background-color: var(--purple-70);
+}
+
+.tor-urlbar-button:hover:active {
+ --tor-urlbar-button-background-color: var(--purple-80);
+}
+
+@media (prefers-color-scheme: dark) {
+ .tor-urlbar-button {
+ --tor-urlbar-button-background-color: var(--purple-50);
+ }
+
+ .tor-urlbar-button:hover {
+ --tor-urlbar-button-background-color: var(--purple-60);
+ }
+
+ .tor-urlbar-button:hover:active {
+ --tor-urlbar-button-background-color: var(--purple-70);
+ }
+}
+
+/* Make the button look plain like the identity #urlbar-label-box. */
+.tor-urlbar-button.tor-urlbar-button-plain {
+ --tor-urlbar-button-background-color: var(--urlbar-box-bgcolor);
+ color: var(--urlbar-box-text-color);
+}
+
+.tor-urlbar-button.tor-urlbar-button-plain:focus-visible {
+ outline-color: var(--focus-outline-color);
+}
+
+.tor-urlbar-button.tor-urlbar-button-plain:hover {
+ --tor-urlbar-button-background-color: var(--urlbar-box-hover-bgcolor);
+ color: var(--urlbar-box-hover-text-color);
+}
+
+.tor-urlbar-button.tor-urlbar-button-plain:hover:active {
+ --tor-urlbar-button-background-color: var(--urlbar-box-active-bgcolor);
+ color: var(--urlbar-box-hover-text-color);
+}
=====================================
toolkit/torbutton/chrome/locale/en-US/torConnect.properties
=====================================
@@ -3,10 +3,14 @@
# 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/.
+torConnect.titlebarStatusName=Tor connection
+torConnect.titlebarStatusNotConnected=Not connected
+torConnect.titlebarStatusConnecting=Connecting…
+torConnect.titlebarStatusPotentiallyBlocked=Potentially blocked
+torConnect.titlebarStatusConnected=Connected
+
torConnect.torConnect=Connect to Tor
torConnect.torConnecting=Establishing a Connection
-torConnect.torNotConnectedConcise=Not Connected
-torConnect.torConnectingConcise=Connecting…
torConnect.tryingAgain=Trying again…
torConnect.noInternet=Tor Browser couldn’t reach the Internet
torConnect.noInternetDescription=This could be due to a connection issue rather than Tor being blocked. Check your Internet connection, proxy and firewall settings before trying again.
@@ -35,7 +39,6 @@ torConnect.viewLog=View logs…
torConnect.torConnectButton=Connect
torConnect.cancel=Cancel
torConnect.torConnected=Connected to the Tor network!
-torConnect.torConnectedConcise=Connected
torConnect.tryAgain=Try Again
torConnect.connectMessage=Changes to Tor Settings will not take effect until you connect
torConnect.tryAgainMessage=Tor Browser has failed to establish a connection to the Tor Network
@@ -51,3 +54,8 @@ torConnect.autoBootstrappingFailed=Automatic configuration failed
torConnect.autoBootstrappingAllFailed=None of the configurations we tried worked
torConnect.cannotDetermineCountry=Unable to determine user country
torConnect.noSettingsForCountry=No settings available for your location
+
+# Urlbar strings used up to 12.0 - TODO: remove when 12.5 becomes stable:
+torConnect.torNotConnectedConcise=Not Connected
+torConnect.torConnectingConcise=Connecting…
+torConnect.torConnectedConcise=Connected
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/dbec6c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/dbec6c…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 40777: Update Go to 1.20.4 and create a Go bootstrap project
by Pier Angelo Vendrame (@pierov) 25 May '23
by Pier Angelo Vendrame (@pierov) 25 May '23
25 May '23
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
b37e2ebd by Pier Angelo Vendrame at 2023-05-25T18:28:35+02:00
Bug 40777: Update Go to 1.20.4 and create a Go bootstrap project
The Go compiler is written in Go, but it is possible to bootstrap it
from C wiht Go 1.4.
Before this commit, we used to build Go 1.4 for all our platforms,
so we built a compiler to throw it away several times.
Starting from Go 1.20, the team decided to require Go V-3 to bootstrap
(i.e., Go 1.17 to bootrastrap Go 1.20).
Bootstrapping is still feasible, but throwing away two compilers is
not a good idea. So, we decided to create a Go bootstrap project, and
build it only once (for Linux amd64) until it will be able to build
more recent Go compilers.
- - - - -
5 changed files:
- + projects/go-bootstrap/build
- + projects/go-bootstrap/config
- projects/go/0001-Use-fixed-go-build-tmp-directory.patch
- projects/go/build
- projects/go/config
Changes:
=====================================
projects/go-bootstrap/build
=====================================
@@ -0,0 +1,38 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+# This project is expected to be built only on Linux.
+# Then the actual Go compiler will be built for each platform.
+
+distdir=/var/tmp/dist/[% project %]
+mkdir -p /var/tmp/build /var/tmp/dist
+
+# Building go 1.4.x
+# This is needed to bootstrap the go that we actually use
+# https://golang.org/doc/install/source#go14
+tar -C /var/tmp/build --transform='s,^go\>,go1.4,' -xf $rootdir/[% c('input_files_by_name/go14') %]
+cd /var/tmp/build/go1.4/src
+# Disable cgo to avoid conflicts with newer GCC. cgo is not needed for the bootstrap go.
+# https://github.com/golang/go/issues/13114#issuecomment-186922245
+# Disable CC etc. that are set up for cross builds.
+CGO_ENABLED=0 CC= CFLAGS= LDFLAGS= ./make.bash
+export GOROOT_BOOTSTRAP="/var/tmp/build/go1.4"
+
+cd $rootdir
+
+tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/go') %]
+export GOROOT="$distdir"
+mv /var/tmp/dist/go $distdir
+cd $distdir/src
+
+./make.bash
+
+# This directory is non-reproducible and doesn't exist in official Go releases,
+# so remove it to preserve reproducibility of the output.
+rm -rf $distdir/pkg/obj/go-build/
+
+cd /var/tmp/dist
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
=====================================
projects/go-bootstrap/config
=====================================
@@ -0,0 +1,14 @@
+# vim: filetype=yaml sw=2
+version: 1.19.9
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
+ name: go
+ sha256sum: 131190a4697a70c5b1d232df5d3f55a3f9ec0e78e40516196ffb3f09ae6a5744
+ - URL: https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz
+ name: go14
+ sha256sum: f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52
=====================================
projects/go/0001-Use-fixed-go-build-tmp-directory.patch
=====================================
@@ -1,4 +1,4 @@
-From 958f724b1b434702c3d44ceaca646791674d07b1 Mon Sep 17 00:00:00 2001
+From 2c1c98d6404284df744a194dd23bd3660f365387 Mon Sep 17 00:00:00 2001
From: Georg Koppen <gk(a)torproject.org>
Date: Fri, 17 Apr 2020 10:24:23 +0000
Subject: [PATCH] Use fixed go-build tmp directory
@@ -6,15 +6,18 @@ Subject: [PATCH] Use fixed go-build tmp directory
Use fixed go-build tmp directory, when the directory does not exist, in
order to avoid some reproducibility issues where build directory gets
embedded in generated binaries.
+---
+ src/cmd/go/internal/work/action.go | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/cmd/go/internal/work/action.go b/src/cmd/go/internal/work/action.go
-index 33b7818fb2..5e369d0f53 100644
+index 8beb1345d0..dccf39c1c1 100644
--- a/src/cmd/go/internal/work/action.go
+++ b/src/cmd/go/internal/work/action.go
-@@ -252,9 +252,13 @@ func (b *Builder) Init() {
- if cfg.BuildN {
- b.WorkDir = "$WORK"
- } else {
+@@ -279,9 +279,13 @@ func NewBuilder(workDir string) *Builder {
+ if !buildInitStarted {
+ panic("internal error: NewBuilder called before BuildInit")
+ }
- tmp, err := os.MkdirTemp(cfg.Getenv("GOTMPDIR"), "go-build")
- if err != nil {
- base.Fatalf("go: creating work dir: %v", err)
@@ -29,5 +32,5 @@ index 33b7818fb2..5e369d0f53 100644
if !filepath.IsAbs(tmp) {
abs, err := filepath.Abs(tmp)
--
-2.26.1
+2.39.2
=====================================
projects/go/build
=====================================
@@ -3,27 +3,8 @@
distdir=/var/tmp/dist/[% project %]
mkdir -p /var/tmp/dist
-[% IF c("var/linux") %]
- # Config options for hardening-wrapper
- export DEB_BUILD_HARDENING=1
- export DEB_BUILD_HARDENING_STACKPROTECTOR=1
- export DEB_BUILD_HARDENING_FORTIFY=1
- export DEB_BUILD_HARDENING_FORMAT=1
- export DEB_BUILD_HARDENING_PIE=1
-[% END %]
-
-mkdir -p /var/tmp/build
-
-# Building go 1.4.x
-# This is needed to bootstrap the go that we actually use
-# https://golang.org/doc/install/source#go14
-tar -C /var/tmp/build --transform='s,^go\>,go1.4,' -xf $rootdir/[% c('input_files_by_name/go14') %]
-cd /var/tmp/build/go1.4/src
-# Disable cgo to avoid conflicts with newer GCC. cgo is not needed for the bootstrap go.
-# https://github.com/golang/go/issues/13114#issuecomment-186922245
-# Disable CC etc. that are set up for cross builds.
-CGO_ENABLED=0 CC= CFLAGS= LDFLAGS= ./make.bash
-export GOROOT_BOOTSTRAP="/var/tmp/build/go1.4"
+tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/go-bootstrap') %]
+export GOROOT_BOOTSTRAP="/var/tmp/dist/go-bootstrap"
cd $rootdir
[% IF ! c("var/linux") %]
=====================================
projects/go/config
=====================================
@@ -1,12 +1,10 @@
# vim: filetype=yaml sw=2
-version: 1.19.9
-filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+version: 1.20.4
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
container:
use_container: 1
var:
- go14_version: 1.4.3
-
setup: |
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf $rootdir/[% c("go_tarfile") %]
@@ -121,9 +119,10 @@ input_files:
enable: '[% ! c("var/linux") %]'
- URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
name: go
- sha256sum: 131190a4697a70c5b1d232df5d3f55a3f9ec0e78e40516196ffb3f09ae6a5744
- - URL: 'https://golang.org/dl/go[% c("var/go14_version") %].src.tar.gz'
- name: go14
- sha256sum: 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
+ sha256sum: 9f34ace128764b7a3a4b238b805856cc1b2184304df9e5690825b0710f4202d6
+ - project: go-bootstrap
+ name: go-bootstrap
+ target_replace:
+ '^.*browser-.*': 'basebrowser-linux-x86_64'
- filename: 0001-Use-fixed-go-build-tmp-directory.patch
enable: '[% c("var/android") %]'
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][tor-browser-102.11.0esr-12.5-1] fixup! Bug 23247: Communicating security expectations for .onion
by ma1 (@ma1) 25 May '23
by ma1 (@ma1) 25 May '23
25 May '23
ma1 pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
dbec6cf6 by cypherpunks1 at 2023-05-24T09:21:07-08:00
fixup! Bug 23247: Communicating security expectations for .onion
Bug 41785: Show http onion resources as secure in network monitor
- - - - -
1 changed file:
- devtools/shared/webconsole/network-helper.js
Changes:
=====================================
devtools/shared/webconsole/network-helper.js
=====================================
@@ -600,6 +600,9 @@ var NetworkHelper = {
// The request did not contain any security info.
if (!securityInfo) {
+ if (httpActivity.hostname && httpActivity.hostname.endsWith(".onion")) {
+ info.state = "secure";
+ }
return info;
}
@@ -651,7 +654,11 @@ var NetworkHelper = {
// schemes other than https and wss are subject to
// downgrade/etc at the scheme level and should always be
// considered insecure
- info.state = "insecure";
+ if (httpActivity.hostname && httpActivity.hostname.endsWith(".onion")) {
+ info.state = "secure";
+ } else {
+ info.state = "insecure";
+ }
} else if (state & wpl.STATE_IS_SECURE) {
// The connection is secure if the scheme is sufficient
info.state = "secure";
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/dbec6cf…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/dbec6cf…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-update-responses][main] alpha: new version, 12.5a6
by richard (@richard) 24 May '23
by richard (@richard) 24 May '23
24 May '23
richard pushed to branch main at The Tor Project / Applications / Tor Browser update responses
Commits:
6dc9b712 by Richard Pospesel at 2023-05-24T20:20:54+00:00
alpha: new version, 12.5a6
- - - - -
30 changed files:
- update_3/alpha/.htaccess
- − update_3/alpha/12.5a4-12.5a5-linux32-ALL.xml
- − update_3/alpha/12.5a4-12.5a5-linux64-ALL.xml
- − update_3/alpha/12.5a4-12.5a5-macos-ALL.xml
- − update_3/alpha/12.5a4-12.5a5-win32-ALL.xml
- − update_3/alpha/12.5a4-12.5a5-win64-ALL.xml
- + update_3/alpha/12.5a4-12.5a6-linux32-ALL.xml
- + update_3/alpha/12.5a4-12.5a6-linux64-ALL.xml
- + update_3/alpha/12.5a4-12.5a6-macos-ALL.xml
- + update_3/alpha/12.5a4-12.5a6-win32-ALL.xml
- + update_3/alpha/12.5a4-12.5a6-win64-ALL.xml
- + update_3/alpha/12.5a5-12.5a6-linux32-ALL.xml
- + update_3/alpha/12.5a5-12.5a6-linux64-ALL.xml
- + update_3/alpha/12.5a5-12.5a6-macos-ALL.xml
- + update_3/alpha/12.5a5-12.5a6-win32-ALL.xml
- + update_3/alpha/12.5a5-12.5a6-win64-ALL.xml
- − update_3/alpha/12.5a5-linux32-ALL.xml
- − update_3/alpha/12.5a5-linux64-ALL.xml
- − update_3/alpha/12.5a5-macos-ALL.xml
- − update_3/alpha/12.5a5-win32-ALL.xml
- − update_3/alpha/12.5a5-win64-ALL.xml
- + update_3/alpha/12.5a6-linux32-ALL.xml
- + update_3/alpha/12.5a6-linux64-ALL.xml
- + update_3/alpha/12.5a6-macos-ALL.xml
- + update_3/alpha/12.5a6-win32-ALL.xml
- + update_3/alpha/12.5a6-win64-ALL.xml
- update_3/alpha/download-android-aarch64.json
- update_3/alpha/download-android-armv7.json
- update_3/alpha/download-android-x86.json
- update_3/alpha/download-android-x86_64.json
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][main] Bug 40866: Remove ansible from README
by Pier Angelo Vendrame (@pierov) 24 May '23
by Pier Angelo Vendrame (@pierov) 24 May '23
24 May '23
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
d94b4545 by Nicolas Vigier at 2023-05-24T13:24:07+02:00
Bug 40866: Remove ansible from README
- - - - -
1 changed file:
- README
Changes:
=====================================
README
=====================================
@@ -156,18 +156,9 @@ Automated builds using tbb-testsuite
------------------------------------
The Tor Browser testsuite scripts can also be used to do nightly builds
-and publish the build logs. The recommended way to do that is to use
-the ansible roles from the tools/ansible directory. See next section
-for details.
-
-
-Using ansible to set up a nightly build machine
------------------------------------------------
-
-The directory tools/ansible contains some ansible roles to set up a
-nightly build machine. You can look at the playbook defined in
-boklm-tbb-nightly-build.yml and variables in group_vars/boklm-tbb-nightly/
-for an example of how it can be used.
+and publish the build logs. This page has some information about the
+setup we use for nightly builds:
+https://gitlab.torproject.org/tpo/applications/tor-browser/-/wikis/Nightly_Builds_Setup
Signing builds
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-12.5-1] fixup! Bug 23247: Communicating security expectations for .onion
by Pier Angelo Vendrame (@pierov) 24 May '23
by Pier Angelo Vendrame (@pierov) 24 May '23
24 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
4c0986cb by cypherpunks1 at 2023-05-23T14:06:01-08:00
fixup! Bug 23247: Communicating security expectations for .onion
Bug 33298: Warn when submitting form data from http onion sites over an insecure connection
- - - - -
1 changed file:
- dom/html/HTMLFormElement.cpp
Changes:
=====================================
dom/html/HTMLFormElement.cpp
=====================================
@@ -893,7 +893,10 @@ nsresult HTMLFormElement::DoSecureToInsecureSubmitCheck(nsIURI* aActionURL,
formIsHTTPS = OwnerDoc()->GetDocumentURI()->SchemeIs("https");
}
if (!formIsHTTPS) {
- return NS_OK;
+ bool formIsOnion = nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(OwnerDoc()->GetDocumentURI());
+ if (!formIsOnion) {
+ return NS_OK;
+ }
}
if (nsMixedContentBlocker::IsPotentiallyTrustworthyLoopbackURL(aActionURL)) {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4c0986c…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/4c0986c…
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-12.5a6-build1
by richard (@richard) 23 May '23
by richard (@richard) 23 May '23
23 May '23
richard pushed new tag tbb-12.5a6-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][main] Bug 40843: Prepare Tor Browser Alpha 12.5a6
by richard (@richard) 23 May '23
by richard (@richard) 23 May '23
23 May '23
richard pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
63dce0f8 by Pier Angelo Vendrame at 2023-05-23T09:21:54+02:00
Bug 40843: Prepare Tor Browser Alpha 12.5a6
- - - - -
10 changed files:
- projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
- projects/browser/allowed_addons.json
- projects/browser/config
- projects/firefox/config
- projects/geckoview/config
- projects/go/config
- projects/manual/config
- projects/translation/config
- rbm.conf
- tools/fetch-changelogs.py
Changes:
=====================================
projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
=====================================
@@ -1,3 +1,57 @@
+Tor Browser 12.5a6 - May 22 2023
+ * All Platforms
+ * Updated Translations
+ * Updated Go to 11.9.9
+ * Bug 40860: Improve the transition from the old fontconfig file to the new one [tor-browser-build]
+ * Bug 41728: Pin bridges.torproject.org domains to Let's Encrypt's root cert public key [tor-browser]
+ * Bug 41738: Replace the patch to disable live reload with its preference [tor-browser]
+ * Bug 41757: Rebase Tor Browser Alpha to 102.11.0esr [tor-browser]
+ * Bug 41763: TTP-02-003 WP1: Data URI allows JS execution despite safest security level (Low) [tor-browser]
+ * Bug 41764: TTP-02-004 OOS: No user-activation required to download files (Low) [tor-browser]
+ * Bug 41775: Avoid re-defining some macros in nsUpdateDriver.cpp [tor-browser]
+ * Windows + macOS + Linux
+ * Updated Firefox to 102.11esr
+ * Bug 41607: Update "New Circuit" icon [tor-browser]
+ * Bug 41736: Customize the default CustomizableUI toolbar using CustomizableUI.jsm [tor-browser]
+ * Bug 41770: Keyboard navigation broken leaving the toolbar tor circuit button [tor-browser]
+ * Bug 41777: Internally shippped manual does not adapt to RTL languages (it always align to the left) [tor-browser]
+ * Windows + Linux
+ * Bug 41654: UpdateInfo jumped into Data [tor-browser]
+ * Linux
+ * Bug 41732: implement linux font whitelist as defense-in-depth [tor-browser]
+ * Bug 41776: System fonts are temporarily leaked on Linux after the browser is updated from 12.5a4 or earlier [tor-browser]
+ * Android
+ * Updated GeckoView to 102.11esr
+ * Build System
+ * All Platforms
+ * Bug 33953: Provide a way for easily updating Go dependencies of projects [tor-browser-build]
+ * Bug 40673: Avoid building each go module separately [tor-browser-build]
+ * Bug 40818: Enable wasm target for rust compiler [tor-browser-build]
+ * Bug 40841: Adapt signing scripts to new signing machines [tor-browser-build]
+ * Bug 40849: Move Go dependencies to the projects dependent on them, not as a standalone projects [tor-browser-build]
+ * Bug 40856: Unblock nightly builds [tor-browser-build]
+ * Windows
+ * Bug 40846: Temporarily disable Windows signing [tor-browser-build]
+
+Tor Browser 12.0.6 - May 09 2023
+ * All Platforms
+ * Updated Translations
+ * Updated Go to 11.9.9
+ * Bug 41728: Pin bridges.torproject.org domains to Let's Encrypt's root cert public key [tor-browser]
+ * Bug 41756: Rebase Tor Browser Stable to 102.11.0esr [tor-browser]
+ * Windows + macOS + Linux
+ * Updated Firefox to 102.11esr
+ * Bug 40501: High CPU load after tor exits unexpectedly [tor-browser]
+ * Windows
+ * Bug 41683: Disable the network process on Windows [tor-browser]
+ * Android
+ * Updated GeckoView to 102.11esr
+ * Build System
+ * Windows + macOS + Linux
+ * Bug 41730: Bridge lines in tools/torbrowser/bridges.js out of date [tor-browser]
+ * macOS
+ * Bug 40844: Fix DMG reproducibility problem on 12.0.5 [tor-browser-build]
+
Tor Browser 12.5a5 - April 18 2023
* All Platforms
* Updated Translations
=====================================
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": 970562,
+ "average_daily_users": 988302,
"categories": {
"android": [
"experimental",
@@ -221,10 +221,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.5575,
- "bayesian_average": 4.55632411125665,
- "count": 4956,
- "text_count": 1572
+ "average": 4.5608,
+ "bayesian_average": 4.559632030468385,
+ "count": 5005,
+ "text_count": 1581
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/",
"requires_payment": false,
@@ -321,7 +321,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": 25917
+ "weekly_downloads": 24550
},
"notes": null
},
@@ -337,7 +337,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/56/7656/6937656/6937656.png?…"
}
],
- "average_daily_users": 258016,
+ "average_daily_users": 258950,
"categories": {
"android": [
"security-privacy"
@@ -553,10 +553,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.8168,
- "bayesian_average": 4.81213034274172,
- "count": 1332,
- "text_count": 235
+ "average": 4.8136,
+ "bayesian_average": 4.808937485557134,
+ "count": 1336,
+ "text_count": 237
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/",
"requires_payment": false,
@@ -641,7 +641,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": 3798
+ "weekly_downloads": 3514
},
"notes": null
},
@@ -657,7 +657,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/73/4073/5474073/5474073.png?…"
}
],
- "average_daily_users": 1125722,
+ "average_daily_users": 1133122,
"categories": {
"android": [
"security-privacy"
@@ -669,7 +669,7 @@
"contributions_url": "https://paypal.me/SupportEFF?utm_content=product-page-contribute&utm_medium…",
"created": "2014-05-01T18:23:16Z",
"current_version": {
- "id": 5520250,
+ "id": 5564707,
"compatibility": {
"firefox": {
"min": "60.0",
@@ -680,7 +680,7 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/privacy-badger17/versions…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/privacy-badger17/versions…",
"is_strict_compatibility_enabled": false,
"license": {
"id": 6,
@@ -691,22 +691,22 @@
"url": "http://www.gnu.org/licenses/gpl-3.0.html"
},
"release_notes": {
- "en-US": "<ul><li>Added a note to the popup to explain that if you would like to log into websites with your Google account, you need to fully allow <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/361ac6552f690217a6c9f0…" rel=\"nofollow\">accounts.google.com</a></li><li>Added dark theme support to widget replacement placeholders</li><li>Fixed blocking service worker-initiated requests in Chrome</li><li>Fixed various site breakages</li><li>Added Hindi translations</li><li>Improved Traditional Chinese translations</li></ul>"
+ "en-US": "<ul><li>Expanded protection for \"cookieblocked\" (slider set to yellow) domains. These domains are allowed to load without access to cookies, as a compromise to avoid breaking websites. However, sometimes the same domain is used to serve both unobjectionable content as well as obnoxious fingerprinters that do not need cookies to track your browsing. Privacy Badger will now fully block these fingerprinters.</li><li>Disabled Google's Topics API by default. The Topics API replaces Federated Learning of Cohorts (FLoC).</li><li>You can now see where Privacy Badger observed tracking by a given domain by clicking on the domain name in the list of tracking domains on the options page</li><li>Fixed various site breakages</li><li>Added Vietnamese translations</li><li>Improved translations (Finnish, French, Hebrew, Persian, European Portuguese, Russian, Spanish)</li></ul>"
},
- "reviewed": "2023-02-02T18:47:37Z",
- "version": "2023.1.31",
+ "reviewed": "2023-05-16T10:58:52Z",
+ "version": "2023.5.10",
"files": [
{
- "id": 4064595,
- "created": "2023-01-31T16:05:01Z",
- "hash": "sha256:0082d8ffe7b25f370a313d9b899b0c1ba1669b21b3a11791fe5ecf031aeb6a6c",
+ "id": 4109050,
+ "created": "2023-05-10T19:28:15Z",
+ "hash": "sha256:8ff7650d1ce133894293d1a3e268bb24d300e77a1c25488ed17846e71d8b33e8",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 1834581,
+ "size": 1975567,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/4064595/privacy_badger17-…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4109050/privacy_badger17-…",
"permissions": [
"tabs",
"http://*/*",
@@ -1134,7 +1134,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2023-02-02T18:47:37Z",
+ "last_updated": "2023-05-16T10:58:52Z",
"name": {
"en-US": "Privacy Badger"
},
@@ -1180,10 +1180,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.8005,
- "bayesian_average": 4.797701870245844,
- "count": 2215,
- "text_count": 428
+ "average": 4.802,
+ "bayesian_average": 4.79921587479466,
+ "count": 2232,
+ "text_count": 426
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/",
"requires_payment": false,
@@ -1207,7 +1207,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": 22431
+ "weekly_downloads": 18346
},
"notes": null
},
@@ -1223,7 +1223,7 @@
"picture_url": null
}
],
- "average_daily_users": 6247825,
+ "average_daily_users": 6410036,
"categories": {
"android": [
"security-privacy"
@@ -1235,7 +1235,7 @@
"contributions_url": "",
"created": "2015-04-25T07:26:22Z",
"current_version": {
- "id": 5547815,
+ "id": 5558705,
"compatibility": {
"firefox": {
"min": "78.0",
@@ -1246,7 +1246,7 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/55…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/ublock-origin/versions/55…",
"is_strict_compatibility_enabled": false,
"license": {
"id": 6,
@@ -1257,22 +1257,22 @@
"url": "http://www.gnu.org/licenses/gpl-3.0.html"
},
"release_notes": {
- "en-US": "See complete release notes for <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/9ba5436deff955b8634d3a…" rel=\"nofollow\">1.48.4</a>.\n\n<b>Fixes / changes</b>\n\n<ul><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/2881e29d212046e14a4f20…" rel=\"nofollow\">Fix presumed network filter not being a valid network filter</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/1d29de8f605dc6f4b7684f…" rel=\"nofollow\">Avoid using ! toolbar icon badge when inconsequential</a><ul><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/04728b2f874e135c8736ae…" rel=\"nofollow\">Clear unprocessed requests status on webNavigation reload event</a></li></ul></li></ul>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/e34f62492a00e2b8a221ca…" rel=\"nofollow\">Commits history since last version</a>."
+ "en-US": "See complete release notes for <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/24794abbbc5c8930eafab3…" rel=\"nofollow\">1.49.2</a>.\n\n<b>Fixes</b>\n\n<ul><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/812da480d7e6e2fa7d6fd1…" rel=\"nofollow\">Reverse usage of browser.alarms</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/53eab9764901466ecb7c1c…" rel=\"nofollow\">Mind rejected promises from vAPI.storage API</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/58bde6ecd0ff76608c1456…" rel=\"nofollow\">Properly handle promise rejection from webext.storage.local API</a></li><li><a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/3f0e0640ef4983e8fd2352…" rel=\"nofollow\">Add more checks against unexpected conditions re. assets.json</a></li></ul>\n<a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/deebdaa7a15172babdad3e…" rel=\"nofollow\">Commits history since last version</a>."
},
- "reviewed": "2023-04-05T17:12:25Z",
- "version": "1.48.4",
+ "reviewed": "2023-05-03T16:26:03Z",
+ "version": "1.49.2",
"files": [
{
- "id": 4092158,
- "created": "2023-04-01T21:20:42Z",
- "hash": "sha256:d7666b963c2969b0014937aae55472eea5098ff21ed3bea8a2e1f595f62856c1",
+ "id": 4103048,
+ "created": "2023-04-26T14:37:33Z",
+ "hash": "sha256:39266486f720cd31d291d2fdad78625b079782a05517e1936eec7e780bc2a84d",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 3343703,
+ "size": 3383174,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/4092158/ublock_origin-1.4…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4103048/ublock_origin-1.4…",
"permissions": [
"dns",
"menus",
@@ -1388,7 +1388,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2023-04-16T15:40:30Z",
+ "last_updated": "2023-05-21T19:05:37Z",
"name": {
"ar": "uBlock Origin",
"bg": "uBlock Origin",
@@ -1533,10 +1533,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.7805,
- "bayesian_average": 4.780095724686764,
- "count": 15264,
- "text_count": 3968
+ "average": 4.7807,
+ "bayesian_average": 4.780299334467883,
+ "count": 15437,
+ "text_count": 4014
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/",
"requires_payment": false,
@@ -1598,7 +1598,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": 132315
+ "weekly_downloads": 131360
},
"notes": null
},
@@ -1614,19 +1614,20 @@
"picture_url": null
}
],
- "average_daily_users": 159848,
+ "average_daily_users": 168477,
"categories": {
"android": [
"photos-media"
],
"firefox": [
- "games-entertainment"
+ "games-entertainment",
+ "photos-music-videos"
]
},
"contributions_url": "",
"created": "2017-05-03T08:36:43Z",
"current_version": {
- "id": 5220332,
+ "id": 5560463,
"compatibility": {
"firefox": {
"min": "42.0",
@@ -1637,7 +1638,7 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/video-background-play-fix…",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/video-background-play-fix…",
"is_strict_compatibility_enabled": false,
"license": {
"id": 22,
@@ -1648,24 +1649,24 @@
"url": "http://www.opensource.org/license/mit"
},
"release_notes": {
- "de": "Experimentelle Verbesserungen der Handhabung von Youtube.",
- "en-US": "Experimental improvement of Youtube handling.",
- "ro": "Îmbunătățiri experimentale pentru Youtube."
+ "de": "Neue Übersetzungen ergänzt",
+ "en-US": "Added new translations",
+ "ro": "Adăugat traduceri noi"
},
- "reviewed": "2021-04-23T07:50:05Z",
- "version": "1.6.0",
+ "reviewed": "2023-05-05T14:25:10Z",
+ "version": "1.7.0",
"files": [
{
- "id": 3764692,
- "created": "2021-04-22T21:46:53Z",
- "hash": "sha256:73cfa682e0398ca1b51890340e4a6df3fcea945f54e9e677e9db942152aa614d",
+ "id": 4104806,
+ "created": "2023-05-01T11:53:35Z",
+ "hash": "sha256:e8713a1720ffba236c40ebabd5ac1db88702d75c21edc23d61216a5897b3792a",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 12088,
+ "size": 12968,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/3764692/video_background_…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4104806/video_background_…",
"permissions": [
"*://*.youtube.com/*",
"*://*.youtube-nocookie.com/*",
@@ -1678,9 +1679,9 @@
},
"default_locale": "en-US",
"description": {
- "de": "ACHTUNG: Im neuen Firefox für Android (Version 79 und neuer) funktioniert Videowiedergabe im Hintergrund erst <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/05bb7b1ef7f63358eeabcd…" rel=\"nofollow\">ab Firefox 82</a> korrekt.\n\nUnterstützt momentan folgende Seiten:\n<ul><li>Youtube</li><li>Vimeo (Wiedergabe nicht unterbrechen wenn Vollbildmodus beendet wird)</li></ul>",
- "en-US": "ATTENTION: With the new Firefox on Android (Firefox 79 and newer), background playback only properly works starting <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/05bb7b1ef7f63358eeabcd…" rel=\"nofollow\">from Firefox 82</a>.\n\nThe following pages are currently supported:\n<ul><li>Youtube</li><li>Vimeo (don't stop playback when existing fullscreen)</li></ul>",
- "ro": "ATENȚIE: În noul Firefox pentru Android (versiunea 79+), redarea video în fundal funcționează corect abia de la <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/05bb7b1ef7f63358eeabcd…" rel=\"nofollow\">Firefox 82</a>.\n\nÎn prezent este compatibil cu următoarele site-uri:\n<ul><li>Youtube</li><li>Vimeo (nu întrerupeți redarea atunci când ieșiți din modul fullscreen)</li></ul>"
+ "de": "Unterstützt momentan folgende Seiten:\n<ul><li>Youtube</li><li>Vimeo (Wiedergabe nicht unterbrechen wenn Vollbildmodus beendet wird)</li></ul>",
+ "en-US": "The following pages are currently supported:\n<ul><li>Youtube</li><li>Vimeo (don't stop playback when existing fullscreen)</li></ul>",
+ "ro": "În prezent este compatibil cu următoarele site-uri:\n<ul><li>Youtube</li><li>Vimeo (nu întrerupeți redarea atunci când ieșiți din modul fullscreen)</li></ul>"
},
"developer_comments": null,
"edit_url": "https://addons.mozilla.org/en-US/developers/addon/video-background-play-fix…",
@@ -1698,7 +1699,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2021-04-23T07:50:05Z",
+ "last_updated": "2023-05-05T14:25:10Z",
"name": {
"de": "Videowiedergabe im Hintergrund",
"en-US": "Video Background Play Fix",
@@ -1712,10 +1713,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4964,
- "bayesian_average": 4.4911928855659555,
- "count": 1100,
- "text_count": 407
+ "average": 4.4875,
+ "bayesian_average": 4.482377575890338,
+ "count": 1118,
+ "text_count": 418
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…",
"requires_payment": false,
@@ -1737,7 +1738,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": 366
+ "weekly_downloads": 387
},
"notes": null
},
@@ -1753,7 +1754,7 @@
"picture_url": null
}
],
- "average_daily_users": 88484,
+ "average_daily_users": 88341,
"categories": {
"android": [
"experimental",
@@ -1866,9 +1867,9 @@
],
"promoted": null,
"ratings": {
- "average": 4.3668,
- "bayesian_average": 4.352941163663537,
- "count": 398,
+ "average": 4.37,
+ "bayesian_average": 4.356186612333998,
+ "count": 400,
"text_count": 112
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/reviews/",
@@ -1891,7 +1892,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": 1034
+ "weekly_downloads": 1535
},
"notes": null
},
@@ -1907,7 +1908,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/64/9064/12929064/12929064.pn…"
}
],
- "average_daily_users": 258622,
+ "average_daily_users": 262509,
"categories": {
"android": [
"photos-media",
@@ -2126,10 +2127,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.6538,
- "bayesian_average": 4.64901646767579,
- "count": 1248,
- "text_count": 241
+ "average": 4.6537,
+ "bayesian_average": 4.648959055095389,
+ "count": 1262,
+ "text_count": 242
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/",
"requires_payment": false,
@@ -2150,7 +2151,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": 4497
+ "weekly_downloads": 3984
},
"notes": null
},
@@ -2173,7 +2174,7 @@
"picture_url": null
}
],
- "average_daily_users": 109747,
+ "average_daily_users": 111302,
"categories": {
"android": [
"other"
@@ -2456,10 +2457,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4449,
- "bayesian_average": 4.440238588001734,
- "count": 1207,
- "text_count": 321
+ "average": 4.4439,
+ "bayesian_average": 4.439229613376027,
+ "count": 1212,
+ "text_count": 322
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/",
"requires_payment": false,
@@ -2479,7 +2480,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": 31
+ "weekly_downloads": 32
},
"notes": null
},
@@ -2495,7 +2496,7 @@
"picture_url": "https://addons.mozilla.org/user-media/userpics/43/0143/143/143.png?modified…"
}
],
- "average_daily_users": 312295,
+ "average_daily_users": 314158,
"categories": {
"android": [
"performance",
@@ -2509,7 +2510,7 @@
"contributions_url": "https://www.paypal.com/donate/?hosted_button_id=9ERKTU5MBH4EW&utm_content=p…",
"created": "2005-05-13T10:51:32Z",
"current_version": {
- "id": 5546627,
+ "id": 5566736,
"compatibility": {
"firefox": {
"min": "59.0",
@@ -2520,7 +2521,7 @@
"max": "*"
}
},
- "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5546627",
+ "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5566736",
"is_strict_compatibility_enabled": false,
"license": {
"id": 13,
@@ -2531,22 +2532,22 @@
"url": "http://www.gnu.org/licenses/gpl-2.0.html"
},
"release_notes": {
- "en-US": "v 11.4.21\n============================================================\nx Fixed mislabeled Tor Browser settings override option\nx [L10n] Updated mk"
+ "en-US": "v 11.4.22\n============================================================\nx [L10n] Updated uk\nx Consistently apply DEFAULT policy to top-level data: URLs"
},
- "reviewed": "2023-04-04T12:01:03Z",
- "version": "11.4.21",
+ "reviewed": "2023-05-18T09:07:59Z",
+ "version": "11.4.22",
"files": [
{
- "id": 4090970,
- "created": "2023-03-30T09:39:24Z",
- "hash": "sha256:0fd3b66a2780d03a5b3cd460216105f3df2b27c6d3a552c1769c5de48c9e2338",
+ "id": 4111078,
+ "created": "2023-05-15T08:32:54Z",
+ "hash": "sha256:46a84c85df4c6be11905388ad2b66aeb5a010ed615484112c8c1710ad13bc36e",
"is_restart_required": false,
"is_webextension": true,
"is_mozilla_signed_extension": false,
"platform": "all",
- "size": 951542,
+ "size": 948900,
"status": "public",
- "url": "https://addons.mozilla.org/firefox/downloads/file/4090970/noscript-11.4.21.…",
+ "url": "https://addons.mozilla.org/firefox/downloads/file/4111078/noscript-11.4.22.…",
"permissions": [
"contextMenus",
"storage",
@@ -2613,7 +2614,7 @@
},
"is_disabled": false,
"is_experimental": false,
- "last_updated": "2023-04-04T12:01:03Z",
+ "last_updated": "2023-05-21T21:36:00Z",
"name": {
"de": "NoScript",
"el": "NoScript",
@@ -2685,10 +2686,10 @@
"category": "recommended"
},
"ratings": {
- "average": 4.4117,
- "bayesian_average": 4.40897409082447,
- "count": 2055,
- "text_count": 798
+ "average": 4.4074,
+ "bayesian_average": 4.404687188031893,
+ "count": 2067,
+ "text_count": 803
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/",
"requires_payment": false,
@@ -2732,7 +2733,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": 8021
+ "weekly_downloads": 7591
},
"notes": null
},
@@ -2748,7 +2749,7 @@
"picture_url": null
}
],
- "average_daily_users": 146192,
+ "average_daily_users": 151904,
"categories": {
"android": [
"performance",
@@ -2863,10 +2864,10 @@
"category": "recommended"
},
"ratings": {
- "average": 3.9109,
- "bayesian_average": 3.9065939897765096,
- "count": 1122,
- "text_count": 397
+ "average": 3.9026,
+ "bayesian_average": 3.898323122758472,
+ "count": 1129,
+ "text_count": 401
},
"ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…",
"requires_payment": false,
@@ -2885,7 +2886,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": 1829
+ "weekly_downloads": 1860
},
"notes": null
}
=====================================
projects/browser/config
=====================================
@@ -103,9 +103,9 @@ input_files:
enable: '[% ! c("var/android") %]'
- filename: Bundle-Data
enable: '[% ! c("var/android") %]'
- - URL: https://addons.mozilla.org/firefox/downloads/file/4090970/noscript-11.4.21.…
+ - URL: https://addons.mozilla.org/firefox/downloads/file/4111078/noscript-11.4.22.…
name: noscript
- sha256sum: 0fd3b66a2780d03a5b3cd460216105f3df2b27c6d3a552c1769c5de48c9e2338
+ sha256sum: 46a84c85df4c6be11905388ad2b66aeb5a010ed615484112c8c1710ad13bc36e
- URL: https://addons.mozilla.org/firefox/downloads/file/4079064/ublock_origin-1.4…
name: ublock-origin
sha256sum: a35a6c8758ba74616afc09648c96d74ec2e7d27fe30f311d1db6e9a4966e7858
=====================================
projects/firefox/config
=====================================
@@ -11,7 +11,7 @@ container:
use_container: 1
var:
- firefox_platform_version: 102.10.0
+ firefox_platform_version: 102.11.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
browser_series: '12.5'
browser_branch: '[% c("var/browser_series") %]-1'
=====================================
projects/geckoview/config
=====================================
@@ -11,7 +11,7 @@ container:
use_container: 1
var:
- geckoview_version: 102.10.0esr
+ geckoview_version: 102.11.0esr
browser_branch: 12.5-1
browser_build: 3
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
=====================================
projects/go/config
=====================================
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 1.19.8
+version: 1.19.9
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
container:
use_container: 1
@@ -121,7 +121,7 @@ input_files:
enable: '[% ! c("var/linux") %]'
- URL: 'https://golang.org/dl/go[% c("version") %].src.tar.gz'
name: go
- sha256sum: 1d7a67929dccafeaf8a29e55985bc2b789e0499cb1a17100039f084e3238da2f
+ sha256sum: 131190a4697a70c5b1d232df5d3f55a3f9ec0e78e40516196ffb3f09ae6a5744
- URL: 'https://golang.org/dl/go[% c("var/go14_version") %].src.tar.gz'
name: go14
sha256sum: 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
=====================================
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: 74065
+version: 79869
filename: 'manual-[% c("version") %]-[% c("var/build_id") %].tar.gz'
container:
use_container: 1
@@ -17,8 +17,8 @@ var:
input_files:
- project: container-image
- - URL: 'https://people.torproject.org/~richard/tbb_files/manual_[% c("version") %].zip'
+ - URL: 'https://people.torproject.org/~pierov/tbb_files/manual_[% c("version") %].zip'
name: manual
- sha256sum: 788c2dc2bfacbc6961ce443c5639706cc23fbb7b7730ed7f71a26396511305be
+ sha256sum: ee4c6e4ce4998736ae44dc3e6f92875a481b9e03860517764ea9af6c2bba24e0
- filename: packagemanual.py
name: package_script
=====================================
projects/translation/config
=====================================
@@ -6,19 +6,19 @@ version: '[% c("abbrev") %]'
steps:
base-browser:
base-browser: '[% INCLUDE build %]'
- git_hash: 97c76d5183b16b069e66feaaf10e00c1d2c7d9e0
+ git_hash: f1f1204c2421db64ae3d30be31a4d7819b9a3e42
targets:
nightly:
git_hash: 'base-browser'
base-browser-fluent:
base-browser-fluent: '[% INCLUDE build %]'
- git_hash: e016c52705a2663309a7b05b05ac93002eab3ed0
+ git_hash: 3167fc379caac406941ae4fce429c302fd1a6d5d
targets:
nightly:
git_hash: 'basebrowser-newidentityftl'
tor-browser:
tor-browser: '[% INCLUDE build %]'
- git_hash: 69273c40343bd6f8f125109ddac9d949d7bcb605
+ git_hash: 7089eb9ac06e0f6de99c386a09821c8799849206
targets:
nightly:
git_hash: 'tor-browser'
@@ -26,7 +26,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: 0deec2a78dea0013e8c4eaec1d40ef5aac4e43b0
+ git_hash: 65def475aa000981ac3c1b6db203e8e707f72e16
targets:
nightly:
git_hash: 'fenix-torbrowserstringsxml'
=====================================
rbm.conf
=====================================
@@ -94,10 +94,11 @@ buildconf:
git_signtag_opt: '-s'
var:
- torbrowser_version: '12.5a5'
+ torbrowser_version: '12.5a6'
torbrowser_build: 'build1'
torbrowser_incremental_from:
- 12.5a4
+ - 12.5a5
updater_enabled: 1
build_mar: 1
mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]'
=====================================
tools/fetch-changelogs.py
=====================================
@@ -111,15 +111,19 @@ if r.status_code == 401:
print("Unauthorized! Has your token expired?")
sys.exit(3)
issue = None
+issues = []
for i in r.json():
if i["title"].find(sys.argv[1]) != -1:
- if issue is None:
- issue = i
- else:
- print("More than one matching issue found!")
- print("Please use the issue id.")
- sys.exit(4)
-if not issue:
+ issues.append(i)
+if len(issues) == 1:
+ issue = issues[0]
+elif len(issues) > 1:
+ print("More than one matching issue found:")
+ for idx, i in enumerate(issues):
+ print(f" {idx + 1}) #{i['iid']} - {i['title']}")
+ print("Please use the issue id.")
+ sys.exit(4)
+else:
iid = version
version = None
if iid[0] == "#":
@@ -161,8 +165,9 @@ for issues in linked:
print(f" * {issues[0].get_platforms()}")
for i in issues:
print(f" * {i}")
-print(" * Build System")
-for issues in linked_build:
- print(f" * {issues[0].get_platforms()}")
- for i in issues:
- print(f" * {i}")
+if linked_build:
+ print(" * Build System")
+ for issues in linked_build:
+ print(f" * {issues[0].get_platforms()}")
+ for i in issues:
+ print(f" * {i}")
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6…
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-102.11.0esr-12.5-1-build3
by Pier Angelo Vendrame (@pierov) 23 May '23
by Pier Angelo Vendrame (@pierov) 23 May '23
23 May '23
Pier Angelo Vendrame pushed new tag tor-browser-102.11.0esr-12.5-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][tor-browser-102.11.0esr-12.5-1] fixup! Bug 41668: Tweaks to the Base Browser updater for Tor Browser
by Pier Angelo Vendrame (@pierov) 23 May '23
by Pier Angelo Vendrame (@pierov) 23 May '23
23 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
d9327485 by Pier Angelo Vendrame at 2023-05-23T09:07:24+02:00
fixup! Bug 41668: Tweaks to the Base Browser updater for Tor Browser
Bug 41776 (fix): Added some missing lines to the previous patch
- - - - -
1 changed file:
- tools/update-packaging/make_incremental_update.sh
Changes:
=====================================
tools/update-packaging/make_incremental_update.sh
=====================================
@@ -222,6 +222,10 @@ for ((i=0; $i<$num_oldfiles; i=$i+1)); do
if check_for_add_if_update "$f"; then
# TODO: Remove once we do a watershed release
+ # The full workdir may not exist yet, so create it if necessary.
+ mkdir -p `dirname "$workdir/$f"`
+ $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force --stdout "$newdir/$f" > "$workdir/$f"
+ copy_perm "$newdir/$f" "$workdir/$f"
make_add_if_instruction "$f" "$updatemanifestv3"
archivefiles="$archivefiles \"$f\""
continue 1
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d932748…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d932748…
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-102.11.0esr-12.5-1-build2
by Pier Angelo Vendrame (@pierov) 22 May '23
by Pier Angelo Vendrame (@pierov) 22 May '23
22 May '23
Pier Angelo Vendrame pushed new tag tor-browser-102.11.0esr-12.5-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/tor-browser][tor-browser-102.11.0esr-12.5-1] 2 commits: fixup! Bug 41668: Tweaks to the Base Browser updater for Tor Browser
by Pier Angelo Vendrame (@pierov) 22 May '23
by Pier Angelo Vendrame (@pierov) 22 May '23
22 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
f115af33 by Pier Angelo Vendrame at 2023-05-22T10:36:55+02:00
fixup! Bug 41668: Tweaks to the Base Browser updater for Tor Browser
Bug 41776: Keep shipping the old fontconfig file until users have one
- - - - -
5ec55d20 by Pier Angelo Vendrame at 2023-05-22T10:36:56+02:00
fixup! Firefox preference overrides.
Bug 41732: Use font.system.whitelist also on Linux as a defense-in-depth
- - - - -
4 changed files:
- browser/app/profile/001-base-profile.js
- tools/update-packaging/common.sh
- tools/update-packaging/make_full_update.sh
- tools/update-packaging/make_incremental_update.sh
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -700,6 +700,8 @@ pref("font.name-list.monospace.x-unicode", "Consolas, Noto Sans Balinese, Noto S
#endif
#ifdef XP_LINUX
+pref("font.system.whitelist", "Arimo, Cousine, Noto Naskh Arabic, Noto Sans Adlam, Noto Sans Armenian, Noto Sans Balinese, Noto Sans Bamum, Noto Sans Bassa Vah, Noto Sans Batak, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Buhid, Noto Sans Canadian Aboriginal, Noto Sans Chakma, Noto Sans Cham, Noto Sans Cherokee, Noto Sans Coptic, Noto Sans Deseret, Noto Sans Devanagari, Noto Sans Elbasan, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Grantha, Noto Sans Gujarati, Noto Sans Gunjala Gondi, Noto Sans Gurmukhi, Noto Sans Hanifi Rohingya, Noto Sans Hanunoo, Noto Sans Hebrew, Noto Sans JP, Noto Sans Javanese, Noto Sans KR, Noto Sans Kannada, Noto Sans Kayah Li, Noto Sans Khmer, Noto Sans Khojki, Noto Sans Khudawadi, Noto Sans Lao, Noto Sans Lepcha, Noto Sans Limbu, Noto Sans Lisu, Noto Sans Mahajani, Noto Sans Malayalam, Noto Sans Mandaic, Noto Sans Masaram Gondi, Noto Sans Medefaidrin, Noto Sans Meetei Mayek, Noto Sans Mende Kikakui, Noto Sans Miao, Noto Sans Modi, Noto Sans Mongolian, Noto Sans Mro, Noto Sans Multani, Noto Sans Myanmar, Noto Sans NKo, Noto Sans New Tai Lue, Noto Sans Newa, Noto Sans Ol Chiki, Noto Sans Oriya, Noto Sans Osage, Noto Sans Osmanya, Noto Sans Pahawh Hmong, Noto Sans Pau Cin Hau, Noto Sans Rejang, Noto Sans Runic, Noto Sans SC, Noto Sans Samaritan, Noto Sans Saurashtra, Noto Sans Sharada, Noto Sans Shavian, Noto Sans Sinhala, Noto Sans Sora Sompeng, Noto Sans Soyombo, Noto Sans Sundanese, Noto Sans Syloti Nagri, Noto Sans Symbols, Noto Sans Symbols2, Noto Sans Syriac, Noto Sans TC, Noto Sans Tagalog, Noto Sans Tagbanwa, Noto Sans Tai Le, Noto Sans Tai Tham, Noto Sans Tai Viet, Noto Sans Takri, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tifinagh, Noto Sans Tifinagh APT, Noto Sans Tifinagh Adrar, Noto Sans Tifinagh Agraw Imazighen, Noto Sans Tifinagh Ahaggar, Noto Sans Tifinagh Air, Noto Sans Tifinagh Azawagh, Noto Sans Tifinagh Ghat, Noto Sans Tifinagh Hawad, Noto Sans Tifinagh Rhissa Ixa, Noto Sans Tifinagh SIL, Noto Sans Tifinagh Tawellemmet, Noto Sans Tirhuta, Noto Sans Vai, Noto Sans Wancho, Noto Sans Warang Citi, Noto Sans Yi, Noto Sans Zanabazar Square, Noto Serif Armenian, Noto Serif Balinese, Noto Serif Bengali, Noto Serif Devanagari, Noto Serif Dogra, Noto Serif Ethiopic, Noto Serif Georgian, Noto Serif Grantha, Noto Serif Gujarati, Noto Serif Gurmukhi, Noto Serif Hebrew, Noto Serif Hmong Nyiakeng, Noto Serif Kannada, Noto Serif Khmer, Noto Serif Khojki, Noto Serif Lao, Noto Serif Malayalam, Noto Serif Myanmar, Noto Serif Sinhala, Noto Serif Tamil, Noto Serif Telugu, Noto Serif Thai, Noto Serif Tibetan, Noto Serif Yezidi, STIX Math, Tinos, Twemoji Mozilla");
+
// Arabic
pref("font.name-list.serif.ar", "Noto Naskh Arabic, Tinos");
pref("font.name-list.sans-serif.ar", "Noto Naskh Arabic, Arimo");
=====================================
tools/update-packaging/common.sh
=====================================
@@ -108,6 +108,28 @@ make_add_if_not_instruction() {
echo "add-if-not \"$f\" \"$f\"" >> "$filev3"
}
+check_for_add_if_update() {
+ add_if_file_chk="$1"
+
+ # tor-browser#41776: We will remove with the old fontconfig file manually
+ # outside the update process. So, let the updater add the file if there.
+ # TODO: Remove once we do a watershed release.
+ if [ "$add_if_file_chk" = "TorBrowser/Data/fontconfig/fonts.conf" ]; then
+ ## "true" *giggle*
+ return 0;
+ fi
+ ## 'false'... because this is bash. Oh yay!
+ return 1;
+}
+
+make_add_if_instruction() {
+ f="$1"
+ filev3="$2"
+
+ verbose_notice " add-if \"$f\" \"$f\""
+ echo "add-if \"$f\" \"$f\"" >> "$filev3"
+}
+
make_addsymlink_instruction() {
link="$1"
target="$2"
=====================================
tools/update-packaging/make_full_update.sh
=====================================
@@ -106,6 +106,9 @@ for ((i=0; $i<$num_files; i=$i+1)); do
if check_for_add_if_not_update "$f"; then
make_add_if_not_instruction "$f" "$updatemanifestv3"
+ elif check_for_add_if_update "$f"; then
+ # TODO: Remove once we do a watershed release
+ make_add_if_instruction "$f" "$updatemanifestv3"
else
make_add_instruction "$f" "$updatemanifestv3"
fi
=====================================
tools/update-packaging/make_incremental_update.sh
=====================================
@@ -220,6 +220,13 @@ for ((i=0; $i<$num_oldfiles; i=$i+1)); do
continue 1
fi
+ if check_for_add_if_update "$f"; then
+ # TODO: Remove once we do a watershed release
+ make_add_if_instruction "$f" "$updatemanifestv3"
+ archivefiles="$archivefiles \"$f\""
+ continue 1
+ fi
+
if check_for_forced_update "$requested_forced_updates" "$f"; then
# The full workdir may not exist yet, so create it if necessary.
mkdir -p `dirname "$workdir/$f"`
@@ -328,6 +335,9 @@ for ((i=0; $i<$num_newfiles; i=$i+1)); do
if check_for_add_if_not_update "$f"; then
make_add_if_not_instruction "$f" "$updatemanifestv3"
+ elif check_for_add_if_update "$f"; then
+ # TODO: Remove once we do a watershed release
+ make_add_if_instruction "$f" "$updatemanifestv3"
else
make_add_instruction "$f" "$updatemanifestv3"
fi
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/2970a4…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/2970a4…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser-build][main] Bug 40860: Improve the transition from the old fontconfig file to the new one
by Pier Angelo Vendrame (@pierov) 22 May '23
by Pier Angelo Vendrame (@pierov) 22 May '23
22 May '23
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
c78f6080 by Pier Angelo Vendrame at 2023-05-17T19:15:20+02:00
Bug 40860: Improve the transition from the old fontconfig file to the new one
- - - - -
2 changed files:
- projects/browser/RelativeLink/start-browser
- projects/browser/build
Changes:
=====================================
projects/browser/RelativeLink/start-browser
=====================================
@@ -340,6 +340,15 @@ setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'}
# Set up custom bundled fonts. See fonts-conf(5).
export FONTCONFIG_PATH="${HOME}/fontconfig"
export FONTCONFIG_FILE="fonts.conf"
+[% # tor-browser#41776: We cannot make the updater remove this file.
+ # So, let's remove it on this script, since we know that at this point the
+ # browser will not need it anymore.
+ # Remove once we do a watershed release.
+ -%]
+[% IF c("var/tor-browser") -%]
+# Old fontconfig directory, not needed anymore
+rm -Rf "${HOME}/TorBrowser/Data/fontconfig"
+[% END -%]
# Avoid overwriting user's dconf values. Fixes #27903.
export GSETTINGS_BACKEND=memory
=====================================
projects/browser/build
=====================================
@@ -222,6 +222,15 @@ for tbdir in "${TBDIRS[@]}"
do
[% IF c("var/linux") -%]
mv Bundle-Data/linux/Data/fontconfig "$tbdir/"
+ [% IF c("var/tor-browser") -%]
+ # tor-browser#41776: We cannot remove the old fontconfig file with the
+ # updater. So, let's keep it for the mar generation, but remove it from
+ # new packages.
+ # Remove once we do a watershed release.
+ oldfontconfig="$tbdir/TorBrowser/Data/fontconfig"
+ mkdir -p $oldfontconfig
+ cp "$tbdir/fontconfig/fonts.conf" "$oldfontconfig/"
+ [% END -%]
[% END -%]
mkdir -p "$tbdir/$DOCSPATH"
@@ -357,6 +366,12 @@ cd $distdir
[% END -%]
[% IF c("var/linux") %]
+ [% IF c("var/tor-browser") %]
+ # We need the old fontconfig files only when updating from old installations
+ # that include it, but do not add it to new packages!
+ # Remove once we do a watershed release.
+ rm -rf "$TBDIR/TorBrowser/Data/fontconfig"
+ [% END -%]
[% c('tar', {
tar_src => [ '$PKG_DIR' ],
tar_args => '-cJf $OUTDIR/' _ c("var/project-name") _ '-' _ c("var/mar_osname") _ '-' _ c("var/torbrowser_version") _ '_${PKG_LOCALE}.tar.xz',
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][base-browser-102.11.0esr-12.0-1] fixup! Firefox preference overrides.
by richard (@richard) 18 May '23
by richard (@richard) 18 May '23
18 May '23
richard pushed to branch base-browser-102.11.0esr-12.0-1 at The Tor Project / Applications / Tor Browser
Commits:
cfca55d2 by hackademix at 2023-05-18T20:09:37+00:00
fixup! Firefox preference overrides.
tor-browser#41764, prevent automatic download stuffing / DOS
- - - - -
1 changed file:
- browser/app/profile/001-base-profile.js
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -44,6 +44,9 @@ pref("security.nocertdb", true);
pref("browser.download.useDownloadDir", false);
pref("browser.download.manager.addToRecentDocs", false);
+// Prevent download stuffing / DOS (tor-browser#41764)
+pref("browser.download.enable_spam_prevention", true);
+
// Misc privacy: Disk
pref("signon.rememberSignons", false);
pref("browser.formfill.enable", false);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cfca55d…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cfca55d…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-12.0-1] fixup! Firefox preference overrides.
by richard (@richard) 18 May '23
by richard (@richard) 18 May '23
18 May '23
richard pushed to branch tor-browser-102.11.0esr-12.0-1 at The Tor Project / Applications / Tor Browser
Commits:
1a914ae1 by hackademix at 2023-05-18T20:09:05+00:00
fixup! Firefox preference overrides.
tor-browser#41764, prevent automatic download stuffing / DOS
- - - - -
1 changed file:
- browser/app/profile/001-base-profile.js
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -44,6 +44,9 @@ pref("security.nocertdb", true);
pref("browser.download.useDownloadDir", false);
pref("browser.download.manager.addToRecentDocs", false);
+// Prevent download stuffing / DOS (tor-browser#41764)
+pref("browser.download.enable_spam_prevention", true);
+
// Misc privacy: Disk
pref("signon.rememberSignons", false);
pref("browser.formfill.enable", false);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1a914ae…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1a914ae…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][base-browser-102.11.0esr-12.5-1] fixup! Firefox preference overrides.
by richard (@richard) 18 May '23
by richard (@richard) 18 May '23
18 May '23
richard pushed to branch base-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
b937f860 by hackademix at 2023-05-18T20:06:51+00:00
fixup! Firefox preference overrides.
tor-browser#41764, prevent automatic download stuffing / DOS
- - - - -
1 changed file:
- browser/app/profile/001-base-profile.js
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -48,6 +48,9 @@ pref("security.nocertdb", true);
pref("browser.download.useDownloadDir", false);
pref("browser.download.manager.addToRecentDocs", false);
+// Prevent download stuffing / DOS (tor-browser#41764)
+pref("browser.download.enable_spam_prevention", true);
+
// Misc privacy: Disk
pref("signon.rememberSignons", false);
pref("browser.formfill.enable", false);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/b937f86…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/b937f86…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-12.5-1] fixup! Firefox preference overrides.
by richard (@richard) 18 May '23
by richard (@richard) 18 May '23
18 May '23
richard pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
2970a44d by hackademix at 2023-05-18T19:30:57+00:00
fixup! Firefox preference overrides.
- - - - -
1 changed file:
- browser/app/profile/001-base-profile.js
Changes:
=====================================
browser/app/profile/001-base-profile.js
=====================================
@@ -48,6 +48,9 @@ pref("security.nocertdb", true);
pref("browser.download.useDownloadDir", false);
pref("browser.download.manager.addToRecentDocs", false);
+// Prevent download stuffing / DOS (tor-browser#41764)
+pref("browser.download.enable_spam_prevention", true);
+
// Misc privacy: Disk
pref("signon.rememberSignons", false);
pref("browser.formfill.enable", false);
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2970a44…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/2970a44…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-13.0-1] 12 commits: fixup! Bug 40933: Add tor-launcher functionality
by Pier Angelo Vendrame (@pierov) 17 May '23
by Pier Angelo Vendrame (@pierov) 17 May '23
17 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
98e75e48 by Pier Angelo Vendrame at 2023-05-17T10:25:44+02:00
fixup! Bug 40933: Add tor-launcher functionality
Added a newnym function
- - - - -
74e39196 by Pier Angelo Vendrame at 2023-05-17T10:25:52+02:00
fixup! Bug 10760: Integrate TorButton to TorBrowser core
Bug 40938: Moving the domain isolator out of torbutton
- - - - -
0f9ea290 by Arthur Edelstein at 2023-05-17T10:25:53+02: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
- - - - -
14058280 by Pier Angelo Vendrame at 2023-05-17T10:25:53+02:00
fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Refactors to the old JS code.
- - - - -
c94c9662 by Pier Angelo Vendrame at 2023-05-17T10:25:53+02:00
fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Manage NEWNYM here.
- - - - -
994e4ce2 by Pier Angelo Vendrame at 2023-05-17T10:25:54+02:00
fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Removed the XPCOM definition of the domain isolator.
- - - - -
bcabee6b by Pier Angelo Vendrame at 2023-05-17T10:25:54+02:00
fixup! Bug 10760: Integrate TorButton to TorBrowser core
Extract the new identity button from torbutton
- - - - -
16cf26ff by Pier Angelo Vendrame at 2023-05-17T10:36:36+02:00
fixup! Bug 3455: Add DomainIsolator, for isolating circuit by domain.
Actually added the new circuit button.
- - - - -
39b5273c by Pier Angelo Vendrame at 2023-05-17T10:37:31+02:00
fixup! Bug 41600: Add a tor circuit display panel.
Use the new domain isolator interface.
- - - - -
9cd44b23 by Pier Angelo Vendrame at 2023-05-17T10:38:45+02:00
fixup! Bug 40209: Implement Basic Crypto Safety
Use the new domain isolator interface
- - - - -
b27d2320 by Pier Angelo Vendrame at 2023-05-17T10:38:48+02:00
fixup! Bug 10760: Integrate TorButton to TorBrowser core
Remove string changes from Torbutton.
We will add them back in the TorStrings commit.
- - - - -
5b547f81 by Pier Angelo Vendrame at 2023-05-17T10:38:49+02:00
fixup! Add TorStrings module for localization
Add our DTDs where needed.
These changes were originally in the torbutton commit, but I think they
are better fit here, with all the strings files.
- - - - -
15 changed files:
- browser/actors/CryptoSafetyParent.jsm
- browser/base/content/appmenu-viewcache.inc.xhtml
- browser/base/content/browser-menubar.inc
- browser/base/content/browser-sets.inc
- browser/base/content/browser.js
- browser/base/content/navigator-toolbox.inc.xhtml
- browser/components/torcircuit/content/torCircuitPanel.js
- + toolkit/components/tor-launcher/TorDomainIsolator.jsm
- toolkit/components/tor-launcher/TorProtocolService.jsm
- toolkit/components/tor-launcher/TorStartupService.jsm
- toolkit/components/tor-launcher/moz.build
- toolkit/torbutton/chrome/content/torbutton.js
- − toolkit/torbutton/components/domain-isolator.js
- toolkit/torbutton/jar.mn
- toolkit/torbutton/modules/utils.js
Changes:
=====================================
browser/actors/CryptoSafetyParent.jsm
=====================================
@@ -12,6 +12,12 @@ const { XPCOMUtils } = ChromeUtils.import(
"resource://gre/modules/XPCOMUtils.jsm"
);
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorDomainIsolator",
+ "resource://gre/modules/TorDomainIsolator.jsm"
+);
+
XPCOMUtils.defineLazyGetter(this, "cryptoSafetyBundle", () => {
return Services.strings.createBundle(
"chrome://browser/locale/cryptoSafetyPrompt.properties"
@@ -75,7 +81,11 @@ class CryptoSafetyParent extends JSWindowActorParent {
);
if (buttonPressed === 0) {
- this.browsingContext.topChromeWindow.torbutton_new_circuit();
+ const { browsingContext } = this.manager;
+ const browser = browsingContext.embedderElement;
+ if (browser) {
+ TorDomainIsolator.newCircuitForBrowser(browser.ownerGlobal.gBrowser);
+ }
}
}
}
=====================================
browser/base/content/appmenu-viewcache.inc.xhtml
=====================================
@@ -63,9 +63,9 @@
key="new-identity-key"/>
<toolbarbutton id="appMenuNewCircuit"
class="subviewbutton"
- key="torbutton-new-circuit-key"
+ key="new-circuit-key"
label="&torbutton.context_menu.new_circuit_sentence_case;"
- oncommand="torbutton_new_circuit();"/>
+ oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/>
<toolbarseparator/>
<toolbarbutton id="appMenu-bookmarks-button"
class="subviewbutton subviewbutton-nav"
=====================================
browser/base/content/browser-menubar.inc
=====================================
@@ -33,9 +33,9 @@
key="new-identity-key"/>
<menuitem id="menu_newCircuit"
accesskey="&torbutton.context_menu.new_circuit_key;"
- key="torbutton-new-circuit-key"
+ key="new-circuit-key"
label="&torbutton.context_menu.new_circuit;"
- oncommand="torbutton_new_circuit();"/>
+ oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"/>
<menuseparator/>
<menuitem id="menu_openLocation"
hidden="true"
=====================================
browser/base/content/browser-sets.inc
=====================================
@@ -389,5 +389,5 @@
internal="true"/>
#endif
<key id="new-identity-key" modifiers="accel shift" key="U" oncommand="NewIdentityButton.onCommand(event)"/>
- <key id="torbutton-new-circuit-key" modifiers="accel shift" key="L" oncommand="torbutton_new_circuit()"/>
+ <key id="new-circuit-key" modifiers="accel shift" key="L" oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser)"/>
</keyset>
=====================================
browser/base/content/browser.js
=====================================
@@ -80,6 +80,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
TelemetryEnvironment: "resource://gre/modules/TelemetryEnvironment.jsm",
TorConnect: "resource:///modules/TorConnect.jsm",
+ TorDomainIsolator: "resource://gre/modules/TorDomainIsolator.jsm",
Translation: "resource:///modules/translation/TranslationParent.jsm",
UITour: "resource:///modules/UITour.jsm",
UpdateUtils: "resource://gre/modules/UpdateUtils.jsm",
=====================================
browser/base/content/navigator-toolbox.inc.xhtml
=====================================
@@ -557,7 +557,7 @@
<toolbarbutton id="new-circuit-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
label="&torbutton.context_menu.new_circuit;"
- oncommand="torbutton_new_circuit();"
+ oncommand="TorDomainIsolator.newCircuitForBrowser(gBrowser);"
tooltiptext="&torbutton.context_menu.new_circuit;"/>
<toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
=====================================
browser/components/torcircuit/content/torCircuitPanel.js
=====================================
@@ -193,7 +193,7 @@ var gTorCircuitPanel = {
document
.getElementById("tor-circuit-new-circuit")
.addEventListener("command", () => {
- torbutton_new_circuit();
+ TorDomainIsolator.newCircuitForBrowser(gBrowser);
// And hide.
// NOTE: focus should return to the toolbar button, which we expect to
// remain visible during reload.
@@ -415,20 +415,14 @@ var gTorCircuitPanel = {
*/
_updateCurrentBrowser(matchingCredentials = null) {
const browser = gBrowser.selectedBrowser;
- const { getDomainForBrowser } = ChromeUtils.import(
- "resource://torbutton/modules/utils.js"
- );
- const domain = getDomainForBrowser(browser);
+ const domain = TorDomainIsolator.getDomainForBrowser(browser);
// We choose the currentURI, which matches what is shown in the URL bar and
// will match up with the domain.
// In contrast, documentURI corresponds to the shown page. E.g. it could
// point to "about:certerror".
const scheme = browser.currentURI?.scheme;
- const domainIsolator = Cc["@torproject.org/domain-isolator;1"].getService(
- Ci.nsISupports
- ).wrappedJSObject;
- let credentials = domainIsolator.getSocksProxyCredentials(
+ let credentials = TorDomainIsolator.getSocksProxyCredentials(
domain,
browser.contentPrincipal.originAttributes.userContextId
);
=====================================
toolkit/components/tor-launcher/TorDomainIsolator.jsm
=====================================
@@ -0,0 +1,362 @@
+// A component for Tor Browser that puts requests from different
+// first party domains on separate Tor circuits.
+
+var EXPORTED_SYMBOLS = ["TorDomainIsolator"];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { XPCOMUtils } = ChromeUtils.import(
+ "resource://gre/modules/XPCOMUtils.jsm"
+);
+const { ConsoleAPI } = ChromeUtils.import("resource://gre/modules/Console.jsm");
+
+Cu.importGlobalProperties(["crypto"]);
+
+XPCOMUtils.defineLazyServiceGetters(this, {
+ ProtocolProxyService: [
+ "@mozilla.org/network/protocol-proxy-service;1",
+ "nsIProtocolProxyService",
+ ],
+});
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorProtocolService",
+ "resource://gre/modules/TorProtocolService.jsm"
+);
+
+const logger = new ConsoleAPI({
+ prefix: "TorDomainIsolator",
+ maxLogLevel: "warn",
+ maxLogLevelPref: "browser.tordomainisolator.loglevel",
+});
+
+// The string to use instead of the domain when it is not known.
+const CATCHALL_DOMAIN = "--unknown--";
+
+// The preference to observe, to know whether isolation should be enabled or
+// disabled.
+const NON_TOR_PROXY_PREF = "extensions.torbutton.use_nontor_proxy";
+
+// The topic of new identity, to observe to cleanup all the nonces.
+const NEW_IDENTITY_TOPIC = "new-identity-requested";
+
+class TorDomainIsolatorImpl {
+ // A mutable map that records what nonce we are using for each domain.
+ #noncesForDomains = new Map();
+
+ // A mutable map that records what nonce we are using for each tab container.
+ #noncesForUserContextId = new Map();
+
+ // A bool that controls if we use SOCKS auth for isolation or not.
+ #isolationEnabled = true;
+
+ // Specifies when the current catch-all circuit was first used
+ #catchallDirtySince = Date.now();
+
+ /**
+ * Initialize the domain isolator.
+ * This function will setup the proxy filter that injects the credentials and
+ * register some observers.
+ */
+ init() {
+ logger.info("Setup circuit isolation by domain and user context");
+
+ if (Services.prefs.getBoolPref(NON_TOR_PROXY_PREF)) {
+ this.#isolationEnabled = false;
+ }
+ this.#setupProxyFilter();
+
+ Services.prefs.addObserver(NON_TOR_PROXY_PREF, this);
+ Services.obs.addObserver(this, NEW_IDENTITY_TOPIC);
+ }
+
+ /**
+ * Removes the observers added in the initialization.
+ */
+ uninit() {
+ Services.prefs.removeObserver(NON_TOR_PROXY_PREF, this);
+ Services.obs.removeObserver(this, NEW_IDENTITY_TOPIC);
+ }
+
+ enable() {
+ logger.trace("Domain isolation enabled");
+ this.#isolationEnabled = true;
+ }
+
+ disable() {
+ logger.trace("Domain isolation disabled");
+ this.#isolationEnabled = false;
+ }
+
+ /**
+ * Return the credentials to use as username and password for the SOCKS proxy,
+ * given a certain domain and userContextId. Optionally, create them.
+ *
+ * @param firstPartyDomain The first party domain associated to the requests
+ * @param userContextId The context ID associated to the request
+ * @param create Whether to create the nonce, if it is not available
+ * @return Either the credential, or null if we do not have them and create is
+ * false.
+ */
+ getSocksProxyCredentials(firstPartyDomain, userContextId, create = false) {
+ if (!this.#noncesForDomains.has(firstPartyDomain)) {
+ if (!create) {
+ return null;
+ }
+ const nonce = this.#nonce();
+ logger.info(`New nonce for first party ${firstPartyDomain}: ${nonce}`);
+ this.#noncesForDomains.set(firstPartyDomain, nonce);
+ }
+ if (!this.#noncesForUserContextId.has(userContextId)) {
+ if (!create) {
+ return null;
+ }
+ const nonce = this.#nonce();
+ logger.info(`New nonce for userContextId ${userContextId}: ${nonce}`);
+ this.#noncesForUserContextId.set(userContextId, nonce);
+ }
+ return {
+ username: this.#makeUsername(firstPartyDomain, userContextId),
+ password:
+ this.#noncesForDomains.get(firstPartyDomain) +
+ this.#noncesForUserContextId.get(userContextId),
+ };
+ }
+
+ /**
+ * Create a new nonce for the FP domain of the selected browser and reload the
+ * tab with a new circuit.
+ *
+ * @param browser Should be the gBrowser from the context of the caller
+ */
+ newCircuitForBrowser(browser) {
+ const firstPartyDomain = getDomainForBrowser(browser.selectedBrowser);
+ this.#newCircuitForDomain(firstPartyDomain);
+ // TODO: How to properly handle the user context? Should we use
+ // (domain, userContextId) pairs, instead of concatenating nonces?
+ browser.reloadWithFlags(Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE);
+ }
+
+ /**
+ * Clear the isolation state cache, forcing new circuits to be used for all
+ * subsequent requests.
+ */
+ clearIsolation() {
+ logger.trace("Clearing isolation nonces.");
+
+ // Per-domain and per contextId nonces are stored in maps, so simply clear
+ // them.
+ this.#noncesForDomains.clear();
+ this.#noncesForUserContextId.clear();
+
+ // Force a rotation on the next catch-all circuit use by setting the
+ // creation time to the epoch.
+ this.#catchallDirtySince = 0;
+ }
+
+ async observe(subject, topic, data) {
+ if (topic === "nsPref:changed" && data === NON_TOR_PROXY_PREF) {
+ if (Services.prefs.getBoolPref(NON_TOR_PROXY_PREF)) {
+ this.disable();
+ } else {
+ this.enable();
+ }
+ } else if (topic === NEW_IDENTITY_TOPIC) {
+ logger.info(
+ "New identity has been requested, clearing isolation tokens."
+ );
+ this.clearIsolation();
+ try {
+ await TorProtocolService.newnym();
+ } catch (e) {
+ logger.error("Could not send the newnym command", e);
+ // TODO: What UX to use here? See tor-browser#41708
+ }
+ }
+ }
+
+ /**
+ * Setup a filter that for every HTTPChannel, replaces the default SOCKS proxy
+ * with one that authenticates to the SOCKS server (the tor client process)
+ * with a username (the first party domain and userContextId) and a nonce
+ * password.
+ * Tor provides a separate circuit for each username+password combination.
+ */
+ #setupProxyFilter() {
+ const filterFunction = (aChannel, aProxy) => {
+ if (!this.#isolationEnabled) {
+ return aProxy;
+ }
+ try {
+ const channel = aChannel.QueryInterface(Ci.nsIChannel);
+ let firstPartyDomain =
+ channel.loadInfo.originAttributes.firstPartyDomain;
+ const userContextId = channel.loadInfo.originAttributes.userContextId;
+ if (firstPartyDomain === "") {
+ firstPartyDomain = CATCHALL_DOMAIN;
+ if (Date.now() - this.#catchallDirtySince > 1000 * 10 * 60) {
+ logger.info(
+ "tor catchall circuit has been dirty for over 10 minutes. Rotating."
+ );
+ this.#newCircuitForDomain(CATCHALL_DOMAIN);
+ this.#catchallDirtySince = Date.now();
+ }
+ }
+ const replacementProxy = this.#applySocksProxyCredentials(
+ aProxy,
+ firstPartyDomain,
+ userContextId
+ );
+ logger.debug(
+ `Requested ${channel.URI.spec} via ${replacementProxy.username}:${replacementProxy.password}`
+ );
+ return replacementProxy;
+ } catch (e) {
+ logger.error("Error while setting a new proxy", e);
+ return null;
+ }
+ };
+
+ ProtocolProxyService.registerChannelFilter(
+ {
+ applyFilter(aChannel, aProxy, aCallback) {
+ aCallback.onProxyFilterResult(filterFunction(aChannel, aProxy));
+ },
+ },
+ 0
+ );
+ }
+
+ /**
+ * Takes a proxyInfo object (originalProxy) and returns a new proxyInfo
+ * object with the same properties, except the username is set to the
+ * the domain and userContextId, and the password is a nonce.
+ */
+ #applySocksProxyCredentials(originalProxy, domain, userContextId) {
+ const proxy = originalProxy.QueryInterface(Ci.nsIProxyInfo);
+ const { username, password } = this.getSocksProxyCredentials(
+ domain,
+ userContextId,
+ true
+ );
+ return ProtocolProxyService.newProxyInfoWithAuth(
+ "socks",
+ proxy.host,
+ proxy.port,
+ username,
+ password,
+ "", // aProxyAuthorizationHeader
+ "", // aConnectionIsolationKey
+ proxy.flags,
+ proxy.failoverTimeout,
+ proxy.failoverProxy
+ );
+ }
+
+ /**
+ * Combine the needed data into a username for the proxy.
+ */
+ #makeUsername(domain, userContextId) {
+ if (!domain) {
+ domain = CATCHALL_DOMAIN;
+ }
+ return `${domain}:${userContextId}`;
+ }
+
+ /**
+ * Generate a new 128 bit random tag.
+ *
+ * Strictly speaking both using a cryptographic entropy source and using 128
+ * bits of entropy for the tag are likely overkill, as correct behavior only
+ * depends on how unlikely it is for there to be a collision.
+ */
+ #nonce() {
+ return Array.from(crypto.getRandomValues(new Uint8Array(16)), byte =>
+ byte.toString(16).padStart(2, "0")
+ ).join("");
+ }
+
+ /**
+ * Re-generate the nonce for a certain domain.
+ */
+ #newCircuitForDomain(domain) {
+ if (!domain) {
+ domain = CATCHALL_DOMAIN;
+ }
+ this.#noncesForDomains.set(domain, this.#nonce());
+ logger.info(
+ `New domain isolation for ${domain}: ${this.#noncesForDomains.get(
+ domain
+ )}`
+ );
+ }
+
+ /**
+ * Re-generate the nonce for a userContextId.
+ *
+ * Currently, this function is not hooked to anything.
+ */
+ #newCircuitForUserContextId(userContextId) {
+ this.#noncesForUserContextId.set(userContextId, this.#nonce());
+ logger.info(
+ `New container isolation for ${userContextId}: ${this.#noncesForUserContextId.get(
+ userContextId
+ )}`
+ );
+ }
+}
+
+/**
+ * Get the first party domain for a certain browser.
+ *
+ * @param browser The browser to get the FP-domain for.
+ *
+ * Please notice that it should be gBrowser.selectedBrowser, because
+ * browser.documentURI is the actual shown page, and might be an error page.
+ * In this case, we rely on currentURI, which for gBrowser is an alias of
+ * gBrowser.selectedBrowser.currentURI.
+ * See browser/base/content/tabbrowser.js and tor-browser#31562.
+ */
+function getDomainForBrowser(browser) {
+ let fpd = browser.contentPrincipal.originAttributes.firstPartyDomain;
+
+ // Bug 31562: For neterror or certerror, get the original URL from
+ // browser.currentURI and use it to calculate the firstPartyDomain.
+ const knownErrors = [
+ "about:neterror",
+ "about:certerror",
+ "about:httpsonlyerror",
+ ];
+ const { documentURI } = browser;
+ if (
+ documentURI &&
+ documentURI.schemeIs("about") &&
+ knownErrors.some(x => documentURI.spec.startsWith(x))
+ ) {
+ const knownSchemes = ["http", "https"];
+ const currentURI = browser.currentURI;
+ if (currentURI && knownSchemes.some(x => currentURI.schemeIs(x))) {
+ try {
+ fpd = Services.eTLD.getBaseDomainFromHost(currentURI.host);
+ } catch (e) {
+ if (
+ e.result === Cr.NS_ERROR_HOST_IS_IP_ADDRESS ||
+ e.result === Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS
+ ) {
+ fpd = currentURI.host;
+ } else {
+ logger.error(
+ `Failed to get first party domain for host ${currentURI.host}`,
+ e
+ );
+ }
+ }
+ }
+ }
+
+ return fpd;
+}
+
+const TorDomainIsolator = new TorDomainIsolatorImpl();
+// Reduce global vars pollution
+TorDomainIsolator.getDomainForBrowser = getDomainForBrowser;
=====================================
toolkit/components/tor-launcher/TorProtocolService.jsm
=====================================
@@ -4,6 +4,7 @@
var EXPORTED_SYMBOLS = ["TorProtocolService"];
+const { ConsoleAPI } = ChromeUtils.import("resource://gre/modules/Console.jsm");
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const { setTimeout } = ChromeUtils.import("resource://gre/modules/Timer.jsm");
ChromeUtils.defineModuleGetter(
@@ -11,9 +12,6 @@ ChromeUtils.defineModuleGetter(
"FileUtils",
"resource://gre/modules/FileUtils.jsm"
);
-const { XPCOMUtils } = ChromeUtils.import(
- "resource://gre/modules/XPCOMUtils.jsm"
-);
Cu.importGlobalProperties(["crypto"]);
@@ -45,18 +43,9 @@ const TorTopics = Object.freeze({
ProcessRestarted: "TorProcessRestarted",
});
-// Logger adapted from CustomizableUI.jsm
-XPCOMUtils.defineLazyGetter(this, "logger", () => {
- const { ConsoleAPI } = ChromeUtils.import(
- "resource://gre/modules/Console.jsm"
- );
- // TODO: Use a preference to set the log level.
- const consoleOptions = {
- // maxLogLevel: "warn",
- maxLogLevel: "all",
- prefix: "TorProtocolService",
- };
- return new ConsoleAPI(consoleOptions);
+const logger = new ConsoleAPI({
+ maxLogLevel: "warn",
+ prefix: "TorProtocolService",
});
// Manage the connection to tor's control port, to update its settings and query
@@ -194,6 +183,10 @@ const TorProtocolService = {
TorMonitorService.retrieveBootstrapStatus();
},
+ async newnym() {
+ return this.sendCommand("SIGNAL NEWNYM");
+ },
+
// TODO: transform the following 4 functions in getters. At the moment they
// are also used in torbutton.
=====================================
toolkit/components/tor-launcher/TorStartupService.jsm
=====================================
@@ -33,6 +33,12 @@ ChromeUtils.defineModuleGetter(
"resource:///modules/TorSettings.jsm"
);
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorDomainIsolator",
+ "resource://gre/modules/TorDomainIsolator.jsm"
+);
+
/* Browser observer topis */
const BrowserTopics = Object.freeze({
ProfileAfterChange: "profile-after-change",
@@ -67,12 +73,16 @@ class TorStartupService {
TorSettings.init();
TorConnect.init();
+ TorDomainIsolator.init();
+
gInited = true;
}
_uninit() {
Services.obs.removeObserver(this, BrowserTopics.QuitApplicationGranted);
+ TorDomainIsolator.uninit();
+
// Close any helper connection first...
TorProtocolService.uninit();
// ... and only then closes the event monitor connection, which will cause
=====================================
toolkit/components/tor-launcher/moz.build
=====================================
@@ -1,5 +1,6 @@
EXTRA_JS_MODULES += [
"TorBootstrapRequest.jsm",
+ "TorDomainIsolator.jsm",
"TorLauncherUtil.jsm",
"TorMonitorService.jsm",
"TorParsers.jsm",
=====================================
toolkit/torbutton/chrome/content/torbutton.js
=====================================
@@ -1,6 +1,5 @@
// window globals
var torbutton_init;
-var torbutton_new_circuit;
(() => {
// Bug 1506 P1-P5: This is the main Torbutton overlay file. Much needs to be
@@ -16,9 +15,7 @@ var torbutton_new_circuit;
let {
unescapeTorString,
- getDomainForBrowser,
torbutton_log,
- torbutton_get_property_string,
} = ChromeUtils.import("resource://torbutton/modules/utils.js");
let { configureControlPortModule, wait_for_controller } = ChromeUtils.import(
"resource://torbutton/modules/tor-control-port.js"
@@ -46,32 +43,22 @@ var torbutton_new_circuit;
// in a component, not the XUL overlay.
var torbutton_unique_pref_observer = {
register() {
- this.forced_ua = false;
- m_tb_prefs.addObserver("extensions.torbutton", this);
- m_tb_prefs.addObserver("browser.privatebrowsing.autostart", this);
- m_tb_prefs.addObserver("javascript", this);
+ Services.prefs.addObserver("browser.privatebrowsing.autostart", this);
},
unregister() {
- m_tb_prefs.removeObserver("extensions.torbutton", this);
- m_tb_prefs.removeObserver("browser.privatebrowsing.autostart", this);
- m_tb_prefs.removeObserver("javascript", this);
+ Services.prefs.removeObserver("browser.privatebrowsing.autostart", this);
},
// topic: what event occurred
// subject: what nsIPrefBranch we're observing
// data: which pref has been changed (relative to subject)
observe(subject, topic, data) {
- if (topic !== "nsPref:changed") {
- return;
- }
- switch (data) {
- case "browser.privatebrowsing.autostart":
- torbutton_update_disk_prefs();
- break;
- case "extensions.torbutton.use_nontor_proxy":
- torbutton_use_nontor_proxy();
- break;
+ if (
+ topic === "nsPref:changed" &&
+ data === "browser.privatebrowsing.autostart"
+ ) {
+ torbutton_update_disk_prefs();
}
},
};
@@ -113,62 +100,6 @@ var torbutton_new_circuit;
},
};
- var torbutton_new_identity_observers = {
- register() {
- Services.obs.addObserver(this, "new-identity-requested");
- },
-
- observe(aSubject, aTopic, aData) {
- if (aTopic !== "new-identity-requested") {
- return;
- }
-
- // Clear the domain isolation state.
- torbutton_log(3, "Clearing domain isolator");
- const domainIsolator = Cc["@torproject.org/domain-isolator;1"].getService(
- Ci.nsISupports
- ).wrappedJSObject;
- domainIsolator.clearIsolation();
-
- torbutton_log(3, "New Identity: Sending NEWNYM");
- // We only support TBB for newnym.
- if (
- !m_tb_control_pass ||
- (!m_tb_control_ipc_file && !m_tb_control_port)
- ) {
- const warning = torbutton_get_property_string(
- "torbutton.popup.no_newnym"
- );
- torbutton_log(
- 5,
- "Torbutton cannot safely newnym. It does not have access to the Tor Control Port."
- );
- window.alert(warning);
- } else {
- const warning = torbutton_get_property_string(
- "torbutton.popup.no_newnym"
- );
- torbutton_send_ctrl_cmd("SIGNAL NEWNYM")
- .then(res => {
- if (!res) {
- torbutton_log(
- 5,
- "Torbutton was unable to request a new circuit from Tor"
- );
- window.alert(warning);
- }
- })
- .catch(e => {
- torbutton_log(
- 5,
- "Torbutton was unable to request a new circuit from Tor " + e
- );
- window.alert(warning);
- });
- }
- },
- };
-
// Bug 1506 P2-P4: This code sets some version variables that are irrelevant.
// It does read out some important environment variables, though. It is
// called once per browser window.. This might belong in a component.
@@ -258,8 +189,6 @@ var torbutton_new_circuit;
true
);
- torbutton_new_identity_observers.register();
-
torbutton_log(3, "init completed");
};
@@ -374,36 +303,6 @@ var torbutton_new_circuit;
return response;
}
- // Bug 1506 P4: Needed for New IP Address
- torbutton_new_circuit = function() {
- let firstPartyDomain = getDomainForBrowser(gBrowser.selectedBrowser);
-
- let domainIsolator = Cc["@torproject.org/domain-isolator;1"].getService(
- Ci.nsISupports
- ).wrappedJSObject;
-
- domainIsolator.newCircuitForDomain(firstPartyDomain);
-
- gBrowser.reloadWithFlags(Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE);
- };
-
- /* Called when we switch the use_nontor_proxy pref in either direction.
- *
- * Enables/disables domain isolation and then does new identity
- */
- function torbutton_use_nontor_proxy() {
- let domainIsolator = Cc["@torproject.org/domain-isolator;1"].getService(
- Ci.nsISupports
- ).wrappedJSObject;
-
- if (m_tb_prefs.getBoolPref("extensions.torbutton.use_nontor_proxy")) {
- // Disable domain isolation
- domainIsolator.disableIsolation();
- } else {
- domainIsolator.enableIsolation();
- }
- }
-
async function torbutton_do_tor_check() {
let checkSvc = Cc["@torproject.org/torbutton-torCheckService;1"].getService(
Ci.nsISupports
=====================================
toolkit/torbutton/components/domain-isolator.js deleted
=====================================
@@ -1,312 +0,0 @@
-// # domain-isolator.js
-// A component for TorBrowser that puts requests from different
-// first party domains on separate tor circuits.
-
-// This file is written in call stack order (later functions
-// call earlier functions). The code file can be processed
-// with docco.js to provide clear documentation.
-
-// ### Abbreviations
-
-const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
-const { XPCOMUtils } = ChromeUtils.import(
- "resource://gre/modules/XPCOMUtils.jsm"
-);
-
-XPCOMUtils.defineLazyModuleGetters(this, {
- ComponentUtils: "resource://gre/modules/ComponentUtils.jsm",
-});
-
-// Make the logger available.
-let logger = Cc["@torproject.org/torbutton-logger;1"].getService(Ci.nsISupports)
- .wrappedJSObject;
-
-// Import crypto object (FF 37+).
-Cu.importGlobalProperties(["crypto"]);
-
-// ## mozilla namespace.
-// Useful functionality for interacting with Mozilla services.
-let mozilla = {};
-
-// __mozilla.protocolProxyService__.
-// Mozilla's protocol proxy service, useful for managing proxy connections made
-// by the browser.
-mozilla.protocolProxyService = Cc[
- "@mozilla.org/network/protocol-proxy-service;1"
-].getService(Ci.nsIProtocolProxyService);
-
-// __mozilla.registerProxyChannelFilter(filterFunction, positionIndex)__.
-// Registers a proxy channel filter with the Mozilla Protocol Proxy Service,
-// which will help to decide the proxy to be used for a given channel.
-// The filterFunction should expect two arguments, (aChannel, aProxy),
-// where aProxy is the proxy or list of proxies that would be used by default
-// for the given channel, and should return a new Proxy or list of Proxies.
-mozilla.registerProxyChannelFilter = function(filterFunction, positionIndex) {
- let proxyFilter = {
- applyFilter(aChannel, aProxy, aCallback) {
- aCallback.onProxyFilterResult(filterFunction(aChannel, aProxy));
- },
- };
- mozilla.protocolProxyService.registerChannelFilter(
- proxyFilter,
- positionIndex
- );
-};
-
-// ## tor functionality.
-let tor = {};
-
-// __tor.noncesForDomains__.
-// A mutable map that records what nonce we are using for each domain.
-tor.noncesForDomains = new Map();
-
-// __tor.noncesForUserContextId__.
-// A mutable map that records what nonce we are using for each tab container.
-tor.noncesForUserContextId = new Map();
-
-// __tor.isolationEabled__.
-// A bool that controls if we use SOCKS auth for isolation or not.
-tor.isolationEnabled = true;
-
-// __tor.unknownDirtySince__.
-// Specifies when the current catch-all circuit was first used
-tor.unknownDirtySince = Date.now();
-
-tor.passwordForDomainAndUserContextId = function(
- domain,
- userContextId,
- create
-) {
- // Check if we already have a nonce. If not, possibly create one for this
- // domain and userContextId.
- if (!tor.noncesForDomains.has(domain)) {
- if (!create) {
- return null;
- }
- tor.noncesForDomains.set(domain, tor.nonce());
- }
- if (!tor.noncesForUserContextId.has(userContextId)) {
- if (!create) {
- return null;
- }
- tor.noncesForUserContextId.set(userContextId, tor.nonce());
- }
- return (
- tor.noncesForDomains.get(domain) +
- tor.noncesForUserContextId.get(userContextId)
- );
-};
-
-tor.usernameForDomainAndUserContextId = function(domain, userContextId) {
- return `${domain}:${userContextId}`;
-};
-
-// __tor.socksProxyCredentials(originalProxy, domain, userContextId)__.
-// Takes a proxyInfo object (originalProxy) and returns a new proxyInfo
-// object with the same properties, except the username is set to the
-// the domain and userContextId, and the password is a nonce.
-tor.socksProxyCredentials = function(originalProxy, domain, userContextId) {
- let proxy = originalProxy.QueryInterface(Ci.nsIProxyInfo);
- let proxyUsername = tor.usernameForDomainAndUserContextId(
- domain,
- userContextId
- );
- let proxyPassword = tor.passwordForDomainAndUserContextId(
- domain,
- userContextId,
- true
- );
- return mozilla.protocolProxyService.newProxyInfoWithAuth(
- "socks",
- proxy.host,
- proxy.port,
- proxyUsername,
- proxyPassword,
- "", // aProxyAuthorizationHeader
- "", // aConnectionIsolationKey
- proxy.flags,
- proxy.failoverTimeout,
- proxy.failoverProxy
- );
-};
-
-tor.nonce = function() {
- // Generate a new 128 bit random tag. Strictly speaking both using a
- // cryptographic entropy source and using 128 bits of entropy for the
- // tag are likely overkill, as correct behavior only depends on how
- // unlikely it is for there to be a collision.
- let tag = new Uint8Array(16);
- crypto.getRandomValues(tag);
-
- // Convert the tag to a hex string.
- let tagStr = "";
- for (let i = 0; i < tag.length; i++) {
- tagStr += (tag[i] >>> 4).toString(16);
- tagStr += (tag[i] & 0x0f).toString(16);
- }
-
- return tagStr;
-};
-
-tor.newCircuitForDomain = function(domain) {
- // Re-generate the nonce for the domain.
- if (domain === "") {
- domain = "--unknown--";
- }
- tor.noncesForDomains.set(domain, tor.nonce());
- logger.eclog(
- 3,
- `New domain isolation for ${domain}: ${tor.noncesForDomains.get(domain)}`
- );
-};
-
-tor.newCircuitForUserContextId = function(userContextId) {
- // Re-generate the nonce for the context.
- tor.noncesForUserContextId.set(userContextId, tor.nonce());
- logger.eclog(
- 3,
- `New container isolation for ${userContextId}: ${tor.noncesForUserContextId.get(
- userContextId
- )}`
- );
-};
-
-// __tor.clearIsolation()_.
-// Clear the isolation state cache, forcing new circuits to be used for all
-// subsequent requests.
-tor.clearIsolation = function() {
- // Per-domain and per contextId nonces are stored in maps, so simply clear them.
- tor.noncesForDomains.clear();
- tor.noncesForUserContextId.clear();
-
- // Force a rotation on the next catch-all circuit use by setting the creation
- // time to the epoch.
- tor.unknownDirtySince = 0;
-};
-
-// __tor.isolateCircuitsByDomain()__.
-// For every HTTPChannel, replaces the default SOCKS proxy with one that authenticates
-// to the SOCKS server (the tor client process) with a username (the first party domain
-// and userContextId) and a nonce password. Tor provides a separate circuit for each
-// username+password combination.
-tor.isolateCircuitsByDomain = function() {
- mozilla.registerProxyChannelFilter(function(aChannel, aProxy) {
- if (!tor.isolationEnabled) {
- return aProxy;
- }
- try {
- let channel = aChannel.QueryInterface(Ci.nsIChannel),
- firstPartyDomain = channel.loadInfo.originAttributes.firstPartyDomain,
- userContextId = channel.loadInfo.originAttributes.userContextId;
- if (firstPartyDomain === "") {
- firstPartyDomain = "--unknown--";
- if (Date.now() - tor.unknownDirtySince > 1000 * 10 * 60) {
- logger.eclog(
- 3,
- "tor catchall circuit has been dirty for over 10 minutes. Rotating."
- );
- tor.newCircuitForDomain("--unknown--");
- tor.unknownDirtySince = Date.now();
- }
- }
- let replacementProxy = tor.socksProxyCredentials(
- aProxy,
- firstPartyDomain,
- userContextId
- );
- logger.eclog(
- 3,
- `tor SOCKS: ${channel.URI.spec} via
- ${replacementProxy.username}:${replacementProxy.password}`
- );
- return replacementProxy;
- } catch (e) {
- logger.eclog(4, `tor domain isolator error: ${e.message}`);
- return null;
- }
- }, 0);
-};
-
-// ## XPCOM component construction.
-// Module specific constants
-const kMODULE_NAME = "TorBrowser Domain Isolator";
-const kMODULE_CONTRACTID = "@torproject.org/domain-isolator;1";
-const kMODULE_CID = Components.ID("e33fd6d4-270f-475f-a96f-ff3140279f68");
-
-// DomainIsolator object.
-function DomainIsolator() {
- this.wrappedJSObject = this;
-}
-
-// Firefox component requirements
-DomainIsolator.prototype = {
- QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver]),
- classDescription: kMODULE_NAME,
- classID: kMODULE_CID,
- contractID: kMODULE_CONTRACTID,
- observe(subject, topic, data) {
- if (topic === "profile-after-change") {
- logger.eclog(3, "domain isolator: set up isolating circuits by domain");
-
- if (Services.prefs.getBoolPref("extensions.torbutton.use_nontor_proxy")) {
- tor.isolationEnabled = false;
- }
- tor.isolateCircuitsByDomain();
- }
- },
-
- newCircuitForDomain(domain) {
- tor.newCircuitForDomain(domain);
- },
-
- /**
- * Return the stored SOCKS proxy username and password for the given domain
- * and user context ID.
- *
- * @param {string} firstPartyDomain - The domain to lookup credentials for.
- * @param {integer} userContextId - The ID for the user context.
- *
- * @return {{ username: string, password: string }?} - The SOCKS credentials,
- * or null if none are found.
- */
- getSocksProxyCredentials(firstPartyDomain, userContextId) {
- if (firstPartyDomain == "") {
- firstPartyDomain = "--unknown--";
- }
- let proxyPassword = tor.passwordForDomainAndUserContextId(
- firstPartyDomain,
- userContextId,
- // Do not create a new entry if it does not exist.
- false
- );
- if (!proxyPassword) {
- return null;
- }
- return {
- username: tor.usernameForDomainAndUserContextId(
- firstPartyDomain,
- userContextId
- ),
- password: proxyPassword,
- };
- },
-
- enableIsolation() {
- tor.isolationEnabled = true;
- },
-
- disableIsolation() {
- tor.isolationEnabled = false;
- },
-
- clearIsolation() {
- tor.clearIsolation();
- },
-
- wrappedJSObject: null,
-};
-
-// Assign factory to global object.
-const NSGetFactory = XPCOMUtils.generateNSGetFactory
- ? XPCOMUtils.generateNSGetFactory([DomainIsolator])
- : ComponentUtils.generateNSGetFactory([DomainIsolator]);
=====================================
toolkit/torbutton/jar.mn
=====================================
@@ -43,9 +43,5 @@ torbutton.jar:
% component {f36d72c9-9718-4134-b550-e109638331d7} %components/torbutton-logger.js
% contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d7}
-% component {e33fd6d4-270f-475f-a96f-ff3140279f68} %components/domain-isolator.js
-% contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
-
% category profile-after-change StartupObserver @torproject.org/startup-observer;1
-% category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
% category profile-after-change DragDropFilter @torproject.org/torbutton-dragDropFilter;1
=====================================
toolkit/torbutton/modules/utils.js
=====================================
@@ -213,45 +213,6 @@ var unescapeTorString = function(str) {
return _torControl._strUnescape(str);
};
-var getFPDFromHost = hostname => {
- try {
- return Services.eTLD.getBaseDomainFromHost(hostname);
- } catch (e) {
- if (
- e.result == Cr.NS_ERROR_HOST_IS_IP_ADDRESS ||
- e.result == Cr.NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS
- ) {
- return hostname;
- }
- }
- return null;
-};
-
-// Assuming this is called with gBrowser.selectedBrowser
-var getDomainForBrowser = browser => {
- let fpd = browser.contentPrincipal.originAttributes.firstPartyDomain;
- // Bug 31562: For neterror or certerror, get the original URL from
- // browser.currentURI and use it to calculate the firstPartyDomain.
- let knownErrors = [
- "about:neterror",
- "about:certerror",
- "about:httpsonlyerror",
- ];
- let documentURI = browser.documentURI;
- if (
- documentURI &&
- documentURI.schemeIs("about") &&
- knownErrors.some(x => documentURI.spec.startsWith(x))
- ) {
- let knownSchemes = ["http", "https", "ftp"];
- let currentURI = browser.currentURI;
- if (currentURI && knownSchemes.some(x => currentURI.schemeIs(x))) {
- fpd = getFPDFromHost(currentURI.host) || fpd;
- }
- }
- return fpd;
-};
-
var m_tb_torlog = Cc["@torproject.org/torbutton-logger;1"].getService(
Ci.nsISupports
).wrappedJSObject;
@@ -310,7 +271,6 @@ let EXPORTED_SYMBOLS = [
"bindPrefAndInit",
"getEnv",
"getLocale",
- "getDomainForBrowser",
"getPrefValue",
"observe",
"showDialog",
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/ff98f1…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/ff98f1…
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-102.11.0esr-13.0-1
by Pier Angelo Vendrame (@pierov) 17 May '23
by Pier Angelo Vendrame (@pierov) 17 May '23
17 May '23
Pier Angelo Vendrame pushed new branch tor-browser-102.11.0esr-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][base-browser-102.11.0esr-12.5-1] fixup! Bug 4234: Use the Firefox Update Process for Base Browser.
by Pier Angelo Vendrame (@pierov) 17 May '23
by Pier Angelo Vendrame (@pierov) 17 May '23
17 May '23
Pier Angelo Vendrame pushed to branch base-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
cdb91f71 by Pier Angelo Vendrame at 2023-05-17T08:31:37+02:00
fixup! Bug 4234: Use the Firefox Update Process for Base Browser.
Bug 41775: Avoid re-defining some macros in nsUpdateDriver.cpp.
They are already defined in toolkit/xre/nsUpdateDriver.h.
- - - - -
1 changed file:
- toolkit/xre/nsUpdateDriver.cpp
Changes:
=====================================
toolkit/xre/nsUpdateDriver.cpp
=====================================
@@ -64,16 +64,6 @@ static LazyLogModule sUpdateLog("updatedriver");
#endif
#define LOG(args) MOZ_LOG(sUpdateLog, mozilla::LogLevel::Debug, args)
-#ifdef XP_WIN
-# define UPDATER_BIN "updater.exe"
-# define MAINTENANCE_SVC_NAME L"MozillaMaintenance"
-#elif XP_MACOSX
-# define UPDATER_APP "updater.app"
-# define UPDATER_BIN "org.mozilla.updater"
-#else
-# define UPDATER_BIN "updater"
-#endif
-
#ifdef XP_MACOSX
static void UpdateDriverSetupMacCommandLine(int& argc, char**& argv,
bool restart) {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cdb91f7…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cdb91f7…
You're receiving this email because of your account on gitlab.torproject.org.
1
0
[Git][tpo/applications/tor-browser][tor-browser-102.11.0esr-12.5-1] fixup! Bug 4234: Use the Firefox Update Process for Base Browser.
by Pier Angelo Vendrame (@pierov) 17 May '23
by Pier Angelo Vendrame (@pierov) 17 May '23
17 May '23
Pier Angelo Vendrame pushed to branch tor-browser-102.11.0esr-12.5-1 at The Tor Project / Applications / Tor Browser
Commits:
ff98f1b1 by Pier Angelo Vendrame at 2023-05-11T11:15:17+02:00
fixup! Bug 4234: Use the Firefox Update Process for Base Browser.
Bug 41775: Avoid re-defining some macros in nsUpdateDriver.cpp.
They are already defined in toolkit/xre/nsUpdateDriver.h.
- - - - -
1 changed file:
- toolkit/xre/nsUpdateDriver.cpp
Changes:
=====================================
toolkit/xre/nsUpdateDriver.cpp
=====================================
@@ -64,16 +64,6 @@ static LazyLogModule sUpdateLog("updatedriver");
#endif
#define LOG(args) MOZ_LOG(sUpdateLog, mozilla::LogLevel::Debug, args)
-#ifdef XP_WIN
-# define UPDATER_BIN "updater.exe"
-# define MAINTENANCE_SVC_NAME L"MozillaMaintenance"
-#elif XP_MACOSX
-# define UPDATER_APP "updater.app"
-# define UPDATER_BIN "org.mozilla.updater"
-#else
-# define UPDATER_BIN "updater"
-#endif
-
#ifdef XP_MACOSX
static void UpdateDriverSetupMacCommandLine(int& argc, char**& argv,
bool restart) {
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/ff98f1b…
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/ff98f1b…
You're receiving this email because of your account on gitlab.torproject.org.
1
0