Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gk/tor-browser
  • peterstory/tor-browser
  • sanketh/tor-browser
  • acat/tor-browser
  • sysrqb/tor-browser
  • boklm/tor-browser
  • dan/tor-browser
  • fabrizio/tor-browser
  • victorvw/tor-browser
  • aguestuser/tor-browser
  • WofWca/tor-browser
  • p13dz/tor-browser
  • mwolfe/tor-browser
  • tpo/applications/tor-browser
  • brade/tor-browser
  • pierov/tor-browser
  • ma1/tor-browser
  • JeremyRand/tor-browser
  • henry/tor-browser
  • msimonelli/tor-browser
  • cypherpunks1/tor-browser
  • blackZwork/tor-browser
  • starlingroot/tor-browser
  • cohosh/tor-browser
  • t-m-w/tor-browser
  • trinity-1686a/tor-browser
  • HHN/tor-browser
  • emmapeel/tor-browser
  • Achintya_Sharma/tor-browser
  • guest475646844/tor-browser
  • Mima/tor-browser
  • morgan/tor-browser
  • clairehurst/tor-browser
  • NoisyCoil/tor-browser
  • gus/tor-browser
  • Francewhoa/tor-browser
  • novialriptide/tor-browser
  • jwilde/tor-browser
  • brizental/tor-browser
  • ourhopeforfreedom/tor-browser
  • onyinyang/tor-browser
  • Noino/tor-browser
  • murmelurmel/tor-browser
43 results
Show changes
Commits on Source (3)
......@@ -58,6 +58,7 @@
<link rel="localization" href="security/certificates/certManager.ftl"/>
<link rel="localization" href="security/certificates/deviceManager.ftl"/>
<link rel="localization" href="toolkit/updates/history.ftl"/>
<link rel="localization" href="browser/base-browser.ftl"/>
<link rel="shortcut icon" href="chrome://global/skin/icons/settings.svg"/>
......
......@@ -8,65 +8,6 @@ ChromeUtils.defineModuleGetter(
"resource://gre/modules/SecurityLevel.jsm"
);
XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", () => {
let strings = {
// Generic terms
security_level: "Security Level",
security_level_standard: "Standard",
security_level_safer: "Safer",
security_level_safest: "Safest",
security_level_tooltip_standard: "Security Level: Standard",
security_level_tooltip_safer: "Security Level: Safer",
security_level_tooltip_safest: "Security Level: Safest",
// Shown only for custom level
security_level_custom: "Custom",
security_level_restore: "Restore Defaults",
security_level_learn_more: "Learn more",
// Panel
security_level_open_settings: "Settings…",
security_level_standard_summary:
"All browser and website features are enabled.",
security_level_safer_summary:
"Disables website features that are often dangerous, causing some sites to lose functionality.",
security_level_safest_summary:
"Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.",
security_level_custom_heading: "Custom security level configured",
security_level_custom_summary:
"Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.",
// Security level section in about:preferences#privacy
security_level_overview:
"Disable certain web features that can be used to attack your security and anonymity.",
security_level_list_safer: "At the safer setting:",
security_level_list_safest: "At the safest setting:",
// Strings for descriptions
security_level_js_https_only: "JavaScript is disabled on non-HTTPS sites.",
security_level_js_disabled:
"JavaScript is disabled by default on all sites.",
security_level_limit_typography:
"Some fonts and math symbols are disabled.",
security_level_limit_typography_svg:
"Some fonts, icons, math symbols, and images are disabled.",
security_level_limit_media:
"Audio and video (HTML5 media), and WebGL are click-to-play.",
};
let bundle = null;
try {
bundle = Services.strings.createBundle(
"chrome://browser/locale/securityLevel.properties"
);
} catch (e) {
console.warn("Could not load the Security Level strings");
}
if (bundle) {
for (const key of Object.keys(strings)) {
try {
strings[key] = bundle.GetStringFromName(key);
} catch (e) {}
}
}
return strings;
});
/*
Security Level Button Code
......@@ -100,12 +41,30 @@ var SecurityLevelButton = {
if (!level) {
return;
}
const customStr = SecurityLevelPrefs.securityCustom ? "_custom" : "";
this._button.setAttribute("level", `${level}${customStr}`);
this._button.setAttribute(
"tooltiptext",
SecurityLevelStrings[`security_level_tooltip_${level}`]
);
const custom = SecurityLevelPrefs.securityCustom;
this._button.setAttribute("level", custom ? `${level}_custom` : level);
let l10nIdLevel;
switch (level) {
case "standard":
l10nIdLevel = "security-level-toolbar-button-standard";
break;
case "safer":
l10nIdLevel = "security-level-toolbar-button-safer";
break;
case "safest":
l10nIdLevel = "security-level-toolbar-button-safest";
break;
default:
throw Error(`Unhandled level: ${level}`);
}
if (custom) {
// Don't distinguish between the different levels when in the custom
// state. We just want to emphasise that it is custom rather than any
// specific level.
l10nIdLevel = "security-level-toolbar-button-custom";
}
document.l10n.setAttributes(this._button, l10nIdLevel);
},
/**
......@@ -159,7 +118,6 @@ var SecurityLevelButton = {
window.gNavToolbox.palette.querySelector("#security-level-button");
// Set a label to be be used as the accessible name, and to be shown in the
// overflow menu and during customization.
this._button.setAttribute("label", SecurityLevelStrings.security_level);
this._button.addEventListener("command", () => this.openPopup());
// set the initial class based off of the current pref
this._configUIFromPrefs();
......@@ -213,21 +171,12 @@ var SecurityLevelPanel = {
settingsButton: document.getElementById("securityLevel-settings"),
};
document.getElementById("securityLevel-header").textContent =
SecurityLevelStrings.security_level;
this._elements.customName.textContent =
SecurityLevelStrings.security_level_custom;
const learnMoreEl = document.getElementById("securityLevel-learnMore");
learnMoreEl.textContent = SecurityLevelStrings.security_level_learn_more;
learnMoreEl.addEventListener("click", event => {
window.openTrustedLinkIn(learnMoreEl.href, "tab");
this.hide();
event.preventDefault();
});
this._elements.restoreDefaultsButton.textContent =
SecurityLevelStrings.security_level_restore;
this._elements.settingsButton.textContent =
SecurityLevelStrings.security_level_open_settings;
this._elements.restoreDefaultsButton.addEventListener("command", () => {
this.restoreDefaults();
......@@ -268,11 +217,30 @@ var SecurityLevelPanel = {
// Descriptions change based on security level
this._elements.background.setAttribute("level", level);
this._elements.levelName.textContent =
SecurityLevelStrings[`security_level_${level}`];
this._elements.summary.textContent = custom
? SecurityLevelStrings.security_level_custom_summary
: SecurityLevelStrings[`security_level_${level}_summary`];
let l10nIdLevel;
let l10nIdSummary;
switch (level) {
case "standard":
l10nIdLevel = "security-level-panel-level-standard";
l10nIdSummary = "security-level-summary-standard";
break;
case "safer":
l10nIdLevel = "security-level-panel-level-safer";
l10nIdSummary = "security-level-summary-safer";
break;
case "safest":
l10nIdLevel = "security-level-panel-level-safest";
l10nIdSummary = "security-level-summary-safest";
break;
default:
throw Error(`Unhandled level: ${level}`);
}
if (custom) {
l10nIdSummary = "security-level-summary-custom";
}
document.l10n.setAttributes(this._elements.levelName, l10nIdLevel);
document.l10n.setAttributes(this._elements.summary, l10nIdSummary);
},
/**
......@@ -358,25 +326,13 @@ var SecurityLevelPreferences = {
this._customNotification = document.getElementById(
"securityLevel-customNotification"
);
this._radiogroup = document.getElementById("securityLevel-radiogroup");
document.querySelector("#securityLevel-groupbox h2").textContent =
SecurityLevelStrings.security_level;
document.getElementById("securityLevel-overview").textContent =
SecurityLevelStrings.security_level_overview;
document
.getElementById("securityLevel-learnMore")
.setAttribute("value", SecurityLevelStrings.security_level_learn_more);
document.getElementById("securityLevel-customHeading").textContent =
SecurityLevelStrings.security_level_custom_heading;
document.getElementById("securityLevel-customDescription").textContent =
SecurityLevelStrings.security_level_custom_summary;
const restoreDefaultsButton = document.getElementById(
"securityLevel-restoreDefaults"
);
restoreDefaultsButton.textContent =
SecurityLevelStrings.security_level_restore;
.getElementById("securityLevel-restoreDefaults")
.addEventListener("command", () => {
SecurityLevelPrefs.securityCustom = false;
});
this._radiogroup = document.getElementById("securityLevel-radiogroup");
this._radioOptions = Array.from(
this._radiogroup.querySelectorAll(".securityLevel-radio-option"),
......@@ -384,46 +340,7 @@ var SecurityLevelPreferences = {
return { container, radio: container.querySelector("radio") };
}
);
const descListItemsMap = {
safer: [
SecurityLevelStrings.security_level_js_https_only,
SecurityLevelStrings.security_level_limit_typography,
SecurityLevelStrings.security_level_limit_media,
],
safest: [
SecurityLevelStrings.security_level_js_disabled,
SecurityLevelStrings.security_level_limit_typography_svg,
SecurityLevelStrings.security_level_limit_media,
],
};
for (const { container, radio } of this._radioOptions) {
const level = radio.value;
radio.setAttribute(
"label",
SecurityLevelStrings[`security_level_${level}`]
);
container.querySelector(".summary").textContent =
SecurityLevelStrings[`security_level_${level}_summary`];
const descListItems = descListItemsMap[level];
if (!descListItems) {
continue;
}
const descrList = container.querySelector(
".securityLevel-descriptionList"
);
// TODO: Add the elements in securityLevelPreferences.inc.xhtml again
// when we switch to Fluent
for (const text of descListItems) {
let elem = document.createXULElement("description");
elem.textContent = text;
elem.className = "indent";
descrList.append(elem);
}
}
restoreDefaultsButton.addEventListener("command", () => {
SecurityLevelPrefs.securityCustom = false;
});
this._radiogroup.addEventListener("select", () => {
SecurityLevelPrefs.securityLevel = this._radiogroup.value;
});
......
......@@ -7,20 +7,35 @@
level="top"
class="cui-widget-panel panel-no-padding">
<box class="panel-header">
<html:h1 id="securityLevel-header"></html:h1>
<html:h1
id="securityLevel-header"
data-l10n-id="security-level-panel-heading"
></html:h1>
</box>
<toolbarseparator id="securityLevel-separator"></toolbarseparator>
<vbox id="securityLevel-background" class="panel-subview-body">
<html:p id="securityLevel-subheading">
<html:span id="securityLevel-level"></html:span>
<html:span id="securityLevel-custom"></html:span>
<html:span
id="securityLevel-custom"
data-l10n-id="security-level-panel-custom-badge"
></html:span>
</html:p>
<html:p id="securityLevel-summary"></html:p>
<html:a id="securityLevel-learnMore" href="about:manual#security-settings">
</html:a>
<html:a
id="securityLevel-learnMore"
data-l10n-id="security-level-panel-learn-more-link"
href="about:manual#security-settings"
></html:a>
</vbox>
<hbox class="panel-footer">
<button id="securityLevel-settings"/>
<button id="securityLevel-restoreDefaults"/>
<button
id="securityLevel-settings"
data-l10n-id="security-level-panel-open-settings-button"
/>
<button
id="securityLevel-restoreDefaults"
data-l10n-id="security-level-restore-defaults-button"
/>
</hbox>
</panel>
......@@ -2,37 +2,64 @@
data-category="panePrivacy"
data-subcategory="securitylevel"
hidden="true">
<label><html:h2></html:h2></label>
<label>
<html:h2 data-l10n-id="security-level-preferences-heading"></html:h2>
</label>
<vbox flex="1">
<description flex="1">
<html:span id="securityLevel-overview" class="tail-with-learn-more">
</html:span>
<label id="securityLevel-learnMore"
class="learnMore text-link"
is="text-link"
href="about:manual#security-settings"
useoriginprincipal="true"/>
<html:span
id="securityLevel-overview"
class="tail-with-learn-more"
data-l10n-id="security-level-preferences-overview"
></html:span>
<label
id="securityLevel-learnMore"
class="learnMore text-link"
is="text-link"
data-l10n-id="security-level-preferences-learn-more-link"
href="about:manual#security-settings"
useoriginprincipal="true"
/>
</description>
<hbox id="securityLevel-customNotification"
class="info-box-container"
flex="1">
<hbox
id="securityLevel-customNotification"
class="info-box-container"
flex="1"
>
<hbox class="info-icon-container">
<image class="info-icon securityLevel-custom-warning-icon"/>
</hbox>
<vbox flex="1">
<label id="securityLevel-customHeading"/>
<description id="securityLevel-customDescription" flex="1"/>
<label
id="securityLevel-customHeading"
data-l10n-id="security-level-preferences-custom-heading"
/>
<description
id="securityLevel-customDescription"
data-l10n-id="security-level-summary-custom"
flex="1"
/>
</vbox>
<hbox align="center">
<button id="securityLevel-restoreDefaults"/>
<button
id="securityLevel-restoreDefaults"
data-l10n-id="security-level-restore-defaults-button"
/>
</hbox>
</hbox>
<radiogroup id="securityLevel-radiogroup">
<vbox class="securityLevel-radio-option">
<radio value="standard"
aria-describedby="securityLevelSummary-standard"/>
<radio
value="standard"
data-l10n-id="security-level-preferences-level-standard"
aria-describedby="securityLevelSummary-standard"
/>
<vbox id="securityLevelSummary-standard">
<description class="summary indent" flex="1"/>
<description
class="summary indent"
flex="1"
data-l10n-id="security-level-summary-standard"
/>
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
......@@ -41,19 +68,59 @@
- securityLevel-descriptionList is shown or hidden, its text content
- is included or excluded from the accessible description,
- respectively. -->
<radio value="safer"
aria-describedby="securityLevelSummary-safer"/>
<radio
value="safer"
data-l10n-id="security-level-preferences-level-safer"
aria-describedby="securityLevelSummary-safer"
/>
<vbox id="securityLevelSummary-safer">
<description class="summary indent" flex="1"/>
<vbox class="securityLevel-descriptionList indent"/>
<description
class="summary indent"
flex="1"
data-l10n-id="security-level-summary-safer"
/>
<vbox class="securityLevel-descriptionList indent">
<description
class="indent"
data-l10n-id="security-level-preferences-bullet-https-only-javascript"
/>
<description
class="indent"
data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols"
/>
<description
class="indent"
data-l10n-id="security-level-preferences-bullet-limit-media"
/>
</vbox>
</vbox>
</vbox>
<vbox class="securityLevel-radio-option">
<radio value="safest"
aria-describedby="securityLevelSummary-safest"/>
<radio
value="safest"
data-l10n-id="security-level-preferences-level-safest"
aria-describedby="securityLevelSummary-safest"
/>
<vbox id="securityLevelSummary-safest">
<description class="summary indent" flex="1"/>
<vbox class="securityLevel-descriptionList indent"/>
<description
class="summary indent"
flex="1"
data-l10n-id="security-level-summary-safest"
/>
<vbox class="securityLevel-descriptionList indent">
<description
class="indent"
data-l10n-id="security-level-preferences-bullet-disabled-javascript"
/>
<description
class="indent"
data-l10n-id="security-level-preferences-bullet-limit-font-and-symbols-and-images"
/>
<description
class="indent"
data-l10n-id="security-level-preferences-bullet-limit-media"
/>
</vbox>
</vbox>
</vbox>
</radiogroup>
......
......@@ -70,6 +70,7 @@ new-identity-dialog-confirm =
new-identity-blocked-home-notification = { -brand-short-name } blocked your homepage ({ $url }) from loading because it might recognize your previous session.
# Button to continue loading the home page, despite the warning message.
new-identity-blocked-home-ignore-button = Load it anyway
## Preferences - Letterboxing.
# The word "Letterboxing" is the proper noun for the Tor Browser feature, and is therefore capitalised.
......@@ -94,3 +95,74 @@ letterboxing-disabled-description = Letterboxing is currently disabled.
# "Letterboxing" should be treated as a feature/product name, and likely not changed in other languages.
letterboxing-enable-button =
.label = Enable Letterboxing
## Security level toolbar button.
## Uses sentence case in English (US).
## ".label" is the accessible name, and shown in the overflow menu and when customizing the toolbar.
security-level-toolbar-button-standard =
.label = Security level
.tooltiptext = Security level: Standard
security-level-toolbar-button-safer =
.label = Security level
.tooltiptext = Security level: Safer
security-level-toolbar-button-safest =
.label = Security level
.tooltiptext = Security level: Safest
# Used when the user is in some custom configuration that does not match a security level.
security-level-toolbar-button-custom =
.label = Security level
.tooltiptext = Security level: Custom
## Security level popup panel.
# Uses sentence case in English (US).
security-level-panel-heading = Security level
security-level-panel-level-standard = Standard
security-level-panel-level-safer = Safer
security-level-panel-level-safest = Safest
security-level-panel-learn-more-link = Learn more
# Button to open security level settings.
security-level-panel-open-settings-button = Settings…
## Security level settings.
security-level-preferences-heading = Security Level
security-level-preferences-overview = Disable certain web features that can be used to attack your security and anonymity.
security-level-preferences-learn-more-link = Learn more
security-level-preferences-level-standard =
.label = Standard
security-level-preferences-level-safer =
.label = Safer
security-level-preferences-level-safest =
.label = Safest
## Security level summaries shown in security panel and settings.
security-level-summary-standard = All browser and website features are enabled.
security-level-summary-safer = Disables website features that are often dangerous, causing some sites to lose functionality.
security-level-summary-safest = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
## Security level feature bullet points.
## Shown in the settings under the security level when it is selected.
security-level-preferences-bullet-https-only-javascript = JavaScript is disabled on non-HTTPS sites.
security-level-preferences-bullet-limit-font-and-symbols = Some fonts and math symbols are disabled.
security-level-preferences-bullet-limit-media = Audio and video (HTML5 media), and WebGL are click-to-play.
security-level-preferences-bullet-disabled-javascript = JavaScript is disabled by default on all sites.
security-level-preferences-bullet-limit-font-and-symbols-and-images = Some fonts, icons, math symbols, and images are disabled.
## Custom security level.
## Some custom preferences configuration has placed the user outside one of the standard three levels.
# Shown in the security level panel as an orange badge next to the expected level.
security-level-panel-custom-badge = Custom
# Shown in the security level settings in a warning box.
security-level-preferences-custom-heading = Custom security level configured
# Description of custom state and recommended action.
# Shown in the security level panel and settings.
security-level-summary-custom = Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.
# Button to undo custom changes to the security level and place the user in one of the standard security levels.
# Shown in the security level panel and settings.
security-level-restore-defaults-button = Restore defaults
......@@ -32,5 +32,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/securityLevel.properties (%chrome/browser/securityLevel.properties)
% locale browser-region @AB_CD@ %locale/browser-region/
import fluent.syntax.ast as FTL
from fluent.migrate.helpers import TERM_REFERENCE, transforms_from
from fluent.migrate.transforms import REPLACE
def migrate(ctx):
legacy_path = "newIdentity.properties"
ctx.add_transforms(
"base-browser.ftl",
"base-browser.ftl",
transforms_from(
"""
menu-new-identity =
.label = { COPY(path, "new_identity") }
.accesskey = { COPY(path, "new_identity_menu_accesskey") }
appmenuitem-new-identity =
.label = { COPY(path, "new_identity_sentence_case") }
toolbar-new-identity =
.label = { COPY(path, "new_identity_sentence_case") }
.tooltiptext = { toolbar-new-identity.label }
new-identity-dialog-title = { COPY(path, "new_identity_prompt_title") }
new-identity-dialog-never-ask-checkbox =
.label = { COPY(path, "new_identity_ask_again") }
new-identity-blocked-home-ignore-button = { COPY(path, "new_identity_home_load_button") }
""",
path=legacy_path,
)
+ [
# Replace "%S" with "{ -brand-short-name }" in confirm button.
FTL.Message(
id=FTL.Identifier("new-identity-dialog-confirm"),
value=None,
attributes=[
FTL.Attribute(
id=FTL.Identifier("label"),
value=REPLACE(
legacy_path,
"new_identity_restart",
{"%1$S": TERM_REFERENCE("brand-short-name")},
),
),
],
),
],
)