aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-03-03 14:25:29 -0500
committerbors-servo <release+servo@mozilla.com>2014-03-03 14:25:29 -0500
commit411892484bec16b3d1212ae4141ec91bc3c3b27a (patch)
treee4056109a96525e670c7254a819b4643fbd42389
parent9743482dd18ca0bf7c07b96b7dcafa2fb9e80475 (diff)
parent3530f1e107088c67089bc7a63d790ab12046f798 (diff)
downloadservo-411892484bec16b3d1212ae4141ec91bc3c3b27a.tar.gz
servo-411892484bec16b3d1212ae4141ec91bc3c3b27a.zip
auto merge of #1797 : Ms2ger/servo/IDL-debris, r=jdm
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py21
-rw-r--r--src/components/script/dom/bindings/codegen/Configuration.py23
-rw-r--r--src/components/script/dom/bindings/codegen/parser/WebIDL.py37
3 files changed, 13 insertions, 68 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index bc5ac31feaf..7492723eca4 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -910,8 +910,7 @@ for (uint32_t i = 0; i < length; ++i) {
# This is an interface that we implement as a concrete class
# or an XPCOM interface.
- # Allow null pointers for nullable types and old-binding classes
- argIsPointer = type.nullable() or type.unroll().inner.isExternal()
+ argIsPointer = type.nullable()
# Sequences and callbacks have to hold a strong ref to the thing being
# passed down.
@@ -1539,8 +1538,7 @@ for (uint32_t i = 0; i < length; ++i) {
"let mut %s = %s.unwrap();\n" % (result, result))
else:
wrappingCode = ""
- if (not descriptor.interface.isExternal() and
- not descriptor.interface.isCallback()):
+ if not descriptor.interface.isCallback():
wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result
# Non-prefable bindings can only fail to wrap as a new-binding object
# if they already threw an exception. Same thing for
@@ -2398,9 +2396,6 @@ def UnionTypes(descriptors):
declarations = set()
unionStructs = dict()
for d in descriptors:
- if d.interface.isExternal():
- continue
-
for t in getTypes(d):
t = t.unroll()
if t.isUnion():
@@ -2430,9 +2425,6 @@ def UnionConversions(descriptors):
# need to unwrap them.
unionConversions = dict()
for d in descriptors:
- if d.interface.isExternal():
- continue
-
def addUnionTypes(type):
if type.isUnion():
type = type.unroll()
@@ -3592,8 +3584,7 @@ def getUnionAccessorSignatureType(type, descriptorProvider):
descriptor = descriptorProvider.getDescriptor(
type.unroll().inner.identifier.name)
typeName = CGGeneric(descriptor.nativeType)
- # Allow null pointers for nullable types and old-binding classes
- if type.nullable() or type.unroll().inner.isExternal():
+ if type.nullable():
typeName = CGWrapper(typeName, pre="Option<", post=">")
else:
typeName = CGWrapper(typeName, pre="&'a ")
@@ -4919,8 +4910,7 @@ class CGDescriptor(CGThing):
if descriptor.interface.hasInterfaceObject():
cgThings.append(CGDefineDOMInterfaceMethod(descriptor))
- if (not descriptor.interface.isExternal() and
- descriptor.interface.getExtendedAttribute("PrefControlled") is not None):
+ if (descriptor.interface.getExtendedAttribute("PrefControlled") is not None):
#cgThings.append(CGPrefEnabled(descriptor))
pass
@@ -5253,7 +5243,6 @@ class CGRegisterProtos(CGAbstractMethod):
def _registerProtos(self):
lines = [" assert!(codegen::%sBinding::DefineDOMInterface(js_info));" % (desc.name)
for desc in self.config.getDescriptors(hasInterfaceObject=True,
- isExternal=False,
register=True)]
return '\n'.join(lines) + '\n'
def definition_body(self):
@@ -5587,7 +5576,7 @@ class CGNativeMember(ClassMethod):
if type.isGeckoInterface() and not type.isCallbackInterface():
iface = type.unroll().inner
- argIsPointer = type.nullable() or iface.isExternal()
+ argIsPointer = type.nullable()
forceOwningType = iface.isCallback() or isMember
if argIsPointer:
if (optional or isMember) and forceOwningType:
diff --git a/src/components/script/dom/bindings/codegen/Configuration.py b/src/components/script/dom/bindings/codegen/Configuration.py
index 3e5b6b0222f..a11a7e66d35 100644
--- a/src/components/script/dom/bindings/codegen/Configuration.py
+++ b/src/components/script/dom/bindings/codegen/Configuration.py
@@ -57,17 +57,13 @@ class Configuration:
if key == 'webIDLFile':
getter = lambda x: x.interface.filename()
elif key == 'hasInterfaceObject':
- getter = lambda x: (not x.interface.isExternal() and
- x.interface.hasInterfaceObject())
+ getter = lambda x: x.interface.hasInterfaceObject()
elif key == 'hasInterfacePrototypeObject':
- getter = lambda x: (not x.interface.isExternal() and
- x.interface.hasInterfacePrototypeObject())
+ getter = lambda x: x.interface.hasInterfacePrototypeObject()
elif key == 'hasInterfaceOrInterfacePrototypeObject':
getter = lambda x: x.hasInterfaceOrInterfacePrototypeObject()
elif key == 'isCallback':
getter = lambda x: x.interface.isCallback()
- elif key == 'isExternal':
- getter = lambda x: x.interface.isExternal()
elif key == 'isJSImplemented':
getter = lambda x: x.interface.isJSImplemented()
else:
@@ -132,7 +128,7 @@ class Descriptor(DescriptorProvider):
# Read the desc, and fill in the relevant defaults.
ifaceName = self.interface.identifier.name
- if self.interface.isExternal() or self.interface.isCallback():
+ if self.interface.isCallback():
nativeTypeDefault = "nsIDOM" + ifaceName
else:
nativeTypeDefault = 'JS<%s>' % ifaceName
@@ -142,9 +138,9 @@ class Descriptor(DescriptorProvider):
self.needsAbstract = desc.get('needsAbstract', [])
self.createGlobal = desc.get('createGlobal', False)
- if self.interface.isCallback() or self.interface.isExternal():
+ if self.interface.isCallback():
if 'castable' in desc:
- raise TypeError("%s is external or callback but has a castable "
+ raise TypeError("%s is callback but has a castable "
"setting" % self.interface.identifier.name)
self.castable = False
else:
@@ -154,7 +150,7 @@ class Descriptor(DescriptorProvider):
# If we're concrete, we need to crawl our ancestor interfaces and mark
# them as having a concrete descendant.
- self.concrete = desc.get('concrete', not self.interface.isExternal())
+ self.concrete = desc.get('concrete', True)
if self.concrete:
self.proxy = False
operations = {
@@ -248,13 +244,6 @@ class Descriptor(DescriptorProvider):
len(self.prototypeChain))
def hasInterfaceOrInterfacePrototypeObject(self):
-
- # Forward-declared interfaces don't need either interface object or
- # interface prototype object as they're going to use QI (on main thread)
- # or be passed as a JSObject (on worker threads).
- if self.interface.isExternal():
- return False
-
return self.interface.hasInterfaceObject() or self.interface.hasInterfacePrototypeObject()
def getExtendedAttributes(self, member, getter=False, setter=False):
diff --git a/src/components/script/dom/bindings/codegen/parser/WebIDL.py b/src/components/script/dom/bindings/codegen/parser/WebIDL.py
index 046b8130dff..cc8bec9d9ca 100644
--- a/src/components/script/dom/bindings/codegen/parser/WebIDL.py
+++ b/src/components/script/dom/bindings/codegen/parser/WebIDL.py
@@ -450,41 +450,8 @@ class IDLIdentifierPlaceholder(IDLObjectWithIdentifier):
class IDLExternalInterface(IDLObjectWithIdentifier):
def __init__(self, location, parentScope, identifier):
- assert isinstance(identifier, IDLUnresolvedIdentifier)
- assert isinstance(parentScope, IDLScope)
- self.parent = None
- IDLObjectWithIdentifier.__init__(self, location, parentScope, identifier)
- IDLObjectWithIdentifier.resolve(self, parentScope)
-
- def finish(self, scope):
- pass
-
- def validate(self):
- pass
-
- def isExternal(self):
- return True
-
- def isInterface(self):
- return True
-
- def isConsequential(self):
- return False
-
- def addExtendedAttributes(self, attrs):
- assert len(attrs) == 0
-
- def resolve(self, parentScope):
- pass
-
- def getJSImplementation(self):
- return None
-
- def isJSImplemented(self):
- return False
-
- def _getDependentObjects(self):
- return set()
+ raise WebIDLError("Servo does not support external interfaces.",
+ [self.location])
class IDLInterface(IDLObjectWithScope):
def __init__(self, location, parentScope, name, parent, members,