From 0713257adde476cc0a0f74365acf52f19fcd9440 Mon Sep 17 00:00:00 2001 From: Connor Brewster Date: Mon, 12 Jun 2017 21:50:53 -0600 Subject: Generate GetConstructorObject for all interfaces --- components/script/dom/bindings/codegen/Configuration.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 0fe9bf6c004..df6c0a36c76 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -398,7 +398,11 @@ class Descriptor(DescriptorProvider): assert self.interface.hasInterfaceObject() if self.interface.getExtendedAttribute("Inline"): return False - return self.interface.isCallback() or self.interface.isNamespace() or self.hasDescendants() + return (self.interface.isCallback() or self.interface.isNamespace() or + self.hasDescendants() or self.interface.getExtendedAttribute("HTMLConstructor")) + + def shouldCacheConstructor(self): + return self.hasDescendants() or self.interface.getExtendedAttribute("HTMLConstructor") def isExposedConditionally(self): return self.interface.isExposedConditionally() -- cgit v1.2.3 From f87c2a8d7616112ca924e30292db2d244cf87eec Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 26 Sep 2017 01:53:40 +0200 Subject: Rename Root to DomRoot In a later PR, DomRoot will become a type alias of Root>, where Root will be able to handle all the things that need to be rooted that have a stable traceable address that doesn't move for the whole lifetime of the root. Stay tuned. --- components/script/dom/bindings/codegen/Configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index df6c0a36c76..56141e52b09 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -212,7 +212,7 @@ class Descriptor(DescriptorProvider): self.argumentType = "???" self.nativeType = ty else: - self.returnType = "Root<%s>" % typeName + self.returnType = "DomRoot<%s>" % typeName self.argumentType = "&%s" % typeName self.nativeType = "*const %s" % typeName if self.interface.isIteratorInterface(): -- cgit v1.2.3 From ce8486ab9b3af974a7c738a08a9da460360ce117 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Mon, 6 Nov 2017 22:52:40 -0800 Subject: Import sequence inner types if it appears in dictionary members --- components/script/dom/bindings/codegen/Configuration.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 56141e52b09..0ab27151bb6 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -4,7 +4,7 @@ import os -from WebIDL import IDLExternalInterface, IDLWrapperType, WebIDLError +from WebIDL import IDLExternalInterface, IDLSequenceType, IDLWrapperType, WebIDLError class Configuration: @@ -457,7 +457,7 @@ def getTypesFromDictionary(dictionary): types = [] curDict = dictionary while curDict: - types.extend([m.type for m in curDict.members]) + types.extend([getUnwrappedType(m.type) for m in curDict.members]) curDict = curDict.parent return types @@ -473,6 +473,12 @@ def getTypesFromCallback(callback): return types +def getUnwrappedType(type): + while isinstance(type, IDLSequenceType): + type = type.inner + return type + + def iteratorNativeType(descriptor, infer=False): assert descriptor.interface.isIterable() iterableDecl = descriptor.interface.maplikeOrSetlikeOrIterable -- cgit v1.2.3 From 938f1362e7f1b1f8a121eacc36e24c9ac6236e13 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 3 Apr 2018 14:06:07 +0200 Subject: Update the WebIDL parser --- components/script/dom/bindings/codegen/Configuration.py | 2 -- 1 file changed, 2 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 0ab27151bb6..4f56c4b55c3 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -279,8 +279,6 @@ class Descriptor(DescriptorProvider): addIndexedOrNamedOperation('Getter', m) if m.isSetter(): addIndexedOrNamedOperation('Setter', m) - if m.isCreator(): - addIndexedOrNamedOperation('Creator', m) if m.isDeleter(): addIndexedOrNamedOperation('Deleter', m) -- cgit v1.2.3 From acabd50f037837c2dc75233988690e0184cd511c Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 1 Nov 2018 14:38:55 +0100 Subject: Use 2018-style paths in generated DOM bindings --- components/script/dom/bindings/codegen/Configuration.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 4f56c4b55c3..92e0705d32b 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -204,9 +204,9 @@ class Descriptor(DescriptorProvider): self.returnType = 'Rc<%s>' % typeName self.argumentType = '&%s' % typeName self.nativeType = typeName - pathDefault = 'dom::types::%s' % typeName + pathDefault = 'crate::dom::types::%s' % typeName elif self.interface.isCallback(): - ty = 'dom::bindings::codegen::Bindings::%sBinding::%s' % (ifaceName, ifaceName) + ty = 'crate::dom::bindings::codegen::Bindings::%sBinding::%s' % (ifaceName, ifaceName) pathDefault = ty self.returnType = "Rc<%s>" % ty self.argumentType = "???" @@ -216,14 +216,14 @@ class Descriptor(DescriptorProvider): self.argumentType = "&%s" % typeName self.nativeType = "*const %s" % typeName if self.interface.isIteratorInterface(): - pathDefault = 'dom::bindings::iterable::IterableIterator' + pathDefault = 'crate::dom::bindings::iterable::IterableIterator' else: - pathDefault = 'dom::types::%s' % MakeNativeName(typeName) + pathDefault = 'crate::dom::types::%s' % MakeNativeName(typeName) self.concreteType = typeName self.register = desc.get('register', True) self.path = desc.get('path', pathDefault) - self.bindingPath = 'dom::bindings::codegen::Bindings::%s' % ('::'.join([ifaceName + 'Binding'] * 2)) + self.bindingPath = 'crate::dom::bindings::codegen::Bindings::%s' % ('::'.join([ifaceName + 'Binding'] * 2)) self.outerObjectHook = desc.get('outerObjectHook', 'None') self.proxy = False self.weakReferenceable = desc.get('weakReferenceable', False) @@ -422,7 +422,7 @@ def MakeNativeName(name): def getModuleFromObject(object): - return ('dom::bindings::codegen::Bindings::' + + return ('crate::dom::bindings::codegen::Bindings::' + os.path.basename(object.location.filename()).split('.webidl')[0] + 'Binding') -- cgit v1.2.3 From a1a14459c141afc6ac6771b8a6c9ca374537edf2 Mon Sep 17 00:00:00 2001 From: Jan Andre Ikenmeyer Date: Mon, 19 Nov 2018 14:47:12 +0100 Subject: Update MPL license to https (part 3) --- components/script/dom/bindings/codegen/Configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 92e0705d32b..47a65d37d4b 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -1,6 +1,6 @@ # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# file, You can obtain one at https://mozilla.org/MPL/2.0/. import os -- cgit v1.2.3 From 7dbff6efb7ce93ecfb04883cd1dffa24a03ed0ad Mon Sep 17 00:00:00 2001 From: Bastien Orivel Date: Fri, 24 May 2019 22:24:41 +0200 Subject: Add an inCompartments config for bindings --- components/script/dom/bindings/codegen/Configuration.py | 1 + 1 file changed, 1 insertion(+) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 47a65d37d4b..81f61a648f1 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -223,6 +223,7 @@ class Descriptor(DescriptorProvider): self.concreteType = typeName self.register = desc.get('register', True) self.path = desc.get('path', pathDefault) + self.inCompartmentMethods = [name for name in desc.get('inCompartments', [])] self.bindingPath = 'crate::dom::bindings::codegen::Bindings::%s' % ('::'.join([ifaceName + 'Binding'] * 2)) self.outerObjectHook = desc.get('outerObjectHook', 'None') self.proxy = False -- cgit v1.2.3 From 16b4e3446bc466c87327fac3402736d3636a5f73 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Wed, 24 Jul 2019 17:11:44 +0900 Subject: Support default toJSON in WebIDL --- components/script/dom/bindings/codegen/Configuration.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 81f61a648f1..bde6e71bcfb 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -250,6 +250,8 @@ class Descriptor(DescriptorProvider): 'Stringifier': None, } + self.hasDefaultToJSON = False + def addOperation(operation, m): if not self.operations[operation]: self.operations[operation] = m @@ -259,6 +261,8 @@ class Descriptor(DescriptorProvider): for m in self.interface.members: if m.isMethod() and m.isStringifier(): addOperation('Stringifier', m) + if m.isMethod() and m.isDefaultToJSON(): + self.hasDefaultToJSON = True if self.concrete: iface = self.interface -- cgit v1.2.3 From 2660f359254e7543b7c91d14728b44ac01e438e5 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Wed, 2 Oct 2019 18:21:34 +0900 Subject: Remove [PrimaryGlobal] --- components/script/dom/bindings/codegen/Configuration.py | 5 ----- 1 file changed, 5 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index bde6e71bcfb..1d50c3ed4f7 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -38,11 +38,6 @@ class Configuration: iface = thing self.interfaces[iface.identifier.name] = iface if iface.identifier.name not in config: - # Completely skip consequential interfaces with no descriptor - # if they have no interface object because chances are we - # don't need to do anything interesting with them. - if iface.isConsequential() and not iface.hasInterfaceObject(): - continue entry = {} else: entry = config[iface.identifier.name] -- cgit v1.2.3 From e271edad927c6cfb304e9df8719d7ed5fe0309f9 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sat, 19 Oct 2019 20:26:20 +0900 Subject: Convert [HTMLConstructor] as constructor extension --- components/script/dom/bindings/codegen/Configuration.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 1d50c3ed4f7..71c988e5378 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -392,15 +392,19 @@ class Descriptor(DescriptorProvider): return (self.interface.getUserData("hasConcreteDescendant", False) or self.interface.getUserData("hasProxyDescendant", False)) + def hasHTMLConstructor(self): + ctor = self.interface.ctor() + return ctor and ctor.isHTMLConstructor() + def shouldHaveGetConstructorObjectMethod(self): assert self.interface.hasInterfaceObject() if self.interface.getExtendedAttribute("Inline"): return False return (self.interface.isCallback() or self.interface.isNamespace() or - self.hasDescendants() or self.interface.getExtendedAttribute("HTMLConstructor")) + self.hasDescendants() or self.hasHTMLConstructor()) def shouldCacheConstructor(self): - return self.hasDescendants() or self.interface.getExtendedAttribute("HTMLConstructor") + return self.hasDescendants() or self.hasHTMLConstructor() def isExposedConditionally(self): return self.interface.isExposedConditionally() -- cgit v1.2.3 From 7b5fabe8552b9245a70961db9ec592a55102bb0e Mon Sep 17 00:00:00 2001 From: marmeladema Date: Tue, 10 Dec 2019 23:56:12 +0000 Subject: Fix tidiness errors for Python3 compatibility across whole repo --- components/script/dom/bindings/codegen/Configuration.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 71c988e5378..84d8bd974aa 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at https://mozilla.org/MPL/2.0/. +import functools import os from WebIDL import IDLExternalInterface, IDLSequenceType, IDLWrapperType, WebIDLError @@ -15,7 +16,7 @@ class Configuration: def __init__(self, filename, parseData): # Read the configuration file. glbl = {} - execfile(filename, glbl) + exec(compile(open(filename).read(), filename, 'exec'), glbl) config = glbl['DOMInterfaces'] # Build descriptors for all the interfaces we have in the parse data. @@ -62,7 +63,8 @@ class Configuration: c.isCallback() and not c.isInterface()] # Keep the descriptor list sorted for determinism. - self.descriptors.sort(lambda x, y: cmp(x.name, y.name)) + cmp = lambda x, y: (x > y) - (x < y) + self.descriptors.sort(key=functools.cmp_to_key(lambda x, y: cmp(x.name, y.name))) def getInterface(self, ifname): return self.interfaces[ifname] -- cgit v1.2.3 From 5a3e1b8e6903c825e50597a218532d417f1dfef9 Mon Sep 17 00:00:00 2001 From: Kunal Mohan Date: Fri, 24 Jan 2020 13:29:09 +0530 Subject: rename compartment to realm --- components/script/dom/bindings/codegen/Configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 84d8bd974aa..b3e1e0c8289 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -220,7 +220,7 @@ class Descriptor(DescriptorProvider): self.concreteType = typeName self.register = desc.get('register', True) self.path = desc.get('path', pathDefault) - self.inCompartmentMethods = [name for name in desc.get('inCompartments', [])] + self.inRealmMethods = [name for name in desc.get('inRealms', [])] self.bindingPath = 'crate::dom::bindings::codegen::Bindings::%s' % ('::'.join([ifaceName + 'Binding'] * 2)) self.outerObjectHook = desc.get('outerObjectHook', 'None') self.proxy = False -- cgit v1.2.3 From d01648d637a350af0cb81470f956cc5edd18a9a4 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Sun, 21 Jun 2020 03:34:22 +0200 Subject: Fix remaining flake8 warnings --- .../script/dom/bindings/codegen/Configuration.py | 77 ++++++++++++---------- 1 file changed, 44 insertions(+), 33 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index b3e1e0c8289..98fce57afe4 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -63,7 +63,8 @@ class Configuration: c.isCallback() and not c.isInterface()] # Keep the descriptor list sorted for determinism. - cmp = lambda x, y: (x > y) - (x < y) + def cmp(x, y): + return (x > y) - (x < y) self.descriptors.sort(key=functools.cmp_to_key(lambda x, y: cmp(x.name, y.name))) def getInterface(self, ifname): @@ -74,25 +75,35 @@ class Configuration: curr = self.descriptors for key, val in filters.iteritems(): if key == 'webIDLFile': - getter = lambda x: x.interface.filename() + def getter(x): + return x.interface.filename() elif key == 'hasInterfaceObject': - getter = lambda x: x.interface.hasInterfaceObject() + def getter(x): + return x.interface.hasInterfaceObject() elif key == 'isCallback': - getter = lambda x: x.interface.isCallback() + def getter(x): + return x.interface.isCallback() elif key == 'isNamespace': - getter = lambda x: x.interface.isNamespace() + def getter(x): + return x.interface.isNamespace() elif key == 'isJSImplemented': - getter = lambda x: x.interface.isJSImplemented() + def getter(x): + return x.interface.isJSImplemented() elif key == 'isGlobal': - getter = lambda x: x.isGlobal() + def getter(x): + return x.isGlobal() elif key == 'isInline': - getter = lambda x: x.interface.getExtendedAttribute('Inline') is not None + def getter(x): + return x.interface.getExtendedAttribute('Inline') is not None elif key == 'isExposedConditionally': - getter = lambda x: x.interface.isExposedConditionally() + def getter(x): + return x.interface.isExposedConditionally() elif key == 'isIteratorInterface': - getter = lambda x: x.interface.isIteratorInterface() + def getter(x): + return x.interface.isIteratorInterface() else: - getter = lambda x: getattr(x, key) + def getter(x): + return getattr(x, key) curr = filter(lambda x: getter(x) == val, curr) return curr @@ -125,8 +136,8 @@ class Configuration: # We should have exactly one result. if len(descriptors) != 1: - raise NoSuchDescriptorError("For " + interfaceName + " found " + - str(len(descriptors)) + " matches") + raise NoSuchDescriptorError("For " + interfaceName + " found " + + str(len(descriptors)) + " matches") return descriptors[0] def getDescriptorProvider(self): @@ -157,10 +168,10 @@ class DescriptorProvider: def MemberIsUnforgeable(member, descriptor): - return ((member.isAttr() or member.isMethod()) and - not member.isStatic() and - (member.isUnforgeable() or - bool(descriptor.interface.getExtendedAttribute("Unforgeable")))) + return ((member.isAttr() or member.isMethod()) + and not member.isStatic() + and (member.isUnforgeable() + or bool(descriptor.interface.getExtendedAttribute("Unforgeable")))) class Descriptor(DescriptorProvider): @@ -228,14 +239,14 @@ class Descriptor(DescriptorProvider): # If we're concrete, we need to crawl our ancestor interfaces and mark # them as having a concrete descendant. - self.concrete = (not self.interface.isCallback() and - not self.interface.isNamespace() and - not self.interface.getExtendedAttribute("Abstract") and - not self.interface.getExtendedAttribute("Inline") and - not spiderMonkeyInterface) - self.hasUnforgeableMembers = (self.concrete and - any(MemberIsUnforgeable(m, self) for m in - self.interface.members)) + self.concrete = (not self.interface.isCallback() + and not self.interface.isNamespace() + and not self.interface.getExtendedAttribute("Abstract") + and not self.interface.getExtendedAttribute("Inline") + and not spiderMonkeyInterface) + self.hasUnforgeableMembers = (self.concrete + and any(MemberIsUnforgeable(m, self) for m in + self.interface.members)) self.operations = { 'IndexedGetter': None, @@ -391,8 +402,8 @@ class Descriptor(DescriptorProvider): return None def hasDescendants(self): - return (self.interface.getUserData("hasConcreteDescendant", False) or - self.interface.getUserData("hasProxyDescendant", False)) + return (self.interface.getUserData("hasConcreteDescendant", False) + or self.interface.getUserData("hasProxyDescendant", False)) def hasHTMLConstructor(self): ctor = self.interface.ctor() @@ -402,8 +413,8 @@ class Descriptor(DescriptorProvider): assert self.interface.hasInterfaceObject() if self.interface.getExtendedAttribute("Inline"): return False - return (self.interface.isCallback() or self.interface.isNamespace() or - self.hasDescendants() or self.hasHTMLConstructor()) + return (self.interface.isCallback() or self.interface.isNamespace() + or self.hasDescendants() or self.hasHTMLConstructor()) def shouldCacheConstructor(self): return self.hasDescendants() or self.hasHTMLConstructor() @@ -416,8 +427,8 @@ class Descriptor(DescriptorProvider): Returns true if this is the primary interface for a global object of some sort. """ - return bool(self.interface.getExtendedAttribute("Global") or - self.interface.getExtendedAttribute("PrimaryGlobal")) + return bool(self.interface.getExtendedAttribute("Global") + or self.interface.getExtendedAttribute("PrimaryGlobal")) # Some utility methods @@ -428,8 +439,8 @@ def MakeNativeName(name): 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::' + + os.path.basename(object.location.filename()).split('.webidl')[0] + 'Binding') def getTypesFromDescriptor(descriptor): -- cgit v1.2.3 From 63528f6fdf192542cd811a2a3ef5f0cb2fecbc6b Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Thu, 9 Jul 2020 20:03:03 -0400 Subject: dom: Generate iterator symbol for interfaces with indexed getters. --- components/script/dom/bindings/codegen/Configuration.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 98fce57afe4..4f47a737706 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -401,6 +401,9 @@ class Descriptor(DescriptorProvider): parent = parent.parent return None + def supportsIndexedProperties(self): + return self.operations['IndexedGetter'] is not None + def hasDescendants(self): return (self.interface.getUserData("hasConcreteDescendant", False) or self.interface.getUserData("hasProxyDescendant", False)) -- cgit v1.2.3 From a627dde0d01e35a1cbdb62ca19ee0349757c34b0 Mon Sep 17 00:00:00 2001 From: Vincent Ricard Date: Mon, 28 Dec 2020 22:31:49 +0100 Subject: Port some code to Python3 --- components/script/dom/bindings/codegen/Configuration.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'components/script/dom/bindings/codegen/Configuration.py') diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 4f47a737706..b92f68af3b9 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -73,7 +73,7 @@ class Configuration: def getDescriptors(self, **filters): """Gets the descriptors that match the given filters.""" curr = self.descriptors - for key, val in filters.iteritems(): + for key, val in filters.items(): if key == 'webIDLFile': def getter(x): return x.interface.filename() @@ -104,14 +104,14 @@ class Configuration: else: def getter(x): return getattr(x, key) - curr = filter(lambda x: getter(x) == val, curr) + curr = [x for x in curr if getter(x) == val] return curr def getEnums(self, webIDLFile): - return filter(lambda e: e.filename() == webIDLFile, self.enums) + return [e for e in self.enums if e.filename() == webIDLFile] def getTypedefs(self, webIDLFile): - return filter(lambda e: e.filename() == webIDLFile, self.typedefs) + return [e for e in self.typedefs if e.filename() == webIDLFile] @staticmethod def _filterForFile(items, webIDLFile=""): @@ -119,7 +119,7 @@ class Configuration: if not webIDLFile: return items - return filter(lambda x: x.filename() == webIDLFile, items) + return [x for x in items if x.filename() == webIDLFile] def getDictionaries(self, webIDLFile=""): return self._filterForFile(self.dictionaries, webIDLFile=webIDLFile) @@ -327,7 +327,7 @@ class Descriptor(DescriptorProvider): if config == '*': iface = self.interface while iface: - add('all', map(lambda m: m.name, iface.members), attribute) + add('all', [m.name for m in iface.members], attribute) iface = iface.parent else: add('all', [config], attribute) -- cgit v1.2.3