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
-
58d32687
by Henry Wilkes at 2024-04-08T18:58:55+00:00
-
bb6f56ad
by Henry Wilkes at 2024-04-08T18:58:55+00:00
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:
... | ... | @@ -20,17 +20,8 @@ ChromeUtils.defineModuleGetter( |
20 | 20 | "resource://gre/modules/TorDomainIsolator.jsm"
|
21 | 21 | );
|
22 | 22 | |
23 | -XPCOMUtils.defineLazyGetter(lazy, "cryptoSafetyBundle", () => {
|
|
24 | - return Services.strings.createBundle(
|
|
25 | - "chrome://browser/locale/cryptoSafetyPrompt.properties"
|
|
26 | - );
|
|
27 | -});
|
|
28 | - |
|
29 | -// en-US fallback in case a locale is missing a string.
|
|
30 | -XPCOMUtils.defineLazyGetter(lazy, "fallbackCryptoSafetyBundle", () => {
|
|
31 | - return Services.strings.createBundle(
|
|
32 | - "resource:///chrome/en-US/locale/browser/cryptoSafetyPrompt.properties"
|
|
33 | - );
|
|
23 | +ChromeUtils.defineLazyGetter(lazy, "CryptoStrings", function () {
|
|
24 | + return new Localization(["browser/tor-browser.ftl"]);
|
|
34 | 25 | });
|
35 | 26 | |
36 | 27 | XPCOMUtils.defineLazyPreferenceGetter(
|
... | ... | @@ -40,26 +31,8 @@ XPCOMUtils.defineLazyPreferenceGetter( |
40 | 31 | true // Defaults to true.
|
41 | 32 | );
|
42 | 33 | |
43 | -/**
|
|
44 | - * Get a formatted string from the locale's bundle, or the en-US bundle if the
|
|
45 | - * string is missing.
|
|
46 | - *
|
|
47 | - * @param {string} name - The string's name.
|
|
48 | - * @param {string[]} [args] - Positional arguments to pass to the format string,
|
|
49 | - * or leave empty if none are needed.
|
|
50 | - *
|
|
51 | - * @returns {string} - The formatted string.
|
|
52 | - */
|
|
53 | -function getString(name, args = []) {
|
|
54 | - try {
|
|
55 | - return lazy.cryptoSafetyBundle.formatStringFromName(name, args);
|
|
56 | - } catch {
|
|
57 | - return lazy.fallbackCryptoSafetyBundle.formatStringFromName(name, args);
|
|
58 | - }
|
|
59 | -}
|
|
60 | - |
|
61 | 34 | class CryptoSafetyParent extends JSWindowActorParent {
|
62 | - receiveMessage(aMessage) {
|
|
35 | + async receiveMessage(aMessage) {
|
|
63 | 36 | if (
|
64 | 37 | !lazy.isCryptoSafetyEnabled ||
|
65 | 38 | aMessage.name !== "CryptoSafety:CopiedText"
|
... | ... | @@ -72,14 +45,25 @@ class CryptoSafetyParent extends JSWindowActorParent { |
72 | 45 | address = `${address.substring(0, 32)}…`;
|
73 | 46 | }
|
74 | 47 | |
48 | + const [titleText, bodyText, reloadText, dismissText] =
|
|
49 | + await lazy.CryptoStrings.formatValues([
|
|
50 | + { id: "crypto-safety-prompt-title" },
|
|
51 | + {
|
|
52 | + id: "crypto-safety-prompt-body",
|
|
53 | + args: { address, host: aMessage.data.host },
|
|
54 | + },
|
|
55 | + { id: "crypto-safety-prompt-reload-button" },
|
|
56 | + { id: "crypto-safety-prompt-dismiss-button" },
|
|
57 | + ]);
|
|
58 | + |
|
75 | 59 | const buttonPressed = Services.prompt.confirmEx(
|
76 | 60 | this.browsingContext.topChromeWindow,
|
77 | - getString("cryptoSafetyPrompt.cryptoTitle"),
|
|
78 | - getString("cryptoSafetyPrompt.cryptoBody", [address, aMessage.data.host]),
|
|
61 | + titleText,
|
|
62 | + bodyText,
|
|
79 | 63 | Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
|
80 | 64 | Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_1,
|
81 | - getString("cryptoSafetyPrompt.primaryAction"),
|
|
82 | - getString("cryptoSafetyPrompt.secondaryAction"),
|
|
65 | + reloadText,
|
|
66 | + dismissText,
|
|
83 | 67 | null,
|
84 | 68 | null,
|
85 | 69 | {}
|
... | ... | @@ -382,3 +382,12 @@ tor-circuit-panel-new-button = New Tor circuit for this site |
382 | 382 | tor-circuit-panel-new-button-description-guard = Your guard node may not change
|
383 | 383 | # Shown when the first node in the circuit is a bridge node.
|
384 | 384 | tor-circuit-panel-new-button-description-bridge = Your bridge may not change
|
385 | + |
|
386 | +## This dialog is shown when copying a suspected cryptocurrency address from a plain HTTP website.
|
|
387 | + |
|
388 | +crypto-safety-prompt-title = Cryptocurrency address copied from an insecure website
|
|
389 | +# $address (String) - The cryptocurrency address, possibly truncated.
|
|
390 | +# $host (String) - The website host the address was copied from.
|
|
391 | +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.
|
|
392 | +crypto-safety-prompt-reload-button = Reload Tab with a New Circuit
|
|
393 | +crypto-safety-prompt-dismiss-button = Dismiss Warning |
1 | -# Copyright (c) 2022, The Tor Project, Inc.
|
|
2 | -# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3 | -# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4 | -# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
5 | - |
|
6 | -cryptoSafetyPrompt.cryptoTitle=Cryptocurrency address copied from an insecure website
|
|
7 | -# LOCALIZATION NOTE:
|
|
8 | -# %1$S is the copied cryptocurrency address.
|
|
9 | -# %2$S is the website host.
|
|
10 | -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.
|
|
11 | -# LOCALIZATION NOTE: %S will be replaced with the cryptocurrency address.
|
|
12 | -cryptoSafetyPrompt.cryptoWarning=A cryptocurrency address (%S) has been copied from an insecure website. It could have been modified.
|
|
13 | -cryptoSafetyPrompt.whatCanHeading=What can you do about it?
|
|
14 | -cryptoSafetyPrompt.whatCanBody=You can try reconnecting with a new circuit to establish a secure connection, or accept the risk and dismiss this warning.
|
|
15 | -cryptoSafetyPrompt.learnMore=Learn more
|
|
16 | -cryptoSafetyPrompt.primaryAction=Reload Tab with a New Circuit
|
|
17 | -cryptoSafetyPrompt.primaryActionAccessKey=R
|
|
18 | -cryptoSafetyPrompt.secondaryAction=Dismiss Warning
|
|
19 | -cryptoSafetyPrompt.secondaryActionAccessKey=B |
... | ... | @@ -33,5 +33,4 @@ |
33 | 33 | locale/browser/safebrowsing/safebrowsing.properties (%chrome/browser/safebrowsing/safebrowsing.properties)
|
34 | 34 | locale/browser/feeds/subscribe.properties (%chrome/browser/feeds/subscribe.properties)
|
35 | 35 | locale/browser/syncSetup.properties (%chrome/browser/syncSetup.properties)
|
36 | - locale/browser/cryptoSafetyPrompt.properties (%chrome/browser/cryptoSafetyPrompt.properties)
|
|
37 | 36 | % locale browser-region @AB_CD@ %locale/browser-region/ |
1 | +import fluent.syntax.ast as FTL
|
|
2 | +from fluent.migrate.helpers import VARIABLE_REFERENCE, transforms_from
|
|
3 | +from fluent.migrate.transforms import REPLACE
|
|
4 | + |
|
5 | + |
|
6 | +def migrate(ctx):
|
|
7 | + legacy_path = "cryptoSafetyPrompt.properties"
|
|
8 | + |
|
9 | + ctx.add_transforms(
|
|
10 | + "tor-browser.ftl",
|
|
11 | + "tor-browser.ftl",
|
|
12 | + transforms_from(
|
|
13 | + """
|
|
14 | +crypto-safety-prompt-title = { COPY(path, "cryptoSafetyPrompt.cryptoTitle") }
|
|
15 | +crypto-safety-prompt-reload-button = { COPY(path, "cryptoSafetyPrompt.primaryAction") }
|
|
16 | +crypto-safety-prompt-dismiss-button = { COPY(path, "cryptoSafetyPrompt.secondaryAction") }
|
|
17 | +""",
|
|
18 | + path=legacy_path,
|
|
19 | + )
|
|
20 | + + [
|
|
21 | + # Replace "%1$S" and "%2$S" with "{ $address }" and "{ $host }"
|
|
22 | + FTL.Message(
|
|
23 | + id=FTL.Identifier("crypto-safety-prompt-body"),
|
|
24 | + value=REPLACE(
|
|
25 | + legacy_path,
|
|
26 | + "cryptoSafetyPrompt.cryptoBody",
|
|
27 | + {
|
|
28 | + "%1$S": VARIABLE_REFERENCE("address"),
|
|
29 | + "%2$S": VARIABLE_REFERENCE("host"),
|
|
30 | + },
|
|
31 | + ),
|
|
32 | + ),
|
|
33 | + ],
|
|
34 | + ) |