tor-browser

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

commit abe7692c971a64f0ab74bd03da764d474013bdfe
parent 3c8ee1c288fa100b17779e6e78917969a92fa13e
Author: mark <mkennedy@mozilla.com>
Date:   Wed,  1 Oct 2025 18:43:57 +0000

Bug 1990504 - Fix and import Setting and Preference types to avoid them being implicitly any r=hjones

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

Diffstat:
Mbrowser/components/preferences/widgets/setting-control/setting-control.mjs | 1+
Mbrowser/components/preferences/widgets/setting-group/setting-group.mjs | 22+++++++++++++++++++++-
Mtoolkit/content/preferences/AsyncSetting.mjs | 2+-
Mtoolkit/content/preferences/Preferences.mjs | 14+++++---------
Mtoolkit/content/preferences/Setting.mjs | 3++-
5 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/browser/components/preferences/widgets/setting-control/setting-control.mjs b/browser/components/preferences/widgets/setting-control/setting-control.mjs @@ -18,6 +18,7 @@ import { import { MozLitElement } from "chrome://global/content/lit-utils.mjs"; /** @import MozCheckbox from "../../../../../toolkit/content/widgets/moz-checkbox/moz-checkbox.mjs"*/ +/** @import { Setting } from "chrome://global/content/preferences/Setting.mjs"; */ /** * A Lit directive that applies all properties of an object to a DOM element. diff --git a/browser/components/preferences/widgets/setting-group/setting-group.mjs b/browser/components/preferences/widgets/setting-group/setting-group.mjs @@ -5,6 +5,9 @@ import { html, ifDefined } from "chrome://global/content/vendor/lit.all.mjs"; import { MozLitElement } from "chrome://global/content/lit-utils.mjs"; +/** @import { SettingControl } from "../setting-control/setting-control.mjs"; */ +/** @import {PreferencesSettingsConfig, Preferences} from "chrome://global/content/preferences/Preferences.mjs" */ + const CLICK_HANDLERS = new Set([ "dialog-button", "moz-box-button", @@ -14,10 +17,24 @@ const CLICK_HANDLERS = new Set([ ]); export class SettingGroup extends MozLitElement { + /** + * @type {PreferencesSettingsConfig | undefined} + */ + config; + + /** + * @type {Preferences['getSetting'] | undefined} + */ + getSetting; + + /** + * @type {Array<SettingControl>} + */ + controlEls; + static properties = { config: { type: Object }, groupId: { type: String }, - // getSetting should be Preferences.getSetting from preferencesBindings.js getSetting: { type: Function }, }; @@ -55,6 +72,9 @@ export class SettingGroup extends MozLitElement { control?.onClick(e); } + /** + * @param {PreferencesSettingsConfig} item + */ itemTemplate(item) { let setting = this.getSetting(item.id); return html`<setting-control diff --git a/toolkit/content/preferences/AsyncSetting.mjs b/toolkit/content/preferences/AsyncSetting.mjs @@ -98,7 +98,7 @@ export class AsyncSettingHandler { /** @type {Function} */ #emitChange; - /** @type {Record<string, Setting>} */ + /** @type {import("./Setting.mjs").PreferenceSettingDepsMap} */ deps; /** @type {Setting} */ diff --git a/toolkit/content/preferences/Preferences.mjs b/toolkit/content/preferences/Preferences.mjs @@ -6,16 +6,13 @@ import { AsyncSetting } from "chrome://global/content/preferences/AsyncSetting.m import { Preference } from "chrome://global/content/preferences/Preference.mjs"; import { Setting } from "chrome://global/content/preferences/Setting.mjs"; -/** - * A map of Setting instances (values) along with their IDs - * (keys) so that the dependencies of a setting can - * be easily looked up by just their ID. - * - * @typedef {Record<string, Setting>} PreferenceSettingDepsMap - */ +/** @import {PreferenceConfigInfo} from "chrome://global/content/preferences/Preference.mjs" */ +/** @import {PreferenceSettingDepsMap} from "chrome://global/content/preferences/Setting.mjs" */ /** * @callback PreferenceSettingVisibleFunction + * @param {PreferenceSettingDepsMap} deps + * @param {Setting} setting * @returns {boolean | string | undefined} If truthy shows the setting in the UI, or hides it if not */ @@ -25,7 +22,7 @@ import { Setting } from "chrome://global/content/preferences/Setting.mjs"; * @callback PreferenceSettingGetter * @param {string | number} val - The value that was retrieved from the preferences backend * @param {PreferenceSettingDepsMap} deps - * @param {Setting} setting* + * @param {Setting} setting * @returns {any} - The value to set onto the setting */ @@ -49,7 +46,6 @@ import { Setting } from "chrome://global/content/preferences/Setting.mjs"; /** * @callback PreferencesSettingConfigDisabledFunction - * @param {string} val - The value/pressed/checked from the input of the control associated with the setting * @param {PreferenceSettingDepsMap} deps * @param {Setting} setting * @returns {boolean} diff --git a/toolkit/content/preferences/Setting.mjs b/toolkit/content/preferences/Setting.mjs @@ -9,6 +9,7 @@ import { import { Preferences } from "chrome://global/content/preferences/Preferences.mjs"; /** @import { type Preference } from "chrome://global/content/preferences/Preference.mjs" */ +/** @import { PreferencesSettingsConfig } from "chrome://global/content/preferences/Preferences.mjs" */ const { EventEmitter } = ChromeUtils.importESModule( "resource://gre/modules/EventEmitter.sys.mjs" @@ -27,7 +28,7 @@ ChromeUtils.defineESModuleGetters(lazy, { * (keys) so that the dependencies of a setting can * be easily looked up by just their ID. * - * @typedef {Record<string, any>} PreferenceSettingDepsMap + * @typedef {Record<string, Setting | undefined>} PreferenceSettingDepsMap */ export class Setting extends EventEmitter {