diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-05-06 12:16:03 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-05-06 12:16:03 +0200 |
commit | 8ea3cbf18a72efed413b75d95f71099c16886ac2 (patch) | |
tree | fb36904a9ffa8346bd93194a2e6f1d2d57cb088e /src/components/script/dom/bindings/codegen/CodegenRust.py | |
parent | 3a5fc11bb8d734cb9113e5e90cb85c025c778fdb (diff) | |
download | servo-8ea3cbf18a72efed413b75d95f71099c16886ac2.tar.gz servo-8ea3cbf18a72efed413b75d95f71099c16886ac2.zip |
Enter a compartment when calling callbacks.
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 3e86f722869..4429298f5a4 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -4859,14 +4859,21 @@ class CallbackMember(CGNativeMember): # Avoid weird 0-sized arrays replacements["argvDecl"] = "" - return string.Template( - # Newlines and semicolons are in the values + # Newlines and semicolons are in the values + pre = string.Template( "${setupCall}" "${declRval}" - "${argvDecl}" + "${argvDecl}").substitute(replacements) + body = string.Template( "${convertArgs}" "${doCall}" "${returnResult}").substitute(replacements) + return CGList([ + CGGeneric(pre), + CGWrapper(CGIndenter(CGGeneric(body)), + pre="with_compartment(cx, self.parent.callback, || {\n", + post="})") + ], "\n").define() def getResultConversion(self): replacements = { @@ -4889,7 +4896,7 @@ class CallbackMember(CGNativeMember): assignRetval = string.Template( self.getRetvalInfo(self.retvalType, False)[2]).substitute(replacements) - return convertType.define() + "\n" + assignRetval + return convertType.define() + "\n" + assignRetval + "\n" def getArgConversions(self): # Just reget the arglist from self.originalSig, because our superclasses |