aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/json-schema.js16
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);
}
}