diff options
Diffstat (limited to 'ext/bg/js/json-schema.js')
| -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);          }      } |