aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index f7d6c23ed98..0fe840a33a0 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -687,6 +687,24 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
return handleOptional(getConversionCode(), CGGeneric(declType), isOptional)
+ if type.isByteString():
+ assert not isEnforceRange and not isClamp
+
+ conversionCode = (
+ "match FromJSValConvertible::from_jsval(cx, ${val}, ()) {\n"
+ " Ok(strval) => strval,\n"
+ " Err(_) => { %s },\n"
+ "}" % exceptionCode)
+
+ declType = CGGeneric("ByteString")
+ if type.nullable():
+ declType = CGWrapper(declType, pre="Option<", post=">")
+ conversionCode = handleDefaultNull(conversionCode, "None")
+ else:
+ assert defaultValue is None
+
+ return handleOptional(conversionCode, declType, isOptional)
+
if type.isEnum():
assert not isEnforceRange and not isClamp
@@ -996,6 +1014,11 @@ def getRetvalDeclarationForType(returnType, descriptorProvider):
if returnType.nullable():
result = CGWrapper(result, pre="Option<", post=">")
return result
+ if returnType.isByteString():
+ result = CGGeneric("ByteString")
+ if returnType.nullable():
+ result = CGWrapper(result, pre="Option<", post=">")
+ return result
if returnType.isEnum():
result = CGGeneric(returnType.unroll().inner.identifier.name)
if returnType.nullable():
@@ -4283,11 +4306,12 @@ class CGBindingRoot(CGThing):
'dom::bindings::error::{FailureUnknown, Fallible, Error, ErrorResult}',
'dom::bindings::error::{throw_method_failed_with_details}',
'dom::bindings::error::throw_type_error',
- 'script_task::JSPageInfo',
'dom::bindings::proxyhandler',
'dom::bindings::proxyhandler::{_obj_toString, defineProperty}',
'dom::bindings::proxyhandler::{FillPropertyDescriptor, GetExpandoObject}',
'dom::bindings::proxyhandler::{getPropertyDescriptor}',
+ 'dom::bindings::str::ByteString',
+ 'script_task::JSPageInfo',
'libc',
'servo_util::str::DOMString',
'servo_util::vec::zip_copies',