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
-
74a48a7e
by Henry Wilkes at 2026-05-06T11:06:10+01:00
-
c3a9bae0
by Henry Wilkes at 2026-05-06T11:06:11+01:00
-
374b9b6d
by Henry Wilkes at 2026-05-06T11:06:11+01:00
-
b5a36fd7
by Henry Wilkes at 2026-05-06T11:06:12+01:00
-
2043d356
by Henry Wilkes at 2026-05-06T11:07:24+01:00
-
3dfcc0ae
by Henry Wilkes at 2026-05-06T11:07:25+01:00
-
9c9e31b5
by Henry Wilkes at 2026-05-06T11:07:25+01:00
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:
| ... | ... | @@ -50,7 +50,7 @@ |
| 50 | 50 | </hbox>
|
| 51 | 51 | |
| 52 | 52 | <!-- Website appearance -->
|
| 53 | -<html:setting-group groupid="appearance" data-category="paneGeneral" hidden="true" data-hidden-from-search="true"></html:setting-group>
|
|
| 53 | +<html:setting-group groupid="appearance" data-category="paneGeneral" hidden="true"></html:setting-group>
|
|
| 54 | 54 | |
| 55 | 55 | <!-- Colors -->
|
| 56 | 56 | <html:setting-group id="contrastControlGroup" groupid="contrast" data-category="paneGeneral" hidden="true" />
|
| ... | ... | @@ -383,5 +383,5 @@ |
| 383 | 383 | <html:setting-group groupid="browsing" data-category="paneGeneral" hidden="true"/>
|
| 384 | 384 | |
| 385 | 385 | <!-- Network Settings-->
|
| 386 | -<html:setting-group groupid="networkProxy" data-category="paneGeneral" data-subcategory="netsettings" hidden="true" data-hidden-from-search="true" />
|
|
| 386 | +<html:setting-group groupid="networkProxy" data-category="paneGeneral" data-subcategory="netsettings" hidden="true" />
|
|
| 387 | 387 | </html:template> |
| ... | ... | @@ -78,6 +78,10 @@ function canShowAiFeature(featureSetting, defaultSetting) { |
| 78 | 78 | }
|
| 79 | 79 | |
| 80 | 80 | Preferences.addAll([
|
| 81 | + // Rather than add "privacy.resistFingerprinting" in privacy.js, we add it
|
|
| 82 | + // early so we can define the "resistFingerprinting" `Setting` in this file.
|
|
| 83 | + // See below. See tor-browser#44630.
|
|
| 84 | + { id: "privacy.resistFingerprinting", type: "bool" },
|
|
| 81 | 85 | // Startup
|
| 82 | 86 | { id: "browser.startup.page", type: "int" },
|
| 83 | 87 | { id: "browser.startup.windowsLaunchOnLogin.enabled", type: "bool" },
|
| ... | ... | @@ -273,6 +277,18 @@ if (AppConstants.MOZ_UPDATER) { |
| 273 | 277 | }
|
| 274 | 278 | }
|
| 275 | 279 | |
| 280 | +// Rather than add "resistFingerprinting" in privacy.js, we add it to the
|
|
| 281 | +// settings early so we can have it be part of the setting config's `deps` field
|
|
| 282 | +// early. See tor-browser#44630.
|
|
| 283 | +// In particular, `Setting.deps` is lazy set. For many settings, this will only
|
|
| 284 | +// be set *after* all settings have been added. However, for settings with a
|
|
| 285 | +// `setup` field, the `deps` value will be set during construction, so we need
|
|
| 286 | +// the corresponding dependency available prior to construction.
|
|
| 287 | +Preferences.addSetting({
|
|
| 288 | + id: "resistFingerprinting",
|
|
| 289 | + pref: "privacy.resistFingerprinting",
|
|
| 290 | +});
|
|
| 291 | + |
|
| 276 | 292 | Preferences.addSetting({
|
| 277 | 293 | id: "privateBrowsingAutoStart",
|
| 278 | 294 | pref: "browser.privatebrowsing.autostart",
|
| ... | ... | @@ -482,6 +498,12 @@ Preferences.addSetting({ |
| 482 | 498 | Preferences.addSetting({
|
| 483 | 499 | id: "useSmoothScrolling",
|
| 484 | 500 | pref: "general.smoothScroll",
|
| 501 | + deps: ["resistFingerprinting"],
|
|
| 502 | + visible: ({ resistFingerprinting }) => {
|
|
| 503 | + // Hide "smooth scrolling" when using resist fingerprinting (RFP) because
|
|
| 504 | + // the preference should be ignored. tor-browser#42070.
|
|
| 505 | + return !resistFingerprinting.value;
|
|
| 506 | + },
|
|
| 485 | 507 | });
|
| 486 | 508 | |
| 487 | 509 | Preferences.addSetting({
|
| ... | ... | @@ -560,6 +582,11 @@ Preferences.addSetting({ |
| 560 | 582 | Preferences.addSetting({
|
| 561 | 583 | id: "alwaysUnderlineLinks",
|
| 562 | 584 | pref: "layout.css.always_underline_links",
|
| 585 | + // Hide "always underline links" because it can be used for fingerprinting. At
|
|
| 586 | + // the time of implementation, this is the case with or without RFP, so we
|
|
| 587 | + // hide this unconditionally.
|
|
| 588 | + // tor-browser#43117.
|
|
| 589 | + visible: () => false,
|
|
| 563 | 590 | });
|
| 564 | 591 | Preferences.addSetting({
|
| 565 | 592 | id: "searchStartTyping",
|
| ... | ... | @@ -618,10 +645,14 @@ Preferences.addSetting({ |
| 618 | 645 | Preferences.addSetting({
|
| 619 | 646 | id: "cfrRecommendations",
|
| 620 | 647 | pref: "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons",
|
| 648 | + // Hide feature recommendation (CFR). tor-browser#43118.
|
|
| 649 | + visible: () => false,
|
|
| 621 | 650 | });
|
| 622 | 651 | Preferences.addSetting({
|
| 623 | 652 | id: "cfrRecommendations-features",
|
| 624 | 653 | pref: "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features",
|
| 654 | + // Hide feature recommendation (CFR). tor-browser#43118.
|
|
| 655 | + visible: () => false,
|
|
| 625 | 656 | });
|
| 626 | 657 | |
| 627 | 658 | Preferences.addSetting({
|
| ... | ... | @@ -687,11 +718,17 @@ Preferences.addSetting({ |
| 687 | 718 | });
|
| 688 | 719 | Preferences.addSetting({
|
| 689 | 720 | id: "web-appearance-override-warning",
|
| 721 | + deps: ["resistFingerprinting"],
|
|
| 690 | 722 | setup: emitChange => {
|
| 691 | 723 | FORCED_COLORS_QUERY.addEventListener("change", emitChange);
|
| 692 | 724 | return () => FORCED_COLORS_QUERY.removeEventListener("change", emitChange);
|
| 693 | 725 | },
|
| 694 | - visible: () => {
|
|
| 726 | + visible: ({ resistFingerprinting }) => {
|
|
| 727 | + // Hide web appearance settings when using resist fingerprinting (RFP).
|
|
| 728 | + // tor-browser#41739.
|
|
| 729 | + if (resistFingerprinting.value) {
|
|
| 730 | + return false;
|
|
| 731 | + }
|
|
| 695 | 732 | return FORCED_COLORS_QUERY.matches;
|
| 696 | 733 | },
|
| 697 | 734 | });
|
| ... | ... | @@ -701,6 +738,12 @@ Preferences.addSetting( |
| 701 | 738 | id: "web-appearance-chooser",
|
| 702 | 739 | themeNames: ["dark", "light", "auto"],
|
| 703 | 740 | pref: "layout.css.prefers-color-scheme.content-override",
|
| 741 | + deps: ["resistFingerprinting"],
|
|
| 742 | + visible: ({ resistFingerprinting }) => {
|
|
| 743 | + // Hide web appearance settings when using resist fingerprinting (RFP).
|
|
| 744 | + // tor-browser#41739.
|
|
| 745 | + return !resistFingerprinting.value;
|
|
| 746 | + },
|
|
| 704 | 747 | setup(emitChange) {
|
| 705 | 748 | Services.obs.addObserver(emitChange, "look-and-feel-changed");
|
| 706 | 749 | return () =>
|
| ... | ... | @@ -733,6 +776,12 @@ Preferences.addSetting( |
| 733 | 776 | |
| 734 | 777 | Preferences.addSetting({
|
| 735 | 778 | id: "web-appearance-manage-themes-link",
|
| 779 | + deps: ["resistFingerprinting"],
|
|
| 780 | + visible: ({ resistFingerprinting }) => {
|
|
| 781 | + // Hide web appearance settings when using resist fingerprinting (RFP).
|
|
| 782 | + // tor-browser#41739.
|
|
| 783 | + return !resistFingerprinting.value;
|
|
| 784 | + },
|
|
| 736 | 785 | onUserClick: e => {
|
| 737 | 786 | e.preventDefault();
|
| 738 | 787 | // @ts-ignore topChromeWindow global
|
| ... | ... | @@ -1121,6 +1170,9 @@ Preferences.addSetting({ |
| 1121 | 1170 | |
| 1122 | 1171 | Preferences.addSetting({
|
| 1123 | 1172 | id: "connectionSettings",
|
| 1173 | + // Hide the connection settings for Tor Browser since these would interfere
|
|
| 1174 | + // with the settings in the "connection" pane. tor-browser#31286.
|
|
| 1175 | + visible: () => false,
|
|
| 1124 | 1176 | onUserClick: () => gMainPane.showConnections(),
|
| 1125 | 1177 | controllingExtensionInfo: {
|
| 1126 | 1178 | storeId: PROXY_KEY,
|
| ... | ... | @@ -3170,10 +3222,10 @@ SettingGroupManager.registerGroups({ |
| 3170 | 3222 | id: "useAutoScroll",
|
| 3171 | 3223 | l10nId: "browsing-use-autoscroll",
|
| 3172 | 3224 | },
|
| 3173 | - // {
|
|
| 3174 | - // id: "useSmoothScrolling",
|
|
| 3175 | - // l10nId: "browsing-use-smooth-scrolling",
|
|
| 3176 | - // },
|
|
| 3225 | + {
|
|
| 3226 | + id: "useSmoothScrolling",
|
|
| 3227 | + l10nId: "browsing-use-smooth-scrolling",
|
|
| 3228 | + },
|
|
| 3177 | 3229 | {
|
| 3178 | 3230 | id: "useOverlayScrollbars",
|
| 3179 | 3231 | l10nId: "browsing-gtk-use-non-overlay-scrollbars",
|
| ... | ... | @@ -3190,10 +3242,10 @@ SettingGroupManager.registerGroups({ |
| 3190 | 3242 | id: "useFullKeyboardNavigation",
|
| 3191 | 3243 | l10nId: "browsing-use-full-keyboard-navigation",
|
| 3192 | 3244 | },
|
| 3193 | - // {
|
|
| 3194 | - // id: "alwaysUnderlineLinks",
|
|
| 3195 | - // l10nId: "browsing-always-underline-links",
|
|
| 3196 | - // },
|
|
| 3245 | + {
|
|
| 3246 | + id: "alwaysUnderlineLinks",
|
|
| 3247 | + l10nId: "browsing-always-underline-links",
|
|
| 3248 | + },
|
|
| 3197 | 3249 | {
|
| 3198 | 3250 | id: "searchStartTyping",
|
| 3199 | 3251 | l10nId: "browsing-search-on-start-typing",
|
| ... | ... | @@ -3214,18 +3266,18 @@ SettingGroupManager.registerGroups({ |
| 3214 | 3266 | l10nId: "browsing-media-control",
|
| 3215 | 3267 | supportPage: "media-keyboard-control",
|
| 3216 | 3268 | },
|
| 3217 | - // {
|
|
| 3218 | - // id: "cfrRecommendations",
|
|
| 3219 | - // l10nId: "browsing-cfr-recommendations",
|
|
| 3220 | - // supportPage: "extensionrecommendations",
|
|
| 3221 | - // subcategory: "cfraddons",
|
|
| 3222 | - // },
|
|
| 3223 | - // {
|
|
| 3224 | - // id: "cfrRecommendations-features",
|
|
| 3225 | - // l10nId: "browsing-cfr-features",
|
|
| 3226 | - // supportPage: "extensionrecommendations",
|
|
| 3227 | - // subcategory: "cfrfeatures",
|
|
| 3228 | - // },
|
|
| 3269 | + {
|
|
| 3270 | + id: "cfrRecommendations",
|
|
| 3271 | + l10nId: "browsing-cfr-recommendations",
|
|
| 3272 | + supportPage: "extensionrecommendations",
|
|
| 3273 | + subcategory: "cfraddons",
|
|
| 3274 | + },
|
|
| 3275 | + {
|
|
| 3276 | + id: "cfrRecommendations-features",
|
|
| 3277 | + l10nId: "browsing-cfr-features",
|
|
| 3278 | + supportPage: "extensionrecommendations",
|
|
| 3279 | + subcategory: "cfrfeatures",
|
|
| 3280 | + },
|
|
| 3229 | 3281 | {
|
| 3230 | 3282 | id: "linkPreviewEnabled",
|
| 3231 | 3283 | l10nId: "link-preview-settings-enable",
|
| ... | ... | @@ -3816,6 +3868,21 @@ SettingGroupManager.registerGroups({ |
| 3816 | 3868 | },
|
| 3817 | 3869 | ],
|
| 3818 | 3870 | },
|
| 3871 | + // Hide the payments and addresses settings. tor-browser#44460.
|
|
| 3872 | + // NOTE: "payments" and "addresses" are usually configured in
|
|
| 3873 | + // FormAutofillPreferences.sys.mjs. But this never runs because the "autofill"
|
|
| 3874 | + // extension is excluded from the build. So we configure them ourselves with
|
|
| 3875 | + // an empty config. See tor-browser#44630.
|
|
| 3876 | + payments: {
|
|
| 3877 | + hidden: true,
|
|
| 3878 | + hiddenFromSearch: true,
|
|
| 3879 | + items: [],
|
|
| 3880 | + },
|
|
| 3881 | + addresses: {
|
|
| 3882 | + hidden: true,
|
|
| 3883 | + hiddenFromSearch: true,
|
|
| 3884 | + items: [],
|
|
| 3885 | + },
|
|
| 3819 | 3886 | history: {
|
| 3820 | 3887 | l10nId: "history-group",
|
| 3821 | 3888 | headingLevel: 2,
|
| ... | ... | @@ -393,7 +393,7 @@ |
| 393 | 393 | </vbox>
|
| 394 | 394 | </vbox>
|
| 395 | 395 | </groupbox>
|
| 396 | -<html:setting-group id="nonTechnicalPrivacyGroup" groupid="nonTechnicalPrivacy" data-category="panePrivacy" data-hidden-from-search="true" hidden="true" data-srd-groupid="nonTechnicalPrivacy2"/>
|
|
| 396 | +<html:setting-group id="nonTechnicalPrivacyGroup" groupid="nonTechnicalPrivacy" data-category="panePrivacy" hidden="true" data-srd-groupid="nonTechnicalPrivacy2"/>
|
|
| 397 | 397 | <html:setting-group groupid="nonTechnicalPrivacy2" data-category="panePrivacy" hidden="true"/>
|
| 398 | 398 | |
| 399 | 399 | <!-- Firefox VPN - IP Protection -->
|
| ... | ... | @@ -555,13 +555,8 @@ |
| 555 | 555 | |
| 556 | 556 | #include ../onionservices/content/authPreferences.inc.xhtml
|
| 557 | 557 | |
| 558 | -<!-- groupid="payments" and groupid="addresses" are configured by
|
|
| 559 | - - FormAutofillPreferences.sys.mjs via FormAutofillStatus. But since the
|
|
| 560 | - - "autofill" extension is excluded from the build, FormAutofillStatus is
|
|
| 561 | - - never initialised. So we add the would-be data-hidden-* attributes
|
|
| 562 | - - explicitly here instead. See tor-browser#44460. -->
|
|
| 563 | -<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="" />
|
|
| 564 | -<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="" />
|
|
| 558 | +<html:setting-group data-category="panePrivacy" data-subcategory="payment-methods-autofill credit-card-autofill" groupid="payments" data-group="formAutofill" hidden="true" />
|
|
| 559 | +<html:setting-group data-category="panePrivacy" data-subcategory="addresses-autofill address-autofill" groupid="addresses" data-group="formAutofill" hidden="true" />
|
|
| 565 | 560 | |
| 566 | 561 | <!-- History -->
|
| 567 | 562 | <html:setting-group groupid="history" data-category="panePrivacy" hidden="true" data-srd-groupid="history2"/>
|
| ... | ... | @@ -164,7 +164,6 @@ Preferences.addAll([ |
| 164 | 164 | { id: "privacy.fingerprintingProtection.pbmode", type: "bool" },
|
| 165 | 165 | |
| 166 | 166 | // Resist Fingerprinting
|
| 167 | - { id: "privacy.resistFingerprinting", type: "bool" },
|
|
| 168 | 167 | { id: "privacy.resistFingerprinting.pbmode", type: "bool" },
|
| 169 | 168 | |
| 170 | 169 | // Social tracking
|
| ... | ... | @@ -915,12 +914,18 @@ if (SECURITY_PRIVACY_STATUS_CARD_ENABLED) { |
| 915 | 914 | "etpCustomEnabled",
|
| 916 | 915 | ...SECURITY_WARNINGS.map(warning => warning.id),
|
| 917 | 916 | ],
|
| 917 | + // Hide the privacy card. tor-browser#44829.
|
|
| 918 | + visible: () => false,
|
|
| 918 | 919 | });
|
| 919 | 920 | |
| 920 | 921 | Preferences.addSetting({
|
| 921 | 922 | id: "warningCard",
|
| 922 | 923 | deps: SECURITY_WARNINGS.map(warning => warning.id),
|
| 923 | 924 | visible: deps => {
|
| 925 | + // Hide the privacy card's warnings. tor-browser#44829.
|
|
| 926 | + if (AppConstants.BASE_BROWSER_VERSION) {
|
|
| 927 | + return false;
|
|
| 928 | + }
|
|
| 924 | 929 | const count = Object.values(deps).filter(
|
| 925 | 930 | depSetting => depSetting.visible
|
| 926 | 931 | ).length;
|
| ... | ... | @@ -1253,6 +1258,10 @@ Preferences.addSetting({ |
| 1253 | 1258 | pref: "privacy.globalprivacycontrol.enabled",
|
| 1254 | 1259 | deps: ["gpcFunctionalityEnabled"],
|
| 1255 | 1260 | visible: ({ gpcFunctionalityEnabled }) => {
|
| 1261 | + // Hide GPC. tor-browser#42777.
|
|
| 1262 | + if (AppConstants.BASE_BROWSER_VERSION) {
|
|
| 1263 | + return false;
|
|
| 1264 | + }
|
|
| 1256 | 1265 | return gpcFunctionalityEnabled.value;
|
| 1257 | 1266 | },
|
| 1258 | 1267 | });
|
| ... | ... | @@ -1264,6 +1273,13 @@ Preferences.addSetting({ |
| 1264 | 1273 | id: "relayIntegration",
|
| 1265 | 1274 | deps: ["savePasswords", "relayFeature"],
|
| 1266 | 1275 | visible: () => {
|
| 1276 | + // Hide Firefox Relay. tor-browser#43109 and tor-browser#42814.
|
|
| 1277 | + // NOTE: Whilst `FirefoxRelay.isDisabled` is `true` due to preferences we
|
|
| 1278 | + // set for Base Browser, `FirefoxRelay.isAvailable` is also `true` in this
|
|
| 1279 | + // case, hence why we still need to hide this unconditionally.
|
|
| 1280 | + if (AppConstants.BASE_BROWSER_VERSION) {
|
|
| 1281 | + return false;
|
|
| 1282 | + }
|
|
| 1267 | 1283 | return FirefoxRelay.isAvailable;
|
| 1268 | 1284 | },
|
| 1269 | 1285 | disabled: ({ savePasswords, relayFeature }) => {
|
| ... | ... | @@ -2203,6 +2219,8 @@ Preferences.addSetting({ |
| 2203 | 2219 | |
| 2204 | 2220 | Preferences.addSetting({
|
| 2205 | 2221 | id: "dohBox",
|
| 2222 | + // Hide DNS over HTTPS. tor-browser#41906.
|
|
| 2223 | + visible: () => false,
|
|
| 2206 | 2224 | });
|
| 2207 | 2225 | |
| 2208 | 2226 | Preferences.addSetting({
|
| ... | ... | @@ -2645,6 +2663,8 @@ Preferences.addSetting({ |
| 2645 | 2663 | |
| 2646 | 2664 | Preferences.addSetting({
|
| 2647 | 2665 | id: "etpStatusBoxGroup",
|
| 2666 | + // Hide enhanced tracking protection (ETP). tor-browser#26345.
|
|
| 2667 | + visible: () => false,
|
|
| 2648 | 2668 | });
|
| 2649 | 2669 | |
| 2650 | 2670 | Preferences.addSetting({
|
| ... | ... | @@ -2677,6 +2697,8 @@ Preferences.addSetting({ |
| 2677 | 2697 | |
| 2678 | 2698 | Preferences.addSetting({
|
| 2679 | 2699 | id: "protectionsDashboardLink",
|
| 2700 | + // Hide enhanced tracking protection (ETP). tor-browser#26345.
|
|
| 2701 | + visible: () => false,
|
|
| 2680 | 2702 | });
|
| 2681 | 2703 | |
| 2682 | 2704 | Preferences.addSetting({
|
| ... | ... | @@ -2729,11 +2751,6 @@ Preferences.addSetting({ |
| 2729 | 2751 | },
|
| 2730 | 2752 | });
|
| 2731 | 2753 | |
| 2732 | -Preferences.addSetting({
|
|
| 2733 | - id: "resistFingerprinting",
|
|
| 2734 | - pref: "privacy.resistFingerprinting",
|
|
| 2735 | -});
|
|
| 2736 | - |
|
| 2737 | 2754 | Preferences.addSetting({
|
| 2738 | 2755 | id: "resistFingerprintingPBM",
|
| 2739 | 2756 | pref: "privacy.resistFingerprinting.pbmode",
|
| ... | ... | @@ -3562,6 +3579,12 @@ var gPrivacyPane = { |
| 3562 | 3579 | initSettingGroup("cookiesAndSiteData2");
|
| 3563 | 3580 | initSettingGroup("certificates");
|
| 3564 | 3581 | initSettingGroup("ipprotection");
|
| 3582 | + // NOTE: "payments" and "addresses" are usually initialised by
|
|
| 3583 | + // FormAutofillPreferences.sys.mjs via FormAutofillStatus. But this never
|
|
| 3584 | + // runs because the "autofill" extension is excluded from the build. So we
|
|
| 3585 | + // initialise them ourselves with an empty config. See tor-browser#44630.
|
|
| 3586 | + initSettingGroup("payments");
|
|
| 3587 | + initSettingGroup("addresses");
|
|
| 3565 | 3588 | initSettingGroup("history");
|
| 3566 | 3589 | initSettingGroup("history2");
|
| 3567 | 3590 | initSettingGroup("permissions");
|