mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 761707 part 2. Drop the vestigial jsclass argument to UnwrapDOMObject. r=bholley
This commit is contained in:
parent
e90ba0af0f
commit
31ccf86cf9
@ -2442,9 +2442,9 @@ nsScriptSecurityManager::doGetObjectPrincipal(JSObject *aObj
|
||||
if (!(~jsClass->flags & (JSCLASS_HAS_PRIVATE |
|
||||
JSCLASS_PRIVATE_IS_NSISUPPORTS))) {
|
||||
priv = (nsISupports *) js::GetObjectPrivate(aObj);
|
||||
} else if ((jsClass->flags & JSCLASS_IS_DOMJSCLASS) &&
|
||||
} else if (IsDOMClass(jsClass) &&
|
||||
DOMJSClass::FromJSClass(jsClass)->mDOMObjectIsISupports) {
|
||||
priv = UnwrapDOMObject<nsISupports>(aObj, jsClass);
|
||||
priv = UnwrapDOMObject<nsISupports>(aObj);
|
||||
} else {
|
||||
priv = nsnull;
|
||||
}
|
||||
|
@ -340,11 +340,12 @@ QueryInterface(JSContext* cx, unsigned argc, JS::Value* vp)
|
||||
|
||||
JSObject* obj = JSVAL_TO_OBJECT(thisv);
|
||||
JSClass* clasp = js::GetObjectJSClass(obj);
|
||||
if (!IsDOMClass(clasp)) {
|
||||
if (!IsDOMClass(clasp) ||
|
||||
!DOMJSClass::FromJSClass(clasp)->mDOMObjectIsISupports) {
|
||||
return Throw<true>(cx, NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
nsISupports* native = UnwrapDOMObject<nsISupports>(obj, clasp);
|
||||
nsISupports* native = UnwrapDOMObject<nsISupports>(obj);
|
||||
|
||||
if (argc < 1) {
|
||||
return Throw<true>(cx, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
|
||||
|
@ -60,9 +60,15 @@ IsDOMClass(const JSClass* clasp)
|
||||
return clasp->flags & JSCLASS_IS_DOMJSCLASS;
|
||||
}
|
||||
|
||||
inline bool
|
||||
IsDOMClass(const js::Class* clasp)
|
||||
{
|
||||
return clasp->flags & JSCLASS_IS_DOMJSCLASS;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
inline T*
|
||||
UnwrapDOMObject(JSObject* obj, const JSClass* clasp)
|
||||
UnwrapDOMObject(JSObject* obj)
|
||||
{
|
||||
JS::Value val = js::GetReservedSlot(obj, DOM_OBJECT_SLOT);
|
||||
// XXXbz/khuey worker code tries to unwrap interface objects (which have
|
||||
@ -76,13 +82,6 @@ UnwrapDOMObject(JSObject* obj, const JSClass* clasp)
|
||||
return static_cast<T*>(val.toPrivate());
|
||||
}
|
||||
|
||||
template <class T>
|
||||
inline T*
|
||||
UnwrapDOMObject(JSObject* obj, const js::Class* clasp)
|
||||
{
|
||||
return UnwrapDOMObject<T>(obj, Jsvalify(clasp));
|
||||
}
|
||||
|
||||
// Some callers don't want to set an exception when unwrappin fails
|
||||
// (for example, overload resolution uses unwrapping to tell what sort
|
||||
// of thing it's looking at).
|
||||
@ -120,7 +119,7 @@ UnwrapObject(JSContext* cx, JSObject* obj, U& value)
|
||||
DOMJSClass* domClass = DOMJSClass::FromJSClass(clasp);
|
||||
if (domClass->mInterfaceChain[PrototypeTraits<PrototypeID>::Depth] ==
|
||||
PrototypeID) {
|
||||
value = UnwrapDOMObject<T>(obj, clasp);
|
||||
value = UnwrapDOMObject<T>(obj);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -464,8 +464,7 @@ class CGAbstractClassHook(CGAbstractStaticMethod):
|
||||
|
||||
def definition_body_prologue(self):
|
||||
return """
|
||||
MOZ_ASSERT(js::GetObjectJSClass(obj) == Class.ToJSClass());
|
||||
%s* self = UnwrapDOMObject<%s>(obj, Class.ToJSClass());
|
||||
%s* self = UnwrapDOMObject<%s>(obj);
|
||||
""" % (self.descriptor.nativeType, self.descriptor.nativeType)
|
||||
|
||||
def definition_body(self):
|
||||
|
@ -217,7 +217,7 @@ private:
|
||||
Finalize(JSFreeOp* aFop, JSObject* aObj)
|
||||
{
|
||||
JS_ASSERT(JS_GetClass(aObj) == Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj, Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj);
|
||||
if (worker) {
|
||||
worker->_finalize(aFop);
|
||||
}
|
||||
@ -227,7 +227,7 @@ private:
|
||||
Trace(JSTracer* aTrc, JSObject* aObj)
|
||||
{
|
||||
JS_ASSERT(JS_GetClass(aObj) == Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj, Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj);
|
||||
if (worker) {
|
||||
worker->_trace(aTrc);
|
||||
}
|
||||
@ -358,7 +358,7 @@ private:
|
||||
if (aObj) {
|
||||
JSClass* classPtr = JS_GetClass(aObj);
|
||||
if (classPtr == Class()) {
|
||||
return UnwrapDOMObject<WorkerPrivate>(aObj, Class());
|
||||
return UnwrapDOMObject<WorkerPrivate>(aObj);
|
||||
}
|
||||
}
|
||||
|
||||
@ -375,7 +375,7 @@ private:
|
||||
Finalize(JSFreeOp* aFop, JSObject* aObj)
|
||||
{
|
||||
JS_ASSERT(JS_GetClass(aObj) == Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj, Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj);
|
||||
if (worker) {
|
||||
worker->_finalize(aFop);
|
||||
}
|
||||
@ -385,7 +385,7 @@ private:
|
||||
Trace(JSTracer* aTrc, JSObject* aObj)
|
||||
{
|
||||
JS_ASSERT(JS_GetClass(aObj) == Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj, Class());
|
||||
WorkerPrivate* worker = UnwrapDOMObject<WorkerPrivate>(aObj);
|
||||
if (worker) {
|
||||
worker->_trace(aTrc);
|
||||
}
|
||||
@ -414,7 +414,7 @@ Worker::GetInstancePrivate(JSContext* aCx, JSObject* aObj,
|
||||
{
|
||||
JSClass* classPtr = JS_GetClass(aObj);
|
||||
if (classPtr == Class() || classPtr == ChromeWorker::Class()) {
|
||||
return UnwrapDOMObject<WorkerPrivate>(aObj, classPtr);
|
||||
return UnwrapDOMObject<WorkerPrivate>(aObj);
|
||||
}
|
||||
|
||||
JS_ReportErrorNumber(aCx, js_GetErrorMessage, NULL, JSMSG_INCOMPATIBLE_PROTO,
|
||||
|
@ -768,7 +768,7 @@ private:
|
||||
{
|
||||
JSClass* classPtr = JS_GetClass(aObj);
|
||||
if (classPtr == Class()) {
|
||||
return UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj, classPtr);
|
||||
return UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj);
|
||||
}
|
||||
|
||||
JS_ReportErrorNumber(aCx, js_GetErrorMessage, NULL,
|
||||
@ -803,7 +803,7 @@ private:
|
||||
{
|
||||
JS_ASSERT(JS_GetClass(aObj) == Class());
|
||||
DedicatedWorkerGlobalScope* scope =
|
||||
UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj, Class());
|
||||
UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj);
|
||||
if (scope) {
|
||||
DestroyProtoOrIfaceCache(aObj);
|
||||
scope->_finalize(aFop);
|
||||
@ -815,7 +815,7 @@ private:
|
||||
{
|
||||
JS_ASSERT(JS_GetClass(aObj) == Class());
|
||||
DedicatedWorkerGlobalScope* scope =
|
||||
UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj, Class());
|
||||
UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj);
|
||||
if (scope) {
|
||||
mozilla::dom::TraceProtoOrIfaceCache(aTrc, aObj);
|
||||
scope->_trace(aTrc);
|
||||
@ -888,7 +888,7 @@ WorkerGlobalScope::GetInstancePrivate(JSContext* aCx, JSObject* aObj,
|
||||
JS_ASSERT(classPtr != Class());
|
||||
|
||||
if (classPtr == DedicatedWorkerGlobalScope::Class()) {
|
||||
return UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj, classPtr);
|
||||
return UnwrapDOMObject<DedicatedWorkerGlobalScope>(aObj);
|
||||
}
|
||||
|
||||
JS_ReportErrorNumber(aCx, js_GetErrorMessage, NULL, JSMSG_INCOMPATIBLE_PROTO,
|
||||
|
@ -74,9 +74,9 @@ XPCConvert::GetISupportsFromJSObject(JSObject* obj, nsISupports** iface)
|
||||
*iface = (nsISupports*) xpc_GetJSPrivate(obj);
|
||||
return true;
|
||||
}
|
||||
if (jsclass && (jsclass->flags & JSCLASS_IS_DOMJSCLASS) &&
|
||||
if (jsclass && IsDOMClass(jsclass) &&
|
||||
DOMJSClass::FromJSClass(jsclass)->mDOMObjectIsISupports) {
|
||||
*iface = UnwrapDOMObject<nsISupports>(obj, jsclass);
|
||||
*iface = UnwrapDOMObject<nsISupports>(obj);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -489,8 +489,7 @@ nsJSIID::HasInstance(nsIXPConnectWrappedNative *wrapper,
|
||||
js::GetObjectJSClass(obj))->mDOMObjectIsISupports,
|
||||
"This only works on nsISupports classes!");
|
||||
identity =
|
||||
mozilla::dom::UnwrapDOMObject<nsISupports>(obj,
|
||||
js::GetObjectJSClass(obj));
|
||||
mozilla::dom::UnwrapDOMObject<nsISupports>(obj);
|
||||
} else {
|
||||
identity = nsnull;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "jsfriendapi.h"
|
||||
#include "js/MemoryMetrics.h"
|
||||
#include "mozilla/dom/DOMJSClass.h"
|
||||
#include "mozilla/dom/BindingUtils.h"
|
||||
|
||||
#include "nsJSPrincipals.h"
|
||||
|
||||
@ -460,14 +461,14 @@ SuspectDOMExpandos(nsPtrHashKey<JSObject> *key, void *arg)
|
||||
JSObject* obj = key->GetKey();
|
||||
nsISupports* native = nsnull;
|
||||
if (js::IsProxy(obj)) {
|
||||
NS_ASSERTION(mozilla::dom::binding::instanceIsProxy(obj),
|
||||
NS_ASSERTION(dom::binding::instanceIsProxy(obj),
|
||||
"Not a DOM proxy?");
|
||||
native = static_cast<nsISupports*>(js::GetProxyPrivate(obj).toPrivate());
|
||||
}
|
||||
else {
|
||||
NS_ASSERTION(mozilla::dom::DOMJSClass::FromJSClass(JS_GetClass(obj))->mDOMObjectIsISupports,
|
||||
NS_ASSERTION(dom::DOMJSClass::FromJSClass(JS_GetClass(obj))->mDOMObjectIsISupports,
|
||||
"Someone added a wrapper for a non-nsISupports native to DOMExpandos!");
|
||||
native = static_cast<nsISupports*>(js::GetReservedSlot(obj, DOM_OBJECT_SLOT).toPrivate());
|
||||
native = dom::UnwrapDOMObject<nsISupports>(obj);
|
||||
}
|
||||
closure->cb->NoteXPCOMRoot(native);
|
||||
return PL_DHASH_NEXT;
|
||||
|
@ -223,9 +223,9 @@ XPCWrappedNativeScope::SetGlobal(XPCCallContext& ccx, JSObject* aGlobal,
|
||||
// Our global has an nsISupports native pointer. Let's
|
||||
// see whether it's what we want.
|
||||
priv = static_cast<nsISupports*>(xpc_GetJSPrivate(aGlobal));
|
||||
} else if ((jsClass->flags & JSCLASS_IS_DOMJSCLASS) &&
|
||||
} else if (dom::IsDOMClass(jsClass) &&
|
||||
dom::DOMJSClass::FromJSClass(jsClass)->mDOMObjectIsISupports) {
|
||||
priv = dom::UnwrapDOMObject<nsISupports>(aGlobal, jsClass);
|
||||
priv = dom::UnwrapDOMObject<nsISupports>(aGlobal);
|
||||
} else {
|
||||
priv = nsnull;
|
||||
}
|
||||
|
@ -870,10 +870,10 @@ nsXPConnect::Traverse(void *p, nsCycleCollectionTraversalCallback &cb)
|
||||
nsISupports *identity =
|
||||
static_cast<nsISupports*>(js::GetProxyPrivate(obj).toPrivate());
|
||||
cb.NoteXPCOMChild(identity);
|
||||
} else if ((clazz->flags & JSCLASS_IS_DOMJSCLASS) &&
|
||||
} else if (IsDOMClass(clazz) &&
|
||||
DOMJSClass::FromJSClass(clazz)->mDOMObjectIsISupports) {
|
||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "UnwrapDOMObject(obj)");
|
||||
nsISupports *identity = UnwrapDOMObject<nsISupports>(obj, clazz);
|
||||
nsISupports *identity = UnwrapDOMObject<nsISupports>(obj);
|
||||
cb.NoteXPCOMChild(identity);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user