codegen: Throw on an invalid enum value when appropiate

This commit is contained in:
Emilio Cobos Álvarez 2016-05-13 10:11:30 +02:00
parent 093f5c01e4
commit e50d4b7624
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
5 changed files with 56 additions and 10 deletions

View file

@ -662,12 +662,17 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
'%s' % (firstCap(sourceDescription), exceptionCode))),
post="\n")
def onFailureInvalidEnumValue(failureCode):
return CGGeneric(
failureCode or
('throw_type_error(cx, "%s is not a valid enum value."); %s'
% (firstCap(sourceDescription), exceptionCode)))
def onFailureNotCallable(failureCode):
return CGWrapper(
CGGeneric(
return CGGeneric(
failureCode or
('throw_type_error(cx, \"%s is not callable.\");\n'
'%s' % (firstCap(sourceDescription), exceptionCode))))
'%s' % (firstCap(sourceDescription), exceptionCode)))
# A helper function for handling null default values. Checks that the
# default value, if it exists, is null.
@ -868,7 +873,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
"yet")
enum = type.inner.identifier.name
if invalidEnumValueFatal:
handleInvalidEnumValueCode = exceptionCode
handleInvalidEnumValueCode = onFailureInvalidEnumValue(failureCode).define()
else:
handleInvalidEnumValueCode = "return true;"

View file

@ -11,3 +11,4 @@
[Using special character in fileName]
expected: FAIL

View file

@ -1,9 +1,41 @@
[DOMParser-parseFromString-xml.html]
type: testharness
expected: TIMEOUT
[Should return an error document for XML wellformedness errors in type text/xml]
expected: FAIL
[Should parse correctly in type application/xml]
expected: TIMEOUT
expected: FAIL
[XMLDocument interface for correctly parsed document with type application/xml]
expected: FAIL
[Should return an error document for XML wellformedness errors in type application/xml]
expected: FAIL
[XMLDocument interface for incorrectly parsed document with type application/xml]
expected: FAIL
[Should parse correctly in type application/xhtml+xml]
expected: FAIL
[XMLDocument interface for correctly parsed document with type application/xhtml+xml]
expected: FAIL
[Should return an error document for XML wellformedness errors in type application/xhtml+xml]
expected: FAIL
[XMLDocument interface for incorrectly parsed document with type application/xhtml+xml]
expected: FAIL
[Should parse correctly in type image/svg+xml]
expected: FAIL
[XMLDocument interface for correctly parsed document with type image/svg+xml]
expected: FAIL
[Should return an error document for XML wellformedness errors in type image/svg+xml]
expected: FAIL
[XMLDocument interface for incorrectly parsed document with type image/svg+xml]
expected: FAIL

View file

@ -1,6 +1,5 @@
[Document-defaultView.html]
type: testharness
expected: TIMEOUT
[Document created with the Document constructor]
expected: FAIL
@ -11,5 +10,8 @@
expected: FAIL
[Document created with XML DOMParser]
expected: TIMEOUT
expected: FAIL
[Document created with HTML DOMParser]
expected: FAIL

View file

@ -61,4 +61,10 @@ test(function() {
assert_equals(htmldoc.documentElement.localName, "html");
assert_equals(htmldoc.documentElement.namespaceURI, "http://www.w3.org/1999/xhtml");
}, "DOMParser parses HTML tag soup with no problems");
test(function() {
assert_throws(new TypeError(), function() {
new DOMParser().parseFromString("", "text/foo-this-is-invalid");
})
}, "DOMParser throws on an invalid enum value")
</script>