diff options
Diffstat (limited to 'components/script/dom/bindings/codegen/Configuration.py')
-rw-r--r-- | components/script/dom/bindings/codegen/Configuration.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index 4f59ff09f5b..d0af7e37929 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -139,6 +139,13 @@ class DescriptorProvider: return self.config.getDescriptor(interfaceName) +def MemberIsUnforgeable(member, descriptor): + return ((member.isAttr() or member.isMethod()) and + not member.isStatic() and + (member.isUnforgeable() or + bool(descriptor.interface.getExtendedAttribute("Unforgeable")))) + + class Descriptor(DescriptorProvider): """ Represents a single descriptor for an interface. See Bindings.conf. @@ -174,6 +181,9 @@ class Descriptor(DescriptorProvider): # them as having a concrete descendant. self.concrete = (not self.interface.isCallback() and desc.get('concrete', True)) + self.hasUnforgeableMembers = (self.concrete and + any(MemberIsUnforgeable(m, self) for m in + self.interface.members)) self.operations = { 'IndexedGetter': None, |