From ddfb8805dc1c2df97f0596cf063935b4f3c5b90b Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 27 Nov 2016 14:37:04 +0100 Subject: Make WebIDL static methods take a more specific global if possible --- components/script/dom/bindings/codegen/CodegenRust.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'components/script/dom/bindings/codegen/CodegenRust.py') 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::(global).unwrap();\n" % list(self.exposureSet)[0] + return CGList([CGGeneric(preamble), self.generate_code()]) def generate_code(self): raise NotImplementedError # Override me! -- cgit v1.2.3