aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-06-20 19:20:52 +0200
committerMs2ger <ms2ger@gmail.com>2014-06-20 19:21:47 +0200
commit8df0f981fec91d069e5756f775152b6fbfd88686 (patch)
tree8e7a415c01d66242b7dd51f225f89ec2fae4ef7e /src/components/script/dom/bindings/codegen
parent5acbea51999ead858aa90266a5ab4473a3dd11da (diff)
downloadservo-8df0f981fec91d069e5756f775152b6fbfd88686.tar.gz
servo-8df0f981fec91d069e5756f775152b6fbfd88686.zip
Keep calling the DefineDOMInterface method for NoInterfaceObject interfaces.
DefineDOMInterface also creates the proxy handler for proxy classes, so it should be called in this case as well.
Diffstat (limited to 'src/components/script/dom/bindings/codegen')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index 647fd50766f..293cdf0ca4d 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2001,13 +2001,6 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod):
return CGAbstractMethod.define(self)
def definition_body(self):
- if self.descriptor.interface.hasInterfacePrototypeObject():
- # We depend on GetProtoObject defining an interface constructor
- # object as needed.
- getter = "GetProtoObject"
- else:
- getter = "GetConstructorObject"
-
body = ""
#XXXjdm This self.descriptor.concrete check shouldn't be necessary
if not self.descriptor.concrete or self.descriptor.proxy:
@@ -2049,10 +2042,13 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod):
TRACE_HOOK_NAME,
self.descriptor.name)
- return (body + """ let cx = (**js_info.js_context).ptr;
+ if self.descriptor.interface.hasInterfaceObject():
+ body += """ let cx = (**js_info.js_context).ptr;
let global = window.reflector().get_jsobject();
assert!(global.is_not_null());
- assert!(%s(cx, global, global).is_not_null());""" % (getter))
+ assert!(GetProtoObject(cx, global, global).is_not_null());"""
+
+ return body
def needCx(returnType, arguments, extendedAttributes, considerTypes):
return (considerTypes and
@@ -3867,8 +3863,7 @@ class CGDescriptor(CGThing):
CGConstant(m for m in descriptor.interface.members if m.isConst()),
public=True))
- if descriptor.interface.hasInterfaceObject():
- cgThings.append(CGDefineDOMInterfaceMethod(descriptor))
+ cgThings.append(CGDefineDOMInterfaceMethod(descriptor))
if descriptor.concrete:
if descriptor.proxy:
@@ -4114,7 +4109,7 @@ class CGRegisterProtos(CGAbstractMethod):
def _registerProtos(self):
lines = [" codegen::Bindings::%sBinding::DefineDOMInterface(window, js_info);" % desc.name
- for desc in self.config.getDescriptors(hasInterfaceObject=True,
+ for desc in self.config.getDescriptors(isCallback=False,
register=True)]
return '\n'.join(lines) + '\n'
def definition_body(self):