aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-11-27 14:37:04 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2016-11-30 23:23:42 +0100
commitddfb8805dc1c2df97f0596cf063935b4f3c5b90b (patch)
tree14454c36600563df3b624fc30c86571daa5e14f2 /components/script/dom/bindings/codegen/CodegenRust.py
parent973f77c00698938c1333c0df7da30993075264d1 (diff)
downloadservo-ddfb8805dc1c2df97f0596cf063935b4f3c5b90b.tar.gz
servo-ddfb8805dc1c2df97f0596cf063935b4f3c5b90b.zip
Make WebIDL static methods take a more specific global if possible
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 09681e579b9..28d0d9af459 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -3378,12 +3378,13 @@ class CGAbstractStaticBindingMethod(CGAbstractMethod):
Argument('*mut JSVal', 'vp'),
]
CGAbstractMethod.__init__(self, descriptor, name, "bool", args, extern=True)
+ self.exposureSet = descriptor.interface.exposureSet
def definition_body(self):
- preamble = CGGeneric("""\
-let global = GlobalScope::from_object(JS_CALLEE(cx, vp).to_object());
-""")
- return CGList([preamble, self.generate_code()])
+ preamble = "let global = GlobalScope::from_object(JS_CALLEE(cx, vp).to_object());\n"
+ if len(self.exposureSet) == 1:
+ preamble += "let global = Root::downcast::<dom::types::%s>(global).unwrap();\n" % list(self.exposureSet)[0]
+ return CGList([CGGeneric(preamble), self.generate_code()])
def generate_code(self):
raise NotImplementedError # Override me!