aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index b486806e562..0b1187a07fb 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -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