aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py80
-rw-r--r--src/components/script/dom/bindings/codegen/Configuration.py14
2 files changed, 11 insertions, 83 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index ca04b873aab..6831a0527bf 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -960,11 +960,6 @@ for (uint32_t i = 0; i < length; ++i) {
templateBody = ""
if descriptor.castable:
- if descriptor.prefable:
- raise TypeError("We don't support prefable castable object "
- "arguments (like %s), because we don't know "
- "how to handle them being preffed off" %
- descriptor.interface.identifier.name)
if descriptor.interface.isConsequential():
raise TypeError("Consequential interface %s being used as an "
"argument but flagged as castable" %
@@ -1574,21 +1569,11 @@ for (uint32_t i = 0; i < length; ++i) {
if (not descriptor.interface.isExternal() and
not descriptor.interface.isCallback()):
wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result
- # We don't support prefable stuff in workers.
- assert(not descriptor.prefable or not descriptor.workers)
- if not descriptor.prefable:
- # Non-prefable bindings can only fail to wrap as a new-binding object
- # if they already threw an exception. Same thing for
- # non-prefable bindings.
- failed = ("assert!(unsafe { JS_IsExceptionPending(cx) != 0 });\n" +
- "%s" % exceptionCode)
- else:
- if descriptor.notflattened:
- raise TypeError("%s is prefable but not flattened; "
- "fallback won't work correctly" %
- descriptor.interface.identifier.name)
- # Try old-style wrapping for bindings which might be preffed off.
- failed = wrapAndSetPtr("HandleNewBindingWrappingFailure(cx, ${obj}, %s, ${jsvalPtr})" % result)
+ # Non-prefable bindings can only fail to wrap as a new-binding object
+ # if they already threw an exception. Same thing for
+ # non-prefable bindings.
+ failed = ("assert!(unsafe { JS_IsExceptionPending(cx) != 0 });\n" +
+ "%s" % exceptionCode)
wrappingCode += wrapAndSetPtr(wrap, failed)
else:
wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result
@@ -2238,8 +2223,7 @@ def DOMClass(descriptor):
return """DOMClass {
interface_chain: [ %s ] ,
unused: %s, native_hooks: %s
-}""" % (prototypeChainString, "false", #toStringBool(descriptor.nativeIsISupports),
- nativeHooks)
+}""" % (prototypeChainString, "false", nativeHooks)
class CGDOMJSClass(CGThing):
"""
@@ -2252,7 +2236,7 @@ class CGDOMJSClass(CGThing):
#return "extern DOMJSClass Class;\n"
return ""
def define(self):
- traceHook = "Some(%s)" % TRACE_HOOK_NAME if self.descriptor.customTrace else 'None'
+ traceHook = "Some(%s)" % TRACE_HOOK_NAME
if self.descriptor.createGlobal:
flags = "JSCLASS_IS_GLOBAL"
slots = "JSCLASS_GLOBAL_SLOT_COUNT + 1"
@@ -2291,7 +2275,6 @@ static Class: DOMJSClass = DOMJSClass {
""" % (len(self.descriptor.interface.identifier.name) + 1,
str_to_const_array(self.descriptor.interface.identifier.name),
flags, slots, slots,
- #ADDPROPERTY_HOOK_NAME if self.descriptor.concrete and not self.descriptor.workers and self.descriptor.wrapperCache else 'crust::JS_PropertyStub',
'crust::JS_PropertyStub',
FINALIZE_HOOK_NAME, traceHook,
CGIndenter(CGGeneric(DOMClass(self.descriptor))).define())
@@ -2702,27 +2685,6 @@ class CGWrapMethod(CGAbstractMethod):
def definition_body(self):
return "return Wrap_(aCx, aScope, aObject);"
-class CGWrapNonWrapperCacheMethod(CGAbstractMethod):
- def __init__(self, descriptor):
- # XXX can we wrap if we don't have an interface prototype object?
- assert descriptor.interface.hasInterfacePrototypeObject()
- args = [Argument('JSContext*', 'aCx'), Argument('JSObject*', 'aScope'),
- Argument('@' + descriptor.nativeType, 'aObject')]
- CGAbstractMethod.__init__(self, descriptor, 'Wrap', 'JSObject*', args)
-
- def definition_body(self):
- return """
- JSObject* global = JS_GetGlobalForObject(aCx, aScope);
- JSObject* proto = GetProtoObject(aCx, global, global);
- if (!proto) {
- return NULL;
- }
-
-%s
- NS_ADDREF(aObject);
-
- return obj;""" % CreateBindingJSObject(self.descriptor, "global")
-
class CGAbstractExternMethod(CGAbstractMethod):
"""
Abstract base class for codegen of implementation-only (no
@@ -3030,7 +2992,7 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod):
CreateProxyHandler(ptr::to_unsafe_ptr(&traps), ptr::to_unsafe_ptr(&Class) as *libc::c_void));
""" % (FINALIZE_HOOK_NAME,
- ('Some(%s)' % TRACE_HOOK_NAME) if self.descriptor.customTrace else 'None',
+ ('Some(%s)' % TRACE_HOOK_NAME),
self.descriptor.name)
else:
body += """ (*page).js_info.get_ref().dom_static.attribute_ids.insert(PrototypeList::id::%s as uint,
@@ -4883,16 +4845,10 @@ class CGAbstractClassHook(CGAbstractExternMethod):
assert(False)
def finalizeHook(descriptor, hookName, context):
- if descriptor.customFinalize:
- return """if (this) {
- this->%s(%s);
-}""" % (hookName, context)
- #clearWrapper = "ClearWrapper(self, self);\n" if descriptor.wrapperCache else ""
if descriptor.workers:
#release = "self->Release();"
pass
else:
- assert descriptor.nativeIsISupports
release = """let val = JS_GetReservedSlot(obj, dom_object_slot(obj));
let _: %s %s = cast::transmute(RUST_JSVAL_TO_PRIVATE(val));
debug!("%s finalize: {:p}", this);
@@ -5066,17 +5022,8 @@ class CGDescriptor(CGThing):
# lenientThis=True))
if descriptor.concrete:
- if not descriptor.workers and descriptor.wrapperCache:
- #cgThings.append(CGAddPropertyHook(descriptor))
- pass
-
- # Always have a finalize hook, regardless of whether the class wants a
- # custom hook.
cgThings.append(CGClassFinalizeHook(descriptor))
-
- # Only generate a trace hook if the class wants a custom hook.
- if (descriptor.customTrace):
- cgThings.append(CGClassTraceHook(descriptor))
+ cgThings.append(CGClassTraceHook(descriptor))
if descriptor.interface.hasInterfaceObject():
cgThings.append(CGClassConstructHook(descriptor))
@@ -5141,13 +5088,8 @@ class CGDescriptor(CGThing):
cgThings.append(CGDOMJSClass(descriptor))
pass
- if descriptor.wrapperCache:
- cgThings.append(CGWrapWithCacheMethod(descriptor))
- cgThings.append(CGWrapMethod(descriptor))
- pass
- else:
- cgThings.append(CGWrapNonWrapperCacheMethod(descriptor))
- pass
+ cgThings.append(CGWrapWithCacheMethod(descriptor))
+ cgThings.append(CGWrapMethod(descriptor))
cgThings = CGList((CGIndenter(t, declareOnly=True) for t in cgThings), "\n")
cgThings = CGWrapper(cgThings, pre='\n', post='\n')
diff --git a/src/components/script/dom/bindings/codegen/Configuration.py b/src/components/script/dom/bindings/codegen/Configuration.py
index e28e24bbcfa..08366c4ce28 100644
--- a/src/components/script/dom/bindings/codegen/Configuration.py
+++ b/src/components/script/dom/bindings/codegen/Configuration.py
@@ -246,20 +246,6 @@ class Descriptor(DescriptorProvider):
iface.setUserData('hasProxyDescendant', True)
iface = iface.parent
- if self.interface.isExternal() and 'prefable' in desc:
- raise TypeError("%s is external but has a prefable setting" %
- self.interface.identifier.name)
- self.prefable = desc.get('prefable', False)
-
- self.nativeIsISupports = not self.workers
- self.customTrace = desc.get('customTrace', self.workers) or 'trace'
- self.customFinalize = desc.get('customFinalize', self.workers)
- self.wrapperCache = self.workers or desc.get('wrapperCache', True)
-
- if not self.wrapperCache and self.prefable:
- raise TypeError("Descriptor for %s is prefable but not wrappercached" %
- self.interface.identifier.name)
-
def make_name(name):
return name + "_workers" if self.workers else name
self.name = make_name(interface.identifier.name)