aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-05-01 22:02:53 +0200
committerMs2ger <ms2ger@gmail.com>2014-05-01 22:02:53 +0200
commit8c879c8bf8c7ab9938307c252ca74baf2c845631 (patch)
tree518c69cb01e5685535b602a1594c5023314dcd2a /src/components/script/dom/bindings/codegen/CodegenRust.py
parent541d581c3295c976adfaf28070d20f08773c7cb3 (diff)
downloadservo-8c879c8bf8c7ab9938307c252ca74baf2c845631.tar.gz
servo-8c879c8bf8c7ab9938307c252ca74baf2c845631.zip
Implement WebIDL codegen for ByteString.
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',