Bug 761695 - Hoist getInnerObject into XrayTraits. r=peterv

The only special handling here with wrapped natives is to make sure that we
bypass outer windows. But we can do this with js::UnwrapObject.
This commit is contained in:
Bobby Holley 2012-10-05 18:59:22 +02:00
Родитель 0aab228c02
Коммит 3ae8dedbf2
1 изменённых файлов: 5 добавлений и 16 удалений

Просмотреть файл

@ -333,6 +333,10 @@ public:
class XrayTraits
{
public:
static JSObject* getInnerObject(JSObject *wrapper) {
return js::UnwrapObject(wrapper, /* stopAtOuter = */ false);
}
};
class XPCWrappedNativeXrayTraits : public XrayTraits
@ -352,7 +356,6 @@ public:
{
return getHolderObject(wrapper);
}
static JSObject* getInnerObject(JSObject *wrapper);
static bool isResolving(JSContext *cx, JSObject *holder, jsid id);
@ -387,10 +390,6 @@ public:
{
return getHolderObject(cx, wrapper, true);
}
static JSObject* getInnerObject(JSObject *wrapper)
{
return &js::GetProxyPrivate(wrapper).toObject();
}
static bool isResolving(JSContext *cx, JSObject *holder, jsid id)
{
@ -433,10 +432,6 @@ public:
{
return getHolderObject(cx, wrapper, true);
}
static JSObject* getInnerObject(JSObject *wrapper)
{
return &js::GetProxyPrivate(wrapper).toObject();
}
static bool isResolving(JSContext *cx, JSObject *holder, jsid id)
{
@ -484,7 +479,7 @@ GetWrappedNativeFromHolder(JSObject *holder)
{
MOZ_ASSERT(js::GetObjectJSClass(holder) == &HolderClass);
JSObject *wrapper = &js::GetReservedSlot(holder, JSSLOT_WRAPPER).toObject();
return GetWrappedNative(js::UnwrapObject(wrapper, /* stopAtOuter = */ false));
return GetWrappedNative(XrayTraits::getInnerObject(wrapper));
}
static JSObject *
@ -512,12 +507,6 @@ FindWrapper(JSContext *cx, JSObject *wrapper)
return wrapper;
}
JSObject*
XPCWrappedNativeXrayTraits::getInnerObject(JSObject *wrapper)
{
return GetWrappedNativeObjectFromHolder(getHolderObject(wrapper));
}
bool
XPCWrappedNativeXrayTraits::isResolving(JSContext *cx, JSObject *holder,
jsid id)