diff options
Diffstat (limited to 'ext/bg')
-rw-r--r-- | ext/bg/js/json-schema.js | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/ext/bg/js/json-schema.js b/ext/bg/js/json-schema.js index 65fbce41..97429211 100644 --- a/ext/bg/js/json-schema.js +++ b/ext/bg/js/json-schema.js @@ -199,17 +199,19 @@ class JsonSchemaProxyHandler { } static validateConditional(value, schema) { - const ifCondition = schema.if; - if (!JsonSchemaProxyHandler.isObject(ifCondition)) { return; } + const ifSchema = schema.if; + if (!JsonSchemaProxyHandler.isObject(ifSchema)) { return; } - const thenSchema = schema.then; - if (JsonSchemaProxyHandler.isObject(thenSchema)) { + let okay = true; + try { JsonSchemaProxyHandler.validate(value, thenSchema); + } catch (e) { + okay = false; } - const elseSchema = schema.else; - if (JsonSchemaProxyHandler.isObject(elseSchema)) { - JsonSchemaProxyHandler.validate(value, thenSchema); + const nextSchema = okay ? schema.then : schema.else; + if (JsonSchemaProxyHandler.isObject(nextSchema)) { + JsonSchemaProxyHandler.validate(value, nextSchema); } } |