зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
0aab228c02
Коммит
3ae8dedbf2
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче