morgan pushed to branch tor-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 1de54b94 by Henry Wilkes at 2026-08-18T12:36:03+00:00 BB 45211: Settings UI for protections from third party applications. - - - - - 6cc91e3f by Henry Wilkes at 2026-08-18T12:36:03+00:00 fixup! Base Browser strings BB 45211: Add strings for protections from third party applications. - - - - - f7853022 by Henry Wilkes at 2026-08-18T12:36:03+00:00 TB 45211: Add extra Tor Browser UI for protections from third-party applications. - - - - - 8a2eb2f2 by Henry Wilkes at 2026-08-18T12:36:03+00:00 fixup! Tor Browser strings TB 45211: Add tails recommendation. - - - - - 6 changed files: - browser/components/preferences/config/privacy.mjs - + browser/components/preferences/config/protections-from-apps.mjs - browser/components/preferences/jar.mn - browser/components/preferences/preferences.js - toolkit/locales/en-US/toolkit/global/base-browser.ftl - toolkit/locales/en-US/toolkit/global/tor-browser.ftl Changes: ===================================== browser/components/preferences/config/privacy.mjs ===================================== @@ -7,6 +7,11 @@ import { SettingGroupManager } from "chrome://browser/content/preferences/config/SettingGroupManager.mjs"; import { Preferences } from "chrome://global/content/preferences/Preferences.mjs"; +ChromeUtils.importESModule( + "chrome://browser/content/preferences/config/protections-from-apps.mjs", + { global: "current" } +); + const XPCOMUtils = ChromeUtils.importESModule( "resource://gre/modules/XPCOMUtils.sys.mjs" ).XPCOMUtils; ===================================== browser/components/preferences/config/protections-from-apps.mjs ===================================== @@ -0,0 +1,93 @@ +/* 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 https://mozilla.org/MPL/2.0/. */ + +import { SettingGroupManager } from "chrome://browser/content/preferences/config/SettingGroupManager.mjs"; +import { Preferences } from "chrome://global/content/preferences/Preferences.mjs"; + +Preferences.addAll([ + { id: "privacy.exposeContentTitleInWindow", type: "bool" }, + { id: "privacy.exposeContentTitleInWindow.pbm", type: "bool" }, +]); + +Preferences.addSetting({ + id: "protectionsTailsBanner", +}); + +Preferences.addSetting({ + id: "exposeContentWindowTitle", + pref: "privacy.exposeContentTitleInWindow", +}); + +Preferences.addSetting({ + id: "exposePrivateContentWindowTitle", + pref: "privacy.exposeContentTitleInWindow.pbm", +}); + +Preferences.addSetting({ + id: "genericWindowTitles", + deps: ["exposeContentWindowTitle", "exposePrivateContentWindowTitle"], + get: (_pref, { exposeContentWindowTitle }) => { + // NOTE: The behaviour of `privacy.exposeContentTitleInWindow` (all) and + // `privacy.exposeContentTitleInWindow.pbm` (pbm) is: + // + // || all=true | all=false | + // ==========++========================+=================| + // pbm=true || All windows include | All windows use | + // || content. | generic. | + // ----------++------------------------+-----------------| + // pbm=false || Private windows use | All windows use | + // || generic. Other windows | generic. | + // || include content. | | + // ------------------------------------------------------+ + // + // For the settings UI, we treat the "all=true, pbm=false" case as + // "genericWindowTitles" being *unset*. + return !exposeContentWindowTitle.value; + }, + set: ( + value, + { exposeContentWindowTitle, exposePrivateContentWindowTitle } + ) => { + exposeContentWindowTitle.value = !value; + exposePrivateContentWindowTitle.value = !value; + }, +}); + +SettingGroupManager.registerGroups({ + protectionsFromThirdParty: { + l10nId: "protections-from-applications-group", + heaidngLevel: 2, + // TODO: supportPage: "tor-manual:", + items: [ + { + id: "protectionsTailsBanner", + control: "moz-message-bar", + controlAttrs: { + role: "complementary", + }, + options: [ + { + l10nId: "protections-from-applications-tails-banner", + control: "span", + slot: "message", + options: [ + { + control: "a", + controlAttrs: { + "data-l10n-name": "tails-link", + href: "https://tails.net/", + target: "_blank", + }, + }, + ], + }, + ], + }, + { + id: "genericWindowTitles", + l10nId: "generic-window-titles-checkbox", + }, + ], + }, +}); ===================================== browser/components/preferences/jar.mn ===================================== @@ -71,6 +71,7 @@ browser.jar: content/browser/preferences/widgets/update-state.mjs (widgets/update-state/update-state.mjs) content/browser/preferences/widgets/update-state.css (widgets/update-state/update-state.css) + content/browser/preferences/config/protections-from-apps.mjs (config/protections-from-apps.mjs) content/browser/preferences/config/letterboxing.mjs (config/letterboxing.mjs) content/browser/preferences/letterboxing.css (letterboxing.css) content/browser/preferences/letterboxing-middle.svg (letterboxing-middle.svg) ===================================== browser/components/preferences/preferences.js ===================================== @@ -285,6 +285,7 @@ const CONFIG_PANES = Object.freeze({ "networkProxy", "privacyPanel", "browsingProtection", + "protectionsFromThirdParty", "certificates", ], replaces: "privacy", ===================================== toolkit/locales/en-US/toolkit/global/base-browser.ftl ===================================== @@ -114,6 +114,17 @@ browser-layout-show-sidebar-limited = search-suggestions-warning-banner = .message = Turning this on reduces your privacy by sharing your queries with the search engine as you type. +## Preferences - Protections from third-party applications. + +# "{ -brand-short-name }" will be replaced with the localized name of the browser, e.g. "Tor Browser". +protections-from-applications-group = + .label = Protections from third-party applications + .description = Third-party applications may record your browsing activity. { -brand-short-name } attempts to reduce this risk. +# Here "title" refers to the displayed name of the browser's windows in the operating system. As in "title bar". For example, the name shown in some taskbars, or desktop window overviews. +generic-window-titles-checkbox = + .label = Use generic window titles + .description = Do not include the name of your current tab in the application window title. + ## Preferences - Passwords. # "{ -brand-short-name }" will be replaced with the localized name of the browser, e.g. "Tor Browser". ===================================== toolkit/locales/en-US/toolkit/global/tor-browser.ftl ===================================== @@ -631,6 +631,11 @@ downloads-tor-warning-tails-link= Learn more about Tails # Button to dismiss the warning forever. downloads-tor-warning-dismiss-button = Got it +## Preferences - Protections from third-party applications. + +# "Tails" is the brand name for the Tails operating system and should be localized appropriately. It should be wrapped in '<a data-l10n-name="tails-link">' and '</a>', which will link to the Tails operating system website. +protections-from-applications-tails-banner = For comprehensive protection from other applications on your system, use a portable operating system like <a data-l10n-name="tails-link">Tails</a>. + ## Initial warning page in about:rulesets. In Tor Browser, each ruleset is a set of rules for converting a ".tor.onion" address to a normal ".onion" address (used by SecureDrop). The feature is taken from the discontinued "HTTPS Everywhere". rulesets-warning-heading = Proceed with Caution View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/08c0751... -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/08c0751... You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help
participants (1)
-
morgan (@morgan)