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:
Changes:
browser/components/preferences/main.inc.xhtml
| ... |
... |
@@ -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" />
|
browser/components/preferences/main.js
| ... |
... |
@@ -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
|
| ... |
... |
@@ -3166,10 +3215,10 @@ SettingGroupManager.registerGroups({ |
|
3166
|
3215
|
id: "useAutoScroll",
|
|
3167
|
3216
|
l10nId: "browsing-use-autoscroll",
|
|
3168
|
3217
|
},
|
|
3169
|
|
- // {
|
|
3170
|
|
- // id: "useSmoothScrolling",
|
|
3171
|
|
- // l10nId: "browsing-use-smooth-scrolling",
|
|
3172
|
|
- // },
|
|
|
3218
|
+ {
|
|
|
3219
|
+ id: "useSmoothScrolling",
|
|
|
3220
|
+ l10nId: "browsing-use-smooth-scrolling",
|
|
|
3221
|
+ },
|
|
3173
|
3222
|
{
|
|
3174
|
3223
|
id: "useOverlayScrollbars",
|
|
3175
|
3224
|
l10nId: "browsing-gtk-use-non-overlay-scrollbars",
|
| ... |
... |
@@ -3186,10 +3235,10 @@ SettingGroupManager.registerGroups({ |
|
3186
|
3235
|
id: "useFullKeyboardNavigation",
|
|
3187
|
3236
|
l10nId: "browsing-use-full-keyboard-navigation",
|
|
3188
|
3237
|
},
|
|
3189
|
|
- // {
|
|
3190
|
|
- // id: "alwaysUnderlineLinks",
|
|
3191
|
|
- // l10nId: "browsing-always-underline-links",
|
|
3192
|
|
- // },
|
|
|
3238
|
+ {
|
|
|
3239
|
+ id: "alwaysUnderlineLinks",
|
|
|
3240
|
+ l10nId: "browsing-always-underline-links",
|
|
|
3241
|
+ },
|
|
3193
|
3242
|
{
|
|
3194
|
3243
|
id: "searchStartTyping",
|
|
3195
|
3244
|
l10nId: "browsing-search-on-start-typing",
|
| ... |
... |
@@ -3210,18 +3259,18 @@ SettingGroupManager.registerGroups({ |
|
3210
|
3259
|
l10nId: "browsing-media-control",
|
|
3211
|
3260
|
supportPage: "media-keyboard-control",
|
|
3212
|
3261
|
},
|
|
3213
|
|
- // {
|
|
3214
|
|
- // id: "cfrRecommendations",
|
|
3215
|
|
- // l10nId: "browsing-cfr-recommendations",
|
|
3216
|
|
- // supportPage: "extensionrecommendations",
|
|
3217
|
|
- // subcategory: "cfraddons",
|
|
3218
|
|
- // },
|
|
3219
|
|
- // {
|
|
3220
|
|
- // id: "cfrRecommendations-features",
|
|
3221
|
|
- // l10nId: "browsing-cfr-features",
|
|
3222
|
|
- // supportPage: "extensionrecommendations",
|
|
3223
|
|
- // subcategory: "cfrfeatures",
|
|
3224
|
|
- // },
|
|
|
3262
|
+ {
|
|
|
3263
|
+ id: "cfrRecommendations",
|
|
|
3264
|
+ l10nId: "browsing-cfr-recommendations",
|
|
|
3265
|
+ supportPage: "extensionrecommendations",
|
|
|
3266
|
+ subcategory: "cfraddons",
|
|
|
3267
|
+ },
|
|
|
3268
|
+ {
|
|
|
3269
|
+ id: "cfrRecommendations-features",
|
|
|
3270
|
+ l10nId: "browsing-cfr-features",
|
|
|
3271
|
+ supportPage: "extensionrecommendations",
|
|
|
3272
|
+ subcategory: "cfrfeatures",
|
|
|
3273
|
+ },
|
|
3225
|
3274
|
{
|
|
3226
|
3275
|
id: "linkPreviewEnabled",
|
|
3227
|
3276
|
l10nId: "link-preview-settings-enable",
|
| ... |
... |
@@ -3812,6 +3861,21 @@ SettingGroupManager.registerGroups({ |
|
3812
|
3861
|
},
|
|
3813
|
3862
|
],
|
|
3814
|
3863
|
},
|
|
|
3864
|
+ // Hide the payments and addresses settings. tor-browser#44460.
|
|
|
3865
|
+ // NOTE: "payments" and "addresses" are usually configured in
|
|
|
3866
|
+ // FormAutofillPreferences.sys.mjs. But this never runs because the "autofill"
|
|
|
3867
|
+ // extension is excluded from the build. So we configure them ourselves with
|
|
|
3868
|
+ // an empty config. See tor-browser#44630.
|
|
|
3869
|
+ payments: {
|
|
|
3870
|
+ hidden: true,
|
|
|
3871
|
+ hiddenFromSearch: true,
|
|
|
3872
|
+ items: [],
|
|
|
3873
|
+ },
|
|
|
3874
|
+ addresses: {
|
|
|
3875
|
+ hidden: true,
|
|
|
3876
|
+ hiddenFromSearch: true,
|
|
|
3877
|
+ items: [],
|
|
|
3878
|
+ },
|
|
3815
|
3879
|
history: {
|
|
3816
|
3880
|
l10nId: "history-group",
|
|
3817
|
3881
|
headingLevel: 2,
|
browser/components/preferences/privacy.inc.xhtml
| ... |
... |
@@ -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 -->
|
| ... |
... |
@@ -554,13 +554,8 @@ |
|
554
|
554
|
|
|
555
|
555
|
<html:setting-group groupid="passwords" hidden="true" data-category="panePrivacy" />
|
|
556
|
556
|
|
|
557
|
|
-<!-- groupid="payments" and groupid="addresses" are configured by
|
|
558
|
|
- - FormAutofillPreferences.sys.mjs via FormAutofillStatus. But since the
|
|
559
|
|
- - "autofill" extension is excluded from the build, FormAutofillStatus is
|
|
560
|
|
- - never initialised. So we add the would-be data-hidden-* attributes
|
|
561
|
|
- - explicitly here instead. See tor-browser#44460. -->
|
|
562
|
|
-<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="" />
|
|
563
|
|
-<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="" />
|
|
|
557
|
+<html:setting-group data-category="panePrivacy" data-subcategory="payment-methods-autofill credit-card-autofill" groupid="payments" data-group="formAutofill" hidden="true" />
|
|
|
558
|
+<html:setting-group data-category="panePrivacy" data-subcategory="addresses-autofill address-autofill" groupid="addresses" data-group="formAutofill" hidden="true" />
|
|
564
|
559
|
|
|
565
|
560
|
<!-- History -->
|
|
566
|
561
|
<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([ |
|
158
|
158
|
{ id: "privacy.fingerprintingProtection.pbmode", type: "bool" },
|
|
159
|
159
|
|
|
160
|
160
|
// Resist Fingerprinting
|
|
161
|
|
- { id: "privacy.resistFingerprinting", type: "bool" },
|
|
162
|
161
|
{ id: "privacy.resistFingerprinting.pbmode", type: "bool" },
|
|
163
|
162
|
|
|
164
|
163
|
// Social tracking
|
| ... |
... |
@@ -909,12 +908,18 @@ if (SECURITY_PRIVACY_STATUS_CARD_ENABLED) { |
|
909
|
908
|
"etpCustomEnabled",
|
|
910
|
909
|
...SECURITY_WARNINGS.map(warning => warning.id),
|
|
911
|
910
|
],
|
|
|
911
|
+ // Hide the privacy card. tor-browser#44829.
|
|
|
912
|
+ visible: () => false,
|
|
912
|
913
|
});
|
|
913
|
914
|
|
|
914
|
915
|
Preferences.addSetting({
|
|
915
|
916
|
id: "warningCard",
|
|
916
|
917
|
deps: SECURITY_WARNINGS.map(warning => warning.id),
|
|
917
|
918
|
visible: deps => {
|
|
|
919
|
+ // Hide the privacy card's warnings. tor-browser#44829.
|
|
|
920
|
+ if (AppConstants.BASE_BROWSER_VERSION) {
|
|
|
921
|
+ return false;
|
|
|
922
|
+ }
|
|
918
|
923
|
const count = Object.values(deps).filter(
|
|
919
|
924
|
depSetting => depSetting.visible
|
|
920
|
925
|
).length;
|
| ... |
... |
@@ -1247,6 +1252,10 @@ Preferences.addSetting({ |
|
1247
|
1252
|
pref: "privacy.globalprivacycontrol.enabled",
|
|
1248
|
1253
|
deps: ["gpcFunctionalityEnabled"],
|
|
1249
|
1254
|
visible: ({ gpcFunctionalityEnabled }) => {
|
|
|
1255
|
+ // Hide GPC. tor-browser#42777.
|
|
|
1256
|
+ if (AppConstants.BASE_BROWSER_VERSION) {
|
|
|
1257
|
+ return false;
|
|
|
1258
|
+ }
|
|
1250
|
1259
|
return gpcFunctionalityEnabled.value;
|
|
1251
|
1260
|
},
|
|
1252
|
1261
|
});
|
| ... |
... |
@@ -1258,6 +1267,13 @@ Preferences.addSetting({ |
|
1258
|
1267
|
id: "relayIntegration",
|
|
1259
|
1268
|
deps: ["savePasswords", "relayFeature"],
|
|
1260
|
1269
|
visible: () => {
|
|
|
1270
|
+ // Hide Firefox Relay. tor-browser#43109 and tor-browser#42814.
|
|
|
1271
|
+ // NOTE: Whilst `FirefoxRelay.isDisabled` is `true` due to preferences we
|
|
|
1272
|
+ // set for Base Browser, `FirefoxRelay.isAvailable` is also `true` in this
|
|
|
1273
|
+ // case, hence why we still need to hide this unconditionally.
|
|
|
1274
|
+ if (AppConstants.BASE_BROWSER_VERSION) {
|
|
|
1275
|
+ return false;
|
|
|
1276
|
+ }
|
|
1261
|
1277
|
return FirefoxRelay.isAvailable;
|
|
1262
|
1278
|
},
|
|
1263
|
1279
|
disabled: ({ savePasswords, relayFeature }) => {
|
| ... |
... |
@@ -2643,6 +2659,8 @@ Preferences.addSetting({ |
|
2643
|
2659
|
|
|
2644
|
2660
|
Preferences.addSetting({
|
|
2645
|
2661
|
id: "etpStatusBoxGroup",
|
|
|
2662
|
+ // Hide enhanced tracking protection (ETP). tor-browser#26345.
|
|
|
2663
|
+ visible: () => false,
|
|
2646
|
2664
|
});
|
|
2647
|
2665
|
|
|
2648
|
2666
|
Preferences.addSetting({
|
| ... |
... |
@@ -2675,6 +2693,8 @@ Preferences.addSetting({ |
|
2675
|
2693
|
|
|
2676
|
2694
|
Preferences.addSetting({
|
|
2677
|
2695
|
id: "protectionsDashboardLink",
|
|
|
2696
|
+ // Hide enhanced tracking protection (ETP). tor-browser#26345.
|
|
|
2697
|
+ visible: () => false,
|
|
2678
|
2698
|
});
|
|
2679
|
2699
|
|
|
2680
|
2700
|
Preferences.addSetting({
|
| ... |
... |
@@ -2727,11 +2747,6 @@ Preferences.addSetting({ |
|
2727
|
2747
|
},
|
|
2728
|
2748
|
});
|
|
2729
|
2749
|
|
|
2730
|
|
-Preferences.addSetting({
|
|
2731
|
|
- id: "resistFingerprinting",
|
|
2732
|
|
- pref: "privacy.resistFingerprinting",
|
|
2733
|
|
-});
|
|
2734
|
|
-
|
|
2735
|
2750
|
Preferences.addSetting({
|
|
2736
|
2751
|
id: "resistFingerprintingPBM",
|
|
2737
|
2752
|
pref: "privacy.resistFingerprinting.pbmode",
|
| ... |
... |
@@ -3560,6 +3575,12 @@ var gPrivacyPane = { |
|
3560
|
3575
|
initSettingGroup("cookiesAndSiteData2");
|
|
3561
|
3576
|
initSettingGroup("certificates");
|
|
3562
|
3577
|
initSettingGroup("ipprotection");
|
|
|
3578
|
+ // NOTE: "payments" and "addresses" are usually initialised by
|
|
|
3579
|
+ // FormAutofillPreferences.sys.mjs via FormAutofillStatus. But this never
|
|
|
3580
|
+ // runs because the "autofill" extension is excluded from the build. So we
|
|
|
3581
|
+ // initialise them ourselves with an empty config. See tor-browser#44630.
|
|
|
3582
|
+ initSettingGroup("payments");
|
|
|
3583
|
+ initSettingGroup("addresses");
|
|
3563
|
3584
|
initSettingGroup("history");
|
|
3564
|
3585
|
initSettingGroup("history2");
|
|
3565
|
3586
|
initSettingGroup("permissions");
|
|