tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit b73c0bcfeedb7e5384da04db8829b89603027651
parent 8f823be747db655aef53348b58ea9de4f36c8834
Author: Maxx Crawford <mcrawford@mozilla.com>
Date:   Tue, 16 Dec 2025 20:39:11 +0000

Bug 1969953 - Migrate Homepage preferences to new config markup on about:settings#home r=mstriemer,home-newtab-reviewers,fluent-reviewers,bolsson,nina-py,desktop-theme-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D273105

Diffstat:
Mbrowser/components/preferences/home.inc.xhtml | 11++++++++++-
Mbrowser/components/preferences/home.js | 105++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mbrowser/components/preferences/main.js | 43+++++++++++++++++++++++++++++++++++++++++++
Mbrowser/locales/en-US/browser/preferences/preferences.ftl | 12+++++++++---
Mbrowser/themes/shared/preferences/preferences.css | 7+++++++
Apython/l10n/fluent_migrations/bug_1969953_settings_redesign_homepage_labels.py | 32++++++++++++++++++++++++++++++++
6 files changed, 202 insertions(+), 8 deletions(-)

diff --git a/browser/components/preferences/home.inc.xhtml b/browser/components/preferences/home.inc.xhtml @@ -9,7 +9,8 @@ <hbox id="firefoxHomeCategory" class="subcategory" hidden="true" - data-category="paneHome"> + data-category="paneHome" + data-srd-groupid="homepage"> <html:h1 style="flex: 1;" data-l10n-id="pane-home-title"/> <button id="restoreDefaultHomePageBtn" is="highlightable-button" @@ -21,6 +22,7 @@ <groupbox id="homepageGroup" data-category="paneHome" + data-srd-groupid="homepage" hidden="true"> <label><html:h2 data-l10n-id="home-new-windows-tabs-header"/></label> <description class="description-deemphasized" data-l10n-id="home-new-windows-tabs-description2" /> @@ -114,6 +116,13 @@ </groupbox> <html:setting-group + groupid="homepage" + hidden="true" + data-category="paneHome" + data-subcategory="contents" + /> + +<html:setting-group groupid="home" hidden="true" data-category="paneHome" diff --git a/browser/components/preferences/home.js b/browser/components/preferences/home.js @@ -24,20 +24,112 @@ ChromeUtils.defineESModuleGetters(this, { * false = about:blank is shown */ +const DEFAULT_HOMEPAGE_URL = "about:home"; +const BLANK_HOMEPAGE_URL = "chrome://browser/content/blanktab.html"; + Preferences.addAll([ - { id: "browser.startup.homepage", type: "wstring" }, + { id: "browser.startup.homepage", type: "string" }, { id: "pref.browser.homepage.disable_button.current_page", type: "bool" }, { id: "pref.browser.homepage.disable_button.bookmark_page", type: "bool" }, - { id: "pref.browser.homepage.disable_button.restore_default", type: "bool" }, + { + id: "pref.browser.homepage.disable_button.restore_default", + type: "bool", + }, { id: "browser.newtabpage.enabled", type: "bool" }, ]); +if (Services.prefs.getBoolPref("browser.settings-redesign.enabled")) { + // Homepage / New Windows + Preferences.addSetting( + /** @type {{ useCustomHomepage: boolean } & SettingConfig } */ ({ + id: "homepageNewWindows", + pref: "browser.startup.homepage", + useCustomHomepage: false, + get(prefVal) { + if (this.useCustomHomepage) { + return "custom"; + } + switch (prefVal) { + case DEFAULT_HOMEPAGE_URL: + return "home"; + case BLANK_HOMEPAGE_URL: + return "blank"; + // Bug 1969951 - Custom value can be any string so leaving it as default value to catch + // non-default/blank entires. + default: + return "custom"; + } + }, + set(inputVal, _, setting) { + let wasCustomHomepage = this.useCustomHomepage; + this.useCustomHomepage = inputVal == "custom"; + if (wasCustomHomepage != this.useCustomHomepage) { + setting.onChange(); + } + switch (inputVal) { + case "home": + return DEFAULT_HOMEPAGE_URL; + case "blank": + return BLANK_HOMEPAGE_URL; + case "custom": + // Bug 1969951 - Add values set in subpage here + return setting.pref.value; + default: + throw new Error("No handler for this value"); + } + }, + }) + ); + + // Homepage / Choose Custom Homepage URL Button + Preferences.addSetting({ + id: "homepageGoToCustomHomepageUrlPanel", + deps: ["homepageNewWindows"], + visible: ({ homepageNewWindows }) => { + return homepageNewWindows.value == "custom"; + }, + onUserClick: () => { + // Bug 1969951 - Navigate to Custom Homepage Subpage + }, + }); + + // Homepage / New Tabs + Preferences.addSetting({ + id: "homepageNewTabs", + pref: "browser.newtabpage.enabled", + get(prefVal) { + return prefVal.toString(); + }, + set(inputVal) { + return inputVal === "true"; + }, + }); + + // Homepage / Restore Defaults button + Preferences.addSetting({ + id: "homepageRestoreDefaults", + pref: "pref.browser.homepage.disable_button.restore_default", + deps: ["homepageNewWindows", "homepageNewTabs"], + disabled: ({ homepageNewWindows, homepageNewTabs }) => { + return ( + homepageNewWindows.value === "home" && homepageNewTabs.value === "true" + ); + }, + onUserClick: (e, { homepageNewWindows, homepageNewTabs }) => { + e.preventDefault(); + + // Bug 1969951 - This is temporary until the custom URL subpage is implemented. + // Once users can set custom URLs in the subpage, this will properly reset those values. + homepageNewWindows.value = "home"; + homepageNewTabs.value = "true"; + }, + }); +} + const HOMEPAGE_OVERRIDE_KEY = "homepage_override"; const URL_OVERRIDES_TYPE = "url_overrides"; const NEW_TAB_KEY = "newTabURL"; -const BLANK_HOMEPAGE_URL = "chrome://browser/content/blanktab.html"; - // New Prefs UI: we need to check for this setting before registering prefs // so that old-style prefs continue working if (Services.prefs.getBoolPref("browser.settings-redesign.enabled")) { @@ -149,6 +241,7 @@ if (Services.prefs.getBoolPref("browser.settings-redesign.enabled")) { id: "showWeather", pref: "browser.newtabpage.activity-stream.system.showWeather", }); + Preferences.addSetting({ id: "weather", pref: "browser.newtabpage.activity-stream.showWeather", @@ -161,6 +254,7 @@ if (Services.prefs.getBoolPref("browser.settings-redesign.enabled")) { id: "widgetsEnabled", pref: "browser.newtabpage.activity-stream.widgets.system.enabled", }); + Preferences.addSetting({ id: "widgets", pref: "browser.newtabpage.activity-stream.widgets.enabled", @@ -173,6 +267,7 @@ if (Services.prefs.getBoolPref("browser.settings-redesign.enabled")) { id: "listsEnabled", pref: "browser.newtabpage.activity-stream.widgets.system.lists.enabled", }); + Preferences.addSetting({ id: "lists", pref: "browser.newtabpage.activity-stream.widgets.lists.enabled", @@ -185,6 +280,7 @@ if (Services.prefs.getBoolPref("browser.settings-redesign.enabled")) { id: "timerEnabled", pref: "browser.newtabpage.activity-stream.widgets.system.focusTimer.enabled", }); + Preferences.addSetting({ id: "timer", pref: "browser.newtabpage.activity-stream.widgets.focusTimer.enabled", @@ -944,6 +1040,7 @@ var gHomePane = { }, init() { + initSettingGroup("homepage"); initSettingGroup("home"); // Event Listeners diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js @@ -2008,6 +2008,49 @@ SettingGroupManager.registerGroups({ }, ], }, + homepage: { + inProgress: true, + headingLevel: 2, + l10nId: "home-homepage-title", + items: [ + { + id: "homepageNewWindows", + control: "moz-select", + l10nId: "home-homepage-new-windows", + options: [ + { + value: "home", + l10nId: "home-mode-choice-default-fx", + }, + { value: "blank", l10nId: "home-mode-choice-blank" }, + { value: "custom", l10nId: "home-mode-choice-custom" }, + ], + }, + { + id: "homepageGoToCustomHomepageUrlPanel", + control: "moz-box-button", + l10nId: "home-homepage-custom-homepage-button", + }, + { + id: "homepageNewTabs", + control: "moz-select", + l10nId: "home-homepage-new-tabs", + options: [ + { + value: "true", + l10nId: "home-mode-choice-default-fx", + }, + { value: "false", l10nId: "home-mode-choice-blank" }, + ], + }, + { + id: "homepageRestoreDefaults", + control: "moz-button", + l10nId: "home-restore-defaults", + controlAttrs: { id: "restoreDefaultHomePageBtn" }, + }, + ], + }, home: { inProgress: true, headingLevel: 2, diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl @@ -722,14 +722,19 @@ home-new-windows-tabs-description2 = Choose what you see when you open your home ## Home Section - Home Page Customization -home-homepage-header = Homepage +home-homepage-title = + .label = Homepage home-homepage-mode-label = Homepage and new windows -home-homepage-mode-label2 = New windows +home-homepage-new-windows = + .label = New windows home-newtabs-mode-label = New tabs +home-homepage-new-tabs = + .label = New tabs + home-restore-defaults = .label = Restore Defaults .accesskey = R @@ -751,7 +756,8 @@ home-homepage-manage-extension-button = .label = Manage extension # This option leads to the "Custom Homepage" subpage -home-homepage-custom-homepage-url = Choose a specific site +home-homepage-custom-homepage-button = + .label = Choose a specific site ## Custom Homepage subpage diff --git a/browser/themes/shared/preferences/preferences.css b/browser/themes/shared/preferences/preferences.css @@ -1406,6 +1406,13 @@ richlistitem .text-link:hover { } /** SRD web-appearance-chooser control END **/ +/** SRD rows control for Homepage START **/ +setting-group[groupid="homepage"] { + --select-max-width: fit-content; + --select-min-width: 15em; +} +/** SRD rows control for Homepage END **/ + /** SRD rows control for New Tab START **/ setting-group[groupid="home"] { --select-max-width: 17rem; diff --git a/python/l10n/fluent_migrations/bug_1969953_settings_redesign_homepage_labels.py b/python/l10n/fluent_migrations/bug_1969953_settings_redesign_homepage_labels.py @@ -0,0 +1,32 @@ +# Any copyright is dedicated to the Public Domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +from fluent.migrate.helpers import transforms_from + + +def migrate(ctx): + """Bug 1969953 - Move Homepage settings strings to .label attributes, part {index}.""" + + source = "browser/browser/preferences/preferences.ftl" + target = source + + ctx.add_transforms( + target, + target, + transforms_from( + """ +home-homepage-title = + .label = { COPY_PATTERN(from_path, "home-homepage-header") } + +home-homepage-new-windows = + .label = { COPY_PATTERN(from_path, "home-homepage-mode-label2") } + +home-homepage-new-tabs = + .label = { COPY_PATTERN(from_path, "home-newtabs-mode-label") } + +home-homepage-custom-homepage-button = + .label = { COPY_PATTERN(from_path, "home-homepage-custom-homepage-url") } +""", + from_path=source, + ), + )