[tbb-commits] [Git][tpo/applications/tor-browser][tor-browser-115.10.0esr-13.5-1] 3 commits: fixup! Lox integration
Pier Angelo Vendrame (@pierov)
git at gitlab.torproject.org
Mon Apr 22 17:12:33 UTC 2024
Pier Angelo Vendrame pushed to branch tor-browser-115.10.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
303a1239 by Henry Wilkes at 2024-04-22T17:35:39+01:00
fixup! Lox integration
Bug 42476: Drop unnecessary #window property.
- - - - -
45f5e2d9 by Henry Wilkes at 2024-04-22T17:35:39+01:00
fixup! Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
Bug 42476: Disable the Lox module for the stable release.
- - - - -
94374ba5 by Henry Wilkes at 2024-04-22T18:01:19+01:00
fixup! Lox integration
Bug 42476: Disable the Lox module for the stable release.
- - - - -
3 changed files:
- browser/components/torpreferences/content/connectionPane.js
- browser/components/torpreferences/content/provideBridgeDialog.js
- toolkit/components/lox/Lox.sys.mjs
Changes:
=====================================
browser/components/torpreferences/content/connectionPane.js
=====================================
@@ -1284,6 +1284,11 @@ const gLoxStatus = {
* Initialize the bridge pass area.
*/
init() {
+ if (!Lox.enabled) {
+ // Area should remain inactive and hidden.
+ return;
+ }
+
this._area = document.getElementById("tor-bridges-lox-status");
this._detailsArea = document.getElementById("tor-bridges-lox-details");
this._nextUnlockCounterEl = document.getElementById(
@@ -1333,6 +1338,10 @@ const gLoxStatus = {
* Uninitialize the built-in bridges area.
*/
uninit() {
+ if (!Lox.enabled) {
+ return;
+ }
+
Services.obs.removeObserver(this, TorSettingsTopics.SettingsChanged);
Services.obs.removeObserver(this, LoxTopics.UpdateActiveLoxId);
Services.obs.removeObserver(this, LoxTopics.UpdateEvents);
=====================================
browser/components/torpreferences/content/provideBridgeDialog.js
=====================================
@@ -72,8 +72,7 @@ const gProvideBridgeDialog = {
document.l10n.setAttributes(document.documentElement, titleId);
- // TODO: Make conditional on Lox being enabled.
- this._allowLoxInvite = mode !== "edit"; // && Lox.enabled
+ this._allowLoxInvite = mode !== "edit" && Lox.enabled;
document.l10n.setAttributes(
document.getElementById("user-provide-bridge-textarea-label"),
@@ -403,33 +402,39 @@ const gProvideBridgeDialog = {
return null;
}
- let loxInvite = null;
- for (let line of this._textarea.value.split(/\r?\n/)) {
- line = line.trim();
- if (!line) {
- continue;
- }
- // TODO: Once we have a Lox invite encoding, distinguish between a valid
- // invite and something that looks like it should be an invite.
- const isLoxInvite = Lox.validateInvitation(line);
- if (isLoxInvite) {
- if (!this._allowLoxInvite) {
- this.updateError({ type: "not-allowed-invite" });
- return null;
+ // Only check if this looks like a Lox invite when the Lox module is
+ // enabled.
+ if (Lox.enabled) {
+ let loxInvite = null;
+ for (let line of this._textarea.value.split(/\r?\n/)) {
+ line = line.trim();
+ if (!line) {
+ continue;
}
- if (loxInvite) {
- this.updateError({ type: "multiple-invites" });
+ // TODO: Once we have a Lox invite encoding, distinguish between a valid
+ // invite and something that looks like it should be an invite.
+ const isLoxInvite = Lox.validateInvitation(line);
+ if (isLoxInvite) {
+ if (!this._allowLoxInvite) {
+ // Lox is enabled, but not allowed invites when editing bridge
+ // addresses.
+ this.updateError({ type: "not-allowed-invite" });
+ return null;
+ }
+ if (loxInvite) {
+ this.updateError({ type: "multiple-invites" });
+ return null;
+ }
+ loxInvite = line;
+ } else if (loxInvite) {
+ this.updateError({ type: "mixed" });
return null;
}
- loxInvite = line;
- } else if (loxInvite) {
- this.updateError({ type: "mixed" });
- return null;
}
- }
- if (loxInvite) {
- return { loxInvite };
+ if (loxInvite) {
+ return { loxInvite };
+ }
}
const validation = validateBridgeLines(this._textarea.value);
=====================================
toolkit/components/lox/Lox.sys.mjs
=====================================
@@ -1,4 +1,5 @@
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
+import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
import {
clearInterval,
setInterval,
@@ -103,8 +104,24 @@ export class LoxError extends Error {
}
class LoxImpl {
+ /**
+ * Whether the Lox module has completed initialization.
+ *
+ * @type {boolean}
+ */
#initialized = false;
- #window = null;
+
+ /**
+ * Whether the Lox module is enabled for this Tor Browser instance.
+ *
+ * @type {boolean}
+ */
+ #enabled = AppConstants.MOZ_UPDATE_CHANNEL !== "release";
+
+ get enabled() {
+ return this.#enabled;
+ }
+
#pubKeyPromise = null;
#encTablePromise = null;
#constantsPromise = null;
@@ -218,13 +235,14 @@ class LoxImpl {
* Assert that the module is initialized.
*/
#assertInitialized() {
- if (!this.#initialized) {
+ if (!this.enabled || !this.#initialized) {
throw new LoxError("Not initialized");
}
}
get #inuse() {
return (
+ this.enabled &&
Boolean(this.#activeLoxId) &&
lazy.TorSettings.bridges.enabled === true &&
lazy.TorSettings.bridges.source === lazy.TorBridgeSource.Lox
@@ -532,16 +550,20 @@ class LoxImpl {
}
async init() {
+ if (!this.enabled) {
+ lazy.logger.info(
+ "Skipping initialization since Lox module is not enabled"
+ );
+ return;
+ }
// If lox_id is set, load it
Services.obs.addObserver(this, lazy.TorSettingsTopics.SettingsChanged);
Services.obs.addObserver(this, lazy.TorSettingsTopics.Ready);
// Hack to make the generated wasm happy
- this.#window = {
- crypto,
- };
- this.#window.window = this.#window;
- await lazy.init(this.#window);
+ const win = { crypto };
+ win.window = win;
+ await lazy.init(win);
lazy.set_panic_hook();
if (typeof lazy.open_invite !== "function") {
throw new LoxError("Initialization failed");
@@ -551,6 +573,9 @@ class LoxImpl {
}
async uninit() {
+ if (!this.enabled) {
+ return;
+ }
Services.obs.removeObserver(this, lazy.TorSettingsTopics.SettingsChanged);
Services.obs.removeObserver(this, lazy.TorSettingsTopics.Ready);
if (this.#domainFrontedRequests !== null) {
@@ -561,7 +586,6 @@ class LoxImpl {
this.#domainFrontedRequests = null;
}
this.#initialized = false;
- this.#window = null;
this.#invites = [];
this.#pubKeys = null;
this.#encTable = null;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/07ec58172454b44583d34be6edb5664d7d6ed90e...94374ba536640822f4e67033f83dadb7c027fab0
--
This project does not include diff previews in email notifications.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/07ec58172454b44583d34be6edb5664d7d6ed90e...94374ba536640822f4e67033f83dadb7c027fab0
You're receiving this email because of your account on gitlab.torproject.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20240422/0839776f/attachment-0001.htm>
More information about the tbb-commits
mailing list