[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