mirror of
https://github.com/servo/servo
synced 2026-05-01 03:47:53 +02:00
integrate readablestream with fetch and blob
This commit is contained in:
@@ -906,6 +906,40 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
|
||||
|
||||
return handleOptional(templateBody, declType, handleDefault("None"))
|
||||
|
||||
if type.isReadableStream():
|
||||
assert not isEnforceRange and not isClamp
|
||||
|
||||
if failureCode is None:
|
||||
unwrapFailureCode = '''throw_type_error(*cx, "This object is not \
|
||||
an instance of ReadableStream.");\n'''
|
||||
else:
|
||||
unwrapFailureCode = failureCode
|
||||
|
||||
templateBody = fill(
|
||||
"""
|
||||
{
|
||||
use crate::realms::{AlreadyInRealm, InRealm};
|
||||
let in_realm_proof = AlreadyInRealm::assert_for_cx(cx);
|
||||
match ReadableStream::from_js(cx, $${val}.get().to_object(), InRealm::Already(&in_realm_proof)) {
|
||||
Ok(val) => val,
|
||||
Err(()) => {
|
||||
$*{failureCode}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
""",
|
||||
failureCode=unwrapFailureCode + "\n",
|
||||
)
|
||||
|
||||
templateBody = wrapObjectTemplate(templateBody, "None",
|
||||
isDefinitelyObject, type, failureCode)
|
||||
|
||||
declType = CGGeneric("DomRoot<ReadableStream>")
|
||||
|
||||
return handleOptional(templateBody, declType,
|
||||
handleDefault("None"))
|
||||
|
||||
elif type.isSpiderMonkeyInterface():
|
||||
raise TypeError("Can't handle SpiderMonkey interface arguments other than typed arrays yet")
|
||||
|
||||
@@ -4481,6 +4515,9 @@ def getUnionTypeTemplateVars(type, descriptorProvider):
|
||||
elif type.isObject():
|
||||
name = type.name
|
||||
typeName = "Heap<*mut JSObject>"
|
||||
elif type.isReadableStream():
|
||||
name = type.name
|
||||
typeName = "DomRoot<ReadableStream>"
|
||||
elif is_typed_array(type):
|
||||
name = type.name
|
||||
typeName = "typedarray::Heap" + name
|
||||
|
||||
Reference in New Issue
Block a user