diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-11-27 14:37:04 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-11-30 23:23:42 +0100 |
commit | ddfb8805dc1c2df97f0596cf063935b4f3c5b90b (patch) | |
tree | 14454c36600563df3b624fc30c86571daa5e14f2 /components/script/dom/bindings/codegen/CodegenRust.py | |
parent | 973f77c00698938c1333c0df7da30993075264d1 (diff) | |
download | servo-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.py | 9 |
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! |