tor-browser

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

commit bb177227c5cf2b7aa8c8ccc73df6ae4f4c250b02
parent 91638ad4b5e5ad5fba3bffcad9d35aacdb254470
Author: Markus Stange <mstange.moz@gmail.com>
Date:   Wed, 17 Dec 2025 22:20:48 +0000

Bug 2006744 - Don't create JSON schema validator for FingerprintingWebCompatService unless we actually have overrides to validate. r=tjr

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

Diffstat:
Mtoolkit/components/resistfingerprinting/FingerprintingWebCompatService.sys.mjs | 14++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/toolkit/components/resistfingerprinting/FingerprintingWebCompatService.sys.mjs b/toolkit/components/resistfingerprinting/FingerprintingWebCompatService.sys.mjs @@ -113,7 +113,6 @@ export class FingerprintingWebCompatService { this.#granularOverrides = new Set(); this.#rs = lazy.RemoteSettings(COLLECTION_NAME); - this.#validator = new lazy.JsonSchema.Validator(SCHEMA); } async init() { @@ -154,6 +153,11 @@ export class FingerprintingWebCompatService { lazy.logConsole.debug("Init completes"); } + // Lazily create the schema validator when needed + #getSchemaValidator() { + return (this.#validator ??= new lazy.JsonSchema.Validator(SCHEMA)); + } + // Import fingerprinting overrides from the local granular pref. #importPrefOverrides() { lazy.logConsole.debug("importLocalGranularOverrides"); @@ -184,9 +188,15 @@ export class FingerprintingWebCompatService { return; } + // Skip creating the validator if there's nothing to validate. + if (overrides.length === 0) { + continue; + } + + const validator = this.#getSchemaValidator(); for (let override of overrides) { // Validate the override. - let { valid, errors } = this.#validator.validate(override); + let { valid, errors } = validator.validate(override); if (!valid) { lazy.logConsole.debug("Override validation error", override, errors);