henry pushed to branch mullvad-browser-150.0a1-16.0-2 at The Tor Project / Applications / Mullvad Browser Commits: be8738c3 by Henry Wilkes at 2026-05-06T11:18:56+01:00 fixup! BB 41739: Remove "Website appearance" from about:preferences. BB 44630: Stop hiding with data-hidden-from-search. - - - - - e63b568b by Henry Wilkes at 2026-05-06T11:18:57+01:00 fixup! BB 42777: Hide Website Privacy Preferences. BB 44630: Stop hiding with data-hidden-from-search. - - - - - 38da32fb by Henry Wilkes at 2026-05-06T11:18:58+01:00 fixup! BB 42070: Hide "Use smooth scrolling" from settings BB 44630: Stop commenting out setting controls. - - - - - 51a082c1 by Henry Wilkes at 2026-05-06T11:18:59+01:00 fixup! BB 43117: Hide "Always underline links" from settings. BB 44630: Stop commenting out setting controls. - - - - - 32a0cff7 by Henry Wilkes at 2026-05-06T11:19:00+01:00 fixup! BB 43118: Hide feature recommendation (CFR) settings. BB 44630: Stop commenting out setting controls. - - - - - 7d2243b5 by Henry Wilkes at 2026-05-06T11:19:49+01:00 fixup! BB 44711: Hide unwanted setting controls in Base Browser. BB 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" /> ===================================== 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 @@ -3166,10 +3215,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", @@ -3186,10 +3235,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", @@ -3210,18 +3259,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", @@ -3812,6 +3861,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 --> @@ -554,13 +554,8 @@ <html:setting-group groupid="passwords" hidden="true" data-category="panePrivacy" /> -<!-- 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 ===================================== @@ -158,7 +158,6 @@ Preferences.addAll([ { id: "privacy.fingerprintingProtection.pbmode", type: "bool" }, // Resist Fingerprinting - { id: "privacy.resistFingerprinting", type: "bool" }, { id: "privacy.resistFingerprinting.pbmode", type: "bool" }, // Social tracking @@ -909,12 +908,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; @@ -1247,6 +1252,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; }, }); @@ -1258,6 +1267,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 }) => { @@ -2643,6 +2659,8 @@ Preferences.addSetting({ Preferences.addSetting({ id: "etpStatusBoxGroup", + // Hide enhanced tracking protection (ETP). tor-browser#26345. + visible: () => false, }); Preferences.addSetting({ @@ -2675,6 +2693,8 @@ Preferences.addSetting({ Preferences.addSetting({ id: "protectionsDashboardLink", + // Hide enhanced tracking protection (ETP). tor-browser#26345. + visible: () => false, }); Preferences.addSetting({ @@ -2727,11 +2747,6 @@ Preferences.addSetting({ }, }); -Preferences.addSetting({ - id: "resistFingerprinting", - pref: "privacy.resistFingerprinting", -}); - Preferences.addSetting({ id: "resistFingerprintingPBM", pref: "privacy.resistFingerprinting.pbmode", @@ -3560,6 +3575,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/mullvad-browser/-/compare/057... -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/compare/057... 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)