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:
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);