[tor-commits] [Git][tpo/applications/tor-browser][tor-browser-115.9.0esr-13.5-1] 3 commits: fixup! Bug 40209: Implement Basic Crypto Safety
richard (@richard)
git at gitlab.torproject.org
Mon Apr 8 19:06:38 UTC 2024
richard pushed to branch tor-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
3ddbe28a by Henry Wilkes at 2024-04-08T18:58:55+00:00
fixup! Bug 40209: Implement Basic Crypto Safety
Bug 42202: Migrate crypto safety strings to Fluent.
- - - - -
58d32687 by Henry Wilkes at 2024-04-08T18:58:55+00:00
fixup! Tor Browser strings
Bug 42202: Migrate crypto safety strings to Fluent.
- - - - -
bb6f56ad by Henry Wilkes at 2024-04-08T18:58:55+00:00
fixup! Tor Browser localization migration scripts.
Bug 42202: Migrate crypto safety strings to Fluent.
- - - - -
5 changed files:
- browser/actors/CryptoSafetyParent.jsm
- browser/locales/en-US/browser/tor-browser.ftl
- − browser/locales/en-US/chrome/browser/cryptoSafetyPrompt.properties
- browser/locales/jar.mn
- + tools/torbrowser/l10n/migrations/bug-42202-crypto-safety.py
Changes:
=====================================
browser/actors/CryptoSafetyParent.jsm
=====================================
@@ -20,17 +20,8 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/TorDomainIsolator.jsm"
);
-XPCOMUtils.defineLazyGetter(lazy, "cryptoSafetyBundle", () => {
- return Services.strings.createBundle(
- "chrome://browser/locale/cryptoSafetyPrompt.properties"
- );
-});
-
-// en-US fallback in case a locale is missing a string.
-XPCOMUtils.defineLazyGetter(lazy, "fallbackCryptoSafetyBundle", () => {
- return Services.strings.createBundle(
- "resource:///chrome/en-US/locale/browser/cryptoSafetyPrompt.properties"
- );
+ChromeUtils.defineLazyGetter(lazy, "CryptoStrings", function () {
+ return new Localization(["browser/tor-browser.ftl"]);
});
XPCOMUtils.defineLazyPreferenceGetter(
@@ -40,26 +31,8 @@ XPCOMUtils.defineLazyPreferenceGetter(
true // Defaults to true.
);
-/**
- * Get a formatted string from the locale's bundle, or the en-US bundle if the
- * string is missing.
- *
- * @param {string} name - The string's name.
- * @param {string[]} [args] - Positional arguments to pass to the format string,
- * or leave empty if none are needed.
- *
- * @returns {string} - The formatted string.
- */
-function getString(name, args = []) {
- try {
- return lazy.cryptoSafetyBundle.formatStringFromName(name, args);
- } catch {
- return lazy.fallbackCryptoSafetyBundle.formatStringFromName(name, args);
- }
-}
-
class CryptoSafetyParent extends JSWindowActorParent {
- receiveMessage(aMessage) {
+ async receiveMessage(aMessage) {
if (
!lazy.isCryptoSafetyEnabled ||
aMessage.name !== "CryptoSafety:CopiedText"
@@ -72,14 +45,25 @@ class CryptoSafetyParent extends JSWindowActorParent {
address = `${address.substring(0, 32)}…`;
}
+ const [titleText, bodyText, reloadText, dismissText] =
+ await lazy.CryptoStrings.formatValues([
+ { id: "crypto-safety-prompt-title" },
+ {
+ id: "crypto-safety-prompt-body",
+ args: { address, host: aMessage.data.host },
+ },
+ { id: "crypto-safety-prompt-reload-button" },
+ { id: "crypto-safety-prompt-dismiss-button" },
+ ]);
+
const buttonPressed = Services.prompt.confirmEx(
this.browsingContext.topChromeWindow,
- getString("cryptoSafetyPrompt.cryptoTitle"),
- getString("cryptoSafetyPrompt.cryptoBody", [address, aMessage.data.host]),
+ titleText,
+ bodyText,
Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_1,
- getString("cryptoSafetyPrompt.primaryAction"),
- getString("cryptoSafetyPrompt.secondaryAction"),
+ reloadText,
+ dismissText,
null,
null,
{}
=====================================
browser/locales/en-US/browser/tor-browser.ftl
=====================================
@@ -382,3 +382,12 @@ tor-circuit-panel-new-button = New Tor circuit for this site
tor-circuit-panel-new-button-description-guard = Your guard node may not change
# Shown when the first node in the circuit is a bridge node.
tor-circuit-panel-new-button-description-bridge = Your bridge may not change
+
+## This dialog is shown when copying a suspected cryptocurrency address from a plain HTTP website.
+
+crypto-safety-prompt-title = Cryptocurrency address copied from an insecure website
+# $address (String) - The cryptocurrency address, possibly truncated.
+# $host (String) - The website host the address was copied from.
+crypto-safety-prompt-body = The copied text ({ $address }) appears to be a cryptocurrency address. Since the connection to { $host } is not secure, the address may have been modified and should not be trusted. You can try establishing a secure connection by reconnecting with a new circuit.
+crypto-safety-prompt-reload-button = Reload Tab with a New Circuit
+crypto-safety-prompt-dismiss-button = Dismiss Warning
=====================================
browser/locales/en-US/chrome/browser/cryptoSafetyPrompt.properties deleted
=====================================
@@ -1,19 +0,0 @@
-# Copyright (c) 2022, The Tor Project, Inc.
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-cryptoSafetyPrompt.cryptoTitle=Cryptocurrency address copied from an insecure website
-# LOCALIZATION NOTE:
-# %1$S is the copied cryptocurrency address.
-# %2$S is the website host.
-cryptoSafetyPrompt.cryptoBody=The copied text (%1$S) appears to be a cryptocurrency address. Since the connection to %2$S is not secure, the address may have been modified and should not be trusted. You can try establishing a secure connection by reconnecting with a new circuit.
-# LOCALIZATION NOTE: %S will be replaced with the cryptocurrency address.
-cryptoSafetyPrompt.cryptoWarning=A cryptocurrency address (%S) has been copied from an insecure website. It could have been modified.
-cryptoSafetyPrompt.whatCanHeading=What can you do about it?
-cryptoSafetyPrompt.whatCanBody=You can try reconnecting with a new circuit to establish a secure connection, or accept the risk and dismiss this warning.
-cryptoSafetyPrompt.learnMore=Learn more
-cryptoSafetyPrompt.primaryAction=Reload Tab with a New Circuit
-cryptoSafetyPrompt.primaryActionAccessKey=R
-cryptoSafetyPrompt.secondaryAction=Dismiss Warning
-cryptoSafetyPrompt.secondaryActionAccessKey=B
=====================================
browser/locales/jar.mn
=====================================
@@ -33,5 +33,4 @@
locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
- locale/browser/cryptoSafetyPrompt.properties (%chrome/browser/cryptoSafetyPrompt.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
=====================================
tools/torbrowser/l10n/migrations/bug-42202-crypto-safety.py
=====================================
@@ -0,0 +1,34 @@
+import fluent.syntax.ast as FTL
+from fluent.migrate.helpers import VARIABLE_REFERENCE, transforms_from
+from fluent.migrate.transforms import REPLACE
+
+
+def migrate(ctx):
+ legacy_path = "cryptoSafetyPrompt.properties"
+
+ ctx.add_transforms(
+ "tor-browser.ftl",
+ "tor-browser.ftl",
+ transforms_from(
+ """
+crypto-safety-prompt-title = { COPY(path, "cryptoSafetyPrompt.cryptoTitle") }
+crypto-safety-prompt-reload-button = { COPY(path, "cryptoSafetyPrompt.primaryAction") }
+crypto-safety-prompt-dismiss-button = { COPY(path, "cryptoSafetyPrompt.secondaryAction") }
+""",
+ path=legacy_path,
+ )
+ + [
+ # Replace "%1$S" and "%2$S" with "{ $address }" and "{ $host }"
+ FTL.Message(
+ id=FTL.Identifier("crypto-safety-prompt-body"),
+ value=REPLACE(
+ legacy_path,
+ "cryptoSafetyPrompt.cryptoBody",
+ {
+ "%1$S": VARIABLE_REFERENCE("address"),
+ "%2$S": VARIABLE_REFERENCE("host"),
+ },
+ ),
+ ),
+ ],
+ )
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/27fee80ae39ee99235a8a6d9063ac4cf92a1bc28...bb6f56ad7e28e825aa5e0908b24318127424c080
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/27fee80ae39ee99235a8a6d9063ac4cf92a1bc28...bb6f56ad7e28e825aa5e0908b24318127424c080
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/tor-commits/attachments/20240408/ae51bcf8/attachment-0001.htm>
More information about the tor-commits
mailing list