зеркало из https://github.com/mozilla/gecko-dev.git
Bug 764456 part 1. Flag consequential interfaces in the WebIDL data model. r=khuey
This commit is contained in:
Родитель
4214241dca
Коммит
73dde405dc
|
@ -1564,11 +1564,11 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
elif descriptor.workers:
|
elif descriptor.workers:
|
||||||
templateBody += "${declName} = &${val}.toObject();"
|
templateBody += "${declName} = &${val}.toObject();"
|
||||||
else:
|
else:
|
||||||
# External interface. We always have a holder for these,
|
# Either external, or new-binding non-castable. We always have a
|
||||||
# because we don't actually know whether we have to addref
|
# holder for these, because we don't actually know whether we have
|
||||||
# when unwrapping or not. So we just pass an
|
# to addref when unwrapping or not. So we just pass an
|
||||||
# getter_AddRefs(nsRefPtr) to XPConnect and if we'll need
|
# getter_AddRefs(nsRefPtr) to XPConnect and if we'll need a release
|
||||||
# a release it'll put a non-null pointer in there.
|
# it'll put a non-null pointer in there.
|
||||||
if forceOwningType:
|
if forceOwningType:
|
||||||
# Don't return a holderType in this case; our declName
|
# Don't return a holderType in this case; our declName
|
||||||
# will just own stuff.
|
# will just own stuff.
|
||||||
|
|
|
@ -351,6 +351,9 @@ class IDLExternalInterface(IDLObjectWithIdentifier):
|
||||||
def isInterface(self):
|
def isInterface(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def isConsequential(self):
|
||||||
|
return False
|
||||||
|
|
||||||
def addExtendedAttributes(self, attrs):
|
def addExtendedAttributes(self, attrs):
|
||||||
assert len(attrs) == 0
|
assert len(attrs) == 0
|
||||||
|
|
||||||
|
@ -368,6 +371,7 @@ class IDLInterface(IDLObjectWithScope):
|
||||||
self._finished = False
|
self._finished = False
|
||||||
self.members = list(members) # clone the list
|
self.members = list(members) # clone the list
|
||||||
self.implementedInterfaces = set()
|
self.implementedInterfaces = set()
|
||||||
|
self._consequential = False
|
||||||
|
|
||||||
IDLObjectWithScope.__init__(self, location, parentScope, name)
|
IDLObjectWithScope.__init__(self, location, parentScope, name)
|
||||||
|
|
||||||
|
@ -459,6 +463,8 @@ class IDLInterface(IDLObjectWithScope):
|
||||||
for iface in sorted(self.getConsequentialInterfaces(),
|
for iface in sorted(self.getConsequentialInterfaces(),
|
||||||
cmp=cmp,
|
cmp=cmp,
|
||||||
key=lambda x: x.identifier.name):
|
key=lambda x: x.identifier.name):
|
||||||
|
# Flag the interface as being someone's consequential interface
|
||||||
|
iface.setConsequential()
|
||||||
additionalMembers = iface.originalMembers;
|
additionalMembers = iface.originalMembers;
|
||||||
for additionalMember in additionalMembers:
|
for additionalMember in additionalMembers:
|
||||||
for member in self.members:
|
for member in self.members:
|
||||||
|
@ -507,6 +513,12 @@ class IDLInterface(IDLObjectWithScope):
|
||||||
def isExternal(self):
|
def isExternal(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def setConsequential(self):
|
||||||
|
self._consequential = True
|
||||||
|
|
||||||
|
def isConsequential(self):
|
||||||
|
return self._consequential
|
||||||
|
|
||||||
def setCallback(self, value):
|
def setCallback(self, value):
|
||||||
self._callback = value
|
self._callback = value
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче