Bug 788914 - Generate vanilla cross-compartment wrappers when UniversalXPConnect is enabled. r=mrbkap

This commit is contained in:
Bobby Holley 2012-09-06 22:55:18 -07:00
parent 55958efff5
commit 5ef4ab7e3c
2 changed files with 11 additions and 4 deletions

View File

@ -4380,11 +4380,8 @@ GetCompartmentPrivate(JSObject *object)
return GetCompartmentPrivate(compartment);
}
inline bool IsUniversalXPConnectEnabled(JSContext *cx)
inline bool IsUniversalXPConnectEnabled(JSCompartment *compartment)
{
JSCompartment *compartment = js::GetContextCompartment(cx);
if (!compartment)
return false;
CompartmentPrivate *priv =
static_cast<CompartmentPrivate*>(JS_GetCompartmentPrivate(compartment));
if (!priv)
@ -4392,6 +4389,14 @@ inline bool IsUniversalXPConnectEnabled(JSContext *cx)
return priv->universalXPConnectEnabled;
}
inline bool IsUniversalXPConnectEnabled(JSContext *cx)
{
JSCompartment *compartment = js::GetContextCompartment(cx);
if (!compartment)
return false;
return IsUniversalXPConnectEnabled(compartment);
}
inline void EnableUniversalXPConnect(JSContext *cx)
{
JSCompartment *compartment = js::GetContextCompartment(cx);

View File

@ -349,6 +349,8 @@ WrapperFactory::Rewrap(JSContext *cx, JSObject *obj, JSObject *wrappedProto, JSO
}
}
}
} else if (xpc::IsUniversalXPConnectEnabled(target)) {
wrapper = &CrossCompartmentWrapper::singleton;
} else if (AccessCheck::isChrome(origin)) {
JSFunction *fun = JS_GetObjectFunction(obj);
if (fun) {