diff options
Diffstat (limited to 'components/script/dom/bindings/codegen')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 11 | ||||
-rw-r--r-- | components/script/dom/bindings/codegen/Configuration.py | 18 |
2 files changed, 25 insertions, 4 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index ad53b2268b4..eff03384447 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -76,6 +76,13 @@ def toBindingModuleFile(arg): return re.sub("((_workers)?$)", "Binding\\1", MakeNativeName(arg)) +def toBindingModuleFileFromDescriptor(desc): + if desc.maybeGetSuperModule() is not None: + return toBindingModuleFile(desc.maybeGetSuperModule()) + else: + return toBindingModuleFile(desc.name) + + def stripTrailingWhitespace(text): tail = '\n' if text.endswith('\n') else '' lines = text.splitlines() @@ -8068,8 +8075,8 @@ class GlobalGenRoots(): def InterfaceObjectMapData(config): pairs = [] for d in config.getDescriptors(hasInterfaceObject=True, isInline=False): + binding_mod = toBindingModuleFileFromDescriptor(d) binding_ns = toBindingNamespace(d.name) - binding_mod = toBindingModuleFile(d.name) pairs.append((d.name, binding_mod, binding_ns)) for alias in d.interface.legacyWindowAliases: pairs.append((alias, binding_mod, binding_ns)) @@ -8142,7 +8149,7 @@ class GlobalGenRoots(): return getModuleFromObject(d).split('::')[-1] descriptors = config.getDescriptors(register=True, isIteratorInterface=False) - descriptors = (set(toBindingModuleFile(d.name) for d in descriptors) + descriptors = (set(toBindingModuleFile(d.name) for d in descriptors if d.maybeGetSuperModule() is None) | set(leafModule(d) for d in config.callbacks) | set(leafModule(d) for d in config.getDictionaries())) curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)]) diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index f15b003ac58..0b113c73bd4 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -364,6 +364,17 @@ class Descriptor(DescriptorProvider): config.maxProtoChainLength = max(config.maxProtoChainLength, len(self.prototypeChain)) + def maybeGetSuperModule(self): + """ + Returns name of super module if self is part of it + """ + filename = getIdlFileName(self.interface) + # if interface name is not same as webidl file + # webidl is super module for interface + if filename.lower() != self.interface.identifier.name.lower() and not self.interface.isIteratorInterface(): + return filename + return None + def binaryNameFor(self, name): return self._binaryNames.get(name, name) @@ -459,9 +470,12 @@ def MakeNativeName(name): return name[0].upper() + name[1:] +def getIdlFileName(object): + return os.path.basename(object.location.filename()).split('.webidl')[0] + + def getModuleFromObject(object): - return ('crate::dom::bindings::codegen::Bindings::' - + os.path.basename(object.location.filename()).split('.webidl')[0] + 'Binding') + return ('crate::dom::bindings::codegen::Bindings::' + getIdlFileName(object) + 'Binding') def getTypesFromDescriptor(descriptor): |