henry pushed to branch tor-browser-150.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 99fde07d by Henry Wilkes at 2026-05-06T11:06:09+01:00 fixup! BB 41739: Remove "Website appearance" from about:preferences. BB 44630: Stop hiding with data-hidden-from-search. - - - - - 74a48a7e by Henry Wilkes at 2026-05-06T11:06:10+01:00 fixup! BB 42777: Hide Website Privacy Preferences. BB 44630: Stop hiding with data-hidden-from-search. - - - - - c3a9bae0 by Henry Wilkes at 2026-05-06T11:06:11+01:00 fixup! BB 42070: Hide "Use smooth scrolling" from settings BB 44630: Stop commenting out setting controls. - - - - - 374b9b6d by Henry Wilkes at 2026-05-06T11:06:11+01:00 fixup! BB 43117: Hide "Always underline links" from settings. BB 44630: Stop commenting out setting controls. - - - - - b5a36fd7 by Henry Wilkes at 2026-05-06T11:06:12+01:00 fixup! BB 43118: Hide feature recommendation (CFR) settings. BB 44630: Stop commenting out setting controls. - - - - - 2043d356 by Henry Wilkes at 2026-05-06T11:07:24+01:00 fixup! BB 44711: Hide unwanted setting controls in Base Browser. BB 44630: Hide settings using the config. - - - - - 3dfcc0ae by Henry Wilkes at 2026-05-06T11:07:25+01:00 fixup! TB 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection TB 44630: Stop hiding with data-hidden-from-search. - - - - - 9c9e31b5 by Henry Wilkes at 2026-05-06T11:07:25+01:00 fixup! TB 44711: Hide unwanted setting controls in Tor Browser. TB 44630: Hide settings using the config. - - - - - 4 changed files: - browser/components/preferences/main.inc.xhtml - browser/components/preferences/main.js - browser/components/preferences/privacy.inc.xhtml - browser/components/preferences/privacy.js Changes: ===================================== browser/components/preferences/main.inc.xhtml ===================================== @@ -50,7 +50,7 @@ </hbox> <!-- Website appearance --> -<html:setting-group groupid="appearance" data-category="paneGeneral" hidden="true" data-hidden-from-search="true"></html:setting-group> +<html:setting-group groupid="appearance" data-category="paneGeneral" hidden="true"></html:setting-group> <!-- Colors --> <html:setting-group id="contrastControlGroup" groupid="contrast" data-category="paneGeneral" hidden="true" /> @@ -383,5 +383,5 @@ <html:setting-group groupid="browsing" data-category="paneGeneral" hidden="true"/> <!-- Network Settings--> -<html:setting-group groupid="networkProxy" data-category="paneGeneral" data-subcategory="netsettings" hidden="true" data-hidden-from-search="true" /> +<html:setting-group groupid="networkProxy" data-category="paneGeneral" data-subcategory="netsettings" hidden="true" /> </html:template> ===================================== browser/components/preferences/main.js ===================================== @@ -78,6 +78,10 @@ function canShowAiFeature(featureSetting, defaultSetting) { } Preferences.addAll([ + // Rather than add "privacy.resistFingerprinting" in privacy.js, we add it + // early so we can define the "resistFingerprinting" `Setting` in this file. + // See below. See tor-browser#44630. + { id: "privacy.resistFingerprinting", type: "bool" }, // Startup { id: "browser.startup.page", type: "int" }, { id: "browser.startup.windowsLaunchOnLogin.enabled", type: "bool" }, @@ -273,6 +277,18 @@ if (AppConstants.MOZ_UPDATER) { } } +// Rather than add "resistFingerprinting" in privacy.js, we add it to the +// settings early so we can have it be part of the setting config's `deps` field +// early. See tor-browser#44630. +// In particular, `Setting.deps` is lazy set. For many settings, this will only +// be set *after* all settings have been added. However, for settings with a +// `setup` field, the `deps` value will be set during construction, so we need +// the corresponding dependency available prior to construction. +Preferences.addSetting({ + id: "resistFingerprinting", + pref: "privacy.resistFingerprinting", +}); + Preferences.addSetting({ id: "privateBrowsingAutoStart", pref: "browser.privatebrowsing.autostart", @@ -482,6 +498,12 @@ Preferences.addSetting({ Preferences.addSetting({ id: "useSmoothScrolling", pref: "general.smoothScroll", + deps: ["resistFingerprinting"], + visible: ({ resistFingerprinting }) => { + // Hide "smooth scrolling" when using resist fingerprinting (RFP) because + // the preference should be ignored. tor-browser#42070. + return !resistFingerprinting.value; + }, }); Preferences.addSetting({ @@ -560,6 +582,11 @@ Preferences.addSetting({ Preferences.addSetting({ id: "alwaysUnderlineLinks", pref: "layout.css.always_underline_links", + // Hide "always underline links" because it can be used for fingerprinting. At + // the time of implementation, this is the case with or without RFP, so we + // hide this unconditionally. + // tor-browser#43117. + visible: () => false, }); Preferences.addSetting({ id: "searchStartTyping", @@ -618,10 +645,14 @@ Preferences.addSetting({ Preferences.addSetting({ id: "cfrRecommendations", pref: "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", + // Hide feature recommendation (CFR). tor-browser#43118. + visible: () => false, }); Preferences.addSetting({ id: "cfrRecommendations-features", pref: "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", + // Hide feature recommendation (CFR). tor-browser#43118. + visible: () => false, }); Preferences.addSetting({ @@ -687,11 +718,17 @@ Preferences.addSetting({ }); Preferences.addSetting({ id: "web-appearance-override-warning", + deps: ["resistFingerprinting"], setup: emitChange => { FORCED_COLORS_QUERY.addEventListener("change", emitChange); return () => FORCED_COLORS_QUERY.removeEventListener("change", emitChange); }, - visible: () => { + visible: ({ resistFingerprinting }) => { + // Hide web appearance settings when using resist fingerprinting (RFP). + // tor-browser#41739. + if (resistFingerprinting.value) { + return false; + } return FORCED_COLORS_QUERY.matches; }, }); @@ -701,6 +738,12 @@ Preferences.addSetting( id: "web-appearance-chooser", themeNames: ["dark", "light", "auto"], pref: "layout.css.prefers-color-scheme.content-override", + deps: ["resistFingerprinting"], + visible: ({ resistFingerprinting }) => { + // Hide web appearance settings when using resist fingerprinting (RFP). + // tor-browser#41739. + return !resistFingerprinting.value; + }, setup(emitChange) { Services.obs.addObserver(emitChange, "look-and-feel-changed"); return () => @@ -733,6 +776,12 @@ Preferences.addSetting( Preferences.addSetting({ id: "web-appearance-manage-themes-link", + deps: ["resistFingerprinting"], + visible: ({ resistFingerprinting }) => { + // Hide web appearance settings when using resist fingerprinting (RFP). + // tor-browser#41739. + return !resistFingerprinting.value; + }, onUserClick: e => { e.preventDefault(); // @ts-ignore topChromeWindow global @@ -1121,6 +1170,9 @@ Preferences.addSetting({ Preferences.addSetting({ id: "connectionSettings", + // Hide the connection settings for Tor Browser since these would interfere + // with the settings in the "connection" pane. tor-browser#31286. + visible: () => false, onUserClick: () => gMainPane.showConnections(), controllingExtensionInfo: { storeId: PROXY_KEY, @@ -3170,10 +3222,10 @@ SettingGroupManager.registerGroups({ id: "useAutoScroll", l10nId: "browsing-use-autoscroll", }, - // { - // id: "useSmoothScrolling", - // l10nId: "browsing-use-smooth-scrolling", - // }, + { + id: "useSmoothScrolling", + l10nId: "browsing-use-smooth-scrolling", + }, { id: "useOverlayScrollbars", l10nId: "browsing-gtk-use-non-overlay-scrollbars", @@ -3190,10 +3242,10 @@ SettingGroupManager.registerGroups({ id: "useFullKeyboardNavigation", l10nId: "browsing-use-full-keyboard-navigation", }, - // { - // id: "alwaysUnderlineLinks", - // l10nId: "browsing-always-underline-links", - // }, + { + id: "alwaysUnderlineLinks", + l10nId: "browsing-always-underline-links", + }, { id: "searchStartTyping", l10nId: "browsing-search-on-start-typing", @@ -3214,18 +3266,18 @@ SettingGroupManager.registerGroups({ l10nId: "browsing-media-control", supportPage: "media-keyboard-control", }, - // { - // id: "cfrRecommendations", - // l10nId: "browsing-cfr-recommendations", - // supportPage: "extensionrecommendations", - // subcategory: "cfraddons", - // }, - // { - // id: "cfrRecommendations-features", - // l10nId: "browsing-cfr-features", - // supportPage: "extensionrecommendations", - // subcategory: "cfrfeatures", - // }, + { + id: "cfrRecommendations", + l10nId: "browsing-cfr-recommendations", + supportPage: "extensionrecommendations", + subcategory: "cfraddons", + }, + { + id: "cfrRecommendations-features", + l10nId: "browsing-cfr-features", + supportPage: "extensionrecommendations", + subcategory: "cfrfeatures", + }, { id: "linkPreviewEnabled", l10nId: "link-preview-settings-enable", @@ -3816,6 +3868,21 @@ SettingGroupManager.registerGroups({ }, ], }, + // Hide the payments and addresses settings. tor-browser#44460. + // NOTE: "payments" and "addresses" are usually configured in + // FormAutofillPreferences.sys.mjs. But this never runs because the "autofill" + // extension is excluded from the build. So we configure them ourselves with + // an empty config. See tor-browser#44630. + payments: { + hidden: true, + hiddenFromSearch: true, + items: [], + }, + addresses: { + hidden: true, + hiddenFromSearch: true, + items: [], + }, history: { l10nId: "history-group", headingLevel: 2, ===================================== browser/components/preferences/privacy.inc.xhtml ===================================== @@ -393,7 +393,7 @@ </vbox> </vbox> </groupbox> -<html:setting-group id="nonTechnicalPrivacyGroup" groupid="nonTechnicalPrivacy" data-category="panePrivacy" data-hidden-from-search="true" hidden="true" data-srd-groupid="nonTechnicalPrivacy2"/> +<html:setting-group id="nonTechnicalPrivacyGroup" groupid="nonTechnicalPrivacy" data-category="panePrivacy" hidden="true" data-srd-groupid="nonTechnicalPrivacy2"/> <html:setting-group groupid="nonTechnicalPrivacy2" data-category="panePrivacy" hidden="true"/> <!-- Firefox VPN - IP Protection --> @@ -555,13 +555,8 @@ #include ../onionservices/content/authPreferences.inc.xhtml -<!-- groupid="payments" and groupid="addresses" are configured by - - FormAutofillPreferences.sys.mjs via FormAutofillStatus. But since the - - "autofill" extension is excluded from the build, FormAutofillStatus is - - never initialised. So we add the would-be data-hidden-* attributes - - explicitly here instead. See tor-browser#44460. --> -<html:setting-group data-category="panePrivacy" data-subcategory="payment-methods-autofill credit-card-autofill" groupid="payments" data-group="formAutofill" hidden="true" data-hidden-from-search="true" data-hidden-by-setting-group="" /> -<html:setting-group data-category="panePrivacy" data-subcategory="addresses-autofill address-autofill" groupid="addresses" data-group="formAutofill" hidden="true" data-hidden-from-search="true" data-hidden-by-setting-group="" /> +<html:setting-group data-category="panePrivacy" data-subcategory="payment-methods-autofill credit-card-autofill" groupid="payments" data-group="formAutofill" hidden="true" /> +<html:setting-group data-category="panePrivacy" data-subcategory="addresses-autofill address-autofill" groupid="addresses" data-group="formAutofill" hidden="true" /> <!-- History --> <html:setting-group groupid="history" data-category="panePrivacy" hidden="true" data-srd-groupid="history2"/> ===================================== browser/components/preferences/privacy.js ===================================== @@ -164,7 +164,6 @@ Preferences.addAll([ { id: "privacy.fingerprintingProtection.pbmode", type: "bool" }, // Resist Fingerprinting - { id: "privacy.resistFingerprinting", type: "bool" }, { id: "privacy.resistFingerprinting.pbmode", type: "bool" }, // Social tracking @@ -915,12 +914,18 @@ if (SECURITY_PRIVACY_STATUS_CARD_ENABLED) { "etpCustomEnabled", ...SECURITY_WARNINGS.map(warning => warning.id), ], + // Hide the privacy card. tor-browser#44829. + visible: () => false, }); Preferences.addSetting({ id: "warningCard", deps: SECURITY_WARNINGS.map(warning => warning.id), visible: deps => { + // Hide the privacy card's warnings. tor-browser#44829. + if (AppConstants.BASE_BROWSER_VERSION) { + return false; + } const count = Object.values(deps).filter( depSetting => depSetting.visible ).length; @@ -1253,6 +1258,10 @@ Preferences.addSetting({ pref: "privacy.globalprivacycontrol.enabled", deps: ["gpcFunctionalityEnabled"], visible: ({ gpcFunctionalityEnabled }) => { + // Hide GPC. tor-browser#42777. + if (AppConstants.BASE_BROWSER_VERSION) { + return false; + } return gpcFunctionalityEnabled.value; }, }); @@ -1264,6 +1273,13 @@ Preferences.addSetting({ id: "relayIntegration", deps: ["savePasswords", "relayFeature"], visible: () => { + // Hide Firefox Relay. tor-browser#43109 and tor-browser#42814. + // NOTE: Whilst `FirefoxRelay.isDisabled` is `true` due to preferences we + // set for Base Browser, `FirefoxRelay.isAvailable` is also `true` in this + // case, hence why we still need to hide this unconditionally. + if (AppConstants.BASE_BROWSER_VERSION) { + return false; + } return FirefoxRelay.isAvailable; }, disabled: ({ savePasswords, relayFeature }) => { @@ -2203,6 +2219,8 @@ Preferences.addSetting({ Preferences.addSetting({ id: "dohBox", + // Hide DNS over HTTPS. tor-browser#41906. + visible: () => false, }); Preferences.addSetting({ @@ -2645,6 +2663,8 @@ Preferences.addSetting({ Preferences.addSetting({ id: "etpStatusBoxGroup", + // Hide enhanced tracking protection (ETP). tor-browser#26345. + visible: () => false, }); Preferences.addSetting({ @@ -2677,6 +2697,8 @@ Preferences.addSetting({ Preferences.addSetting({ id: "protectionsDashboardLink", + // Hide enhanced tracking protection (ETP). tor-browser#26345. + visible: () => false, }); Preferences.addSetting({ @@ -2729,11 +2751,6 @@ Preferences.addSetting({ }, }); -Preferences.addSetting({ - id: "resistFingerprinting", - pref: "privacy.resistFingerprinting", -}); - Preferences.addSetting({ id: "resistFingerprintingPBM", pref: "privacy.resistFingerprinting.pbmode", @@ -3562,6 +3579,12 @@ var gPrivacyPane = { initSettingGroup("cookiesAndSiteData2"); initSettingGroup("certificates"); initSettingGroup("ipprotection"); + // NOTE: "payments" and "addresses" are usually initialised by + // FormAutofillPreferences.sys.mjs via FormAutofillStatus. But this never + // runs because the "autofill" extension is excluded from the build. So we + // initialise them ourselves with an empty config. See tor-browser#44630. + initSettingGroup("payments"); + initSettingGroup("addresses"); initSettingGroup("history"); initSettingGroup("history2"); initSettingGroup("permissions"); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/79f2838... -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/79f2838... 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)
-
henry (@henry)