aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen/Configuration.py
diff options
context:
space:
mode:
authorChris Manchester <cmanchester@mozilla.com>2015-02-25 17:06:29 -0800
committerChris Manchester <cmanchester@mozilla.com>2015-02-27 18:28:01 -0800
commitc81f1cc54134a3d542e3da08f00750955c986011 (patch)
treecab716cb4fe202e444183e07d30e93e46ff7c8ca /components/script/dom/bindings/codegen/Configuration.py
parent26567ef2e62597b359c179f8665213002e05da96 (diff)
downloadservo-c81f1cc54134a3d542e3da08f00750955c986011.tar.gz
servo-c81f1cc54134a3d542e3da08f00750955c986011.zip
Add support for BinaryName attribute to servo's codegen (fixes #4435) r=jdm
Diffstat (limited to 'components/script/dom/bindings/codegen/Configuration.py')
-rw-r--r--components/script/dom/bindings/codegen/Configuration.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py
index 8944070f09c..e6712357d35 100644
--- a/components/script/dom/bindings/codegen/Configuration.py
+++ b/components/script/dom/bindings/codegen/Configuration.py
@@ -251,6 +251,20 @@ class Descriptor(DescriptorProvider):
else:
add('all', [config], attribute)
+ self._binaryNames = desc.get('binaryNames', {})
+ self._binaryNames.setdefault('__legacycaller', 'LegacyCall')
+ self._binaryNames.setdefault('__stringifier', 'Stringify')
+
+ for member in self.interface.members:
+ if not member.isAttr() and not member.isMethod():
+ continue
+ binaryName = member.getExtendedAttribute("BinaryName")
+ if binaryName:
+ assert isinstance(binaryName, list)
+ assert len(binaryName) == 1
+ self._binaryNames.setdefault(member.identifier.name,
+ binaryName[0])
+
# Build the prototype chain.
self.prototypeChain = []
parent = interface
@@ -260,6 +274,9 @@ class Descriptor(DescriptorProvider):
config.maxProtoChainLength = max(config.maxProtoChainLength,
len(self.prototypeChain))
+ def binaryNameFor(self, name):
+ return self._binaryNames.get(name, name)
+
def getExtendedAttributes(self, member, getter=False, setter=False):
def maybeAppendInfallibleToAttrs(attrs, throws):
if throws is None: