зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1027402 - Part 3: Mark all Proxy Handler methods const. (r=jorendorff, r=bz)
This commit is contained in:
Родитель
992c8dde5a
Коммит
04ec29520a
|
@ -87,6 +87,7 @@ WindowNamedPropertiesHandler::getOwnPropertyDescriptor(JSContext* aCx,
|
||||||
JS::Handle<JSObject*> aProxy,
|
JS::Handle<JSObject*> aProxy,
|
||||||
JS::Handle<jsid> aId,
|
JS::Handle<jsid> aId,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> aDesc)
|
JS::MutableHandle<JSPropertyDescriptor> aDesc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
// Note: The infallibleInit call below depends on this check.
|
// Note: The infallibleInit call below depends on this check.
|
||||||
if (!JSID_IS_STRING(aId)) {
|
if (!JSID_IS_STRING(aId)) {
|
||||||
|
@ -160,7 +161,7 @@ bool
|
||||||
WindowNamedPropertiesHandler::defineProperty(JSContext* aCx,
|
WindowNamedPropertiesHandler::defineProperty(JSContext* aCx,
|
||||||
JS::Handle<JSObject*> aProxy,
|
JS::Handle<JSObject*> aProxy,
|
||||||
JS::Handle<jsid> aId,
|
JS::Handle<jsid> aId,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> aDesc)
|
JS::MutableHandle<JSPropertyDescriptor> aDesc) const
|
||||||
{
|
{
|
||||||
ErrorResult rv;
|
ErrorResult rv;
|
||||||
rv.ThrowTypeError(MSG_DEFINEPROPERTY_ON_GSP);
|
rv.ThrowTypeError(MSG_DEFINEPROPERTY_ON_GSP);
|
||||||
|
@ -172,7 +173,7 @@ bool
|
||||||
WindowNamedPropertiesHandler::ownPropNames(JSContext* aCx,
|
WindowNamedPropertiesHandler::ownPropNames(JSContext* aCx,
|
||||||
JS::Handle<JSObject*> aProxy,
|
JS::Handle<JSObject*> aProxy,
|
||||||
unsigned flags,
|
unsigned flags,
|
||||||
JS::AutoIdVector& aProps)
|
JS::AutoIdVector& aProps) const
|
||||||
{
|
{
|
||||||
// Grab the DOM window.
|
// Grab the DOM window.
|
||||||
nsGlobalWindow* win = GetWindowFromGlobal(JS_GetGlobalForObject(aCx, aProxy));
|
nsGlobalWindow* win = GetWindowFromGlobal(JS_GetGlobalForObject(aCx, aProxy));
|
||||||
|
@ -210,7 +211,7 @@ WindowNamedPropertiesHandler::ownPropNames(JSContext* aCx,
|
||||||
bool
|
bool
|
||||||
WindowNamedPropertiesHandler::delete_(JSContext* aCx,
|
WindowNamedPropertiesHandler::delete_(JSContext* aCx,
|
||||||
JS::Handle<JSObject*> aProxy,
|
JS::Handle<JSObject*> aProxy,
|
||||||
JS::Handle<jsid> aId, bool* aBp)
|
JS::Handle<jsid> aId, bool* aBp) const
|
||||||
{
|
{
|
||||||
*aBp = false;
|
*aBp = false;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -20,7 +20,7 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
virtual bool
|
virtual bool
|
||||||
preventExtensions(JSContext* aCx, JS::Handle<JSObject*> aProxy) MOZ_OVERRIDE
|
preventExtensions(JSContext* aCx, JS::Handle<JSObject*> aProxy) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
// Throw a TypeError, per WebIDL.
|
// Throw a TypeError, per WebIDL.
|
||||||
JS_ReportErrorNumber(aCx, js_GetErrorMessage, nullptr,
|
JS_ReportErrorNumber(aCx, js_GetErrorMessage, nullptr,
|
||||||
|
@ -30,26 +30,27 @@ public:
|
||||||
virtual bool
|
virtual bool
|
||||||
getOwnPropertyDescriptor(JSContext* aCx, JS::Handle<JSObject*> aProxy,
|
getOwnPropertyDescriptor(JSContext* aCx, JS::Handle<JSObject*> aProxy,
|
||||||
JS::Handle<jsid> aId,
|
JS::Handle<jsid> aId,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> aDesc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> aDesc)
|
||||||
|
const MOZ_OVERRIDE;
|
||||||
virtual bool
|
virtual bool
|
||||||
defineProperty(JSContext* aCx, JS::Handle<JSObject*> aProxy,
|
defineProperty(JSContext* aCx, JS::Handle<JSObject*> aProxy,
|
||||||
JS::Handle<jsid> aId,
|
JS::Handle<jsid> aId,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> aDesc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> aDesc) const MOZ_OVERRIDE;
|
||||||
virtual bool
|
virtual bool
|
||||||
ownPropNames(JSContext* aCx, JS::Handle<JSObject*> aProxy, unsigned flags,
|
ownPropNames(JSContext* aCx, JS::Handle<JSObject*> aProxy, unsigned flags,
|
||||||
JS::AutoIdVector& aProps) MOZ_OVERRIDE;
|
JS::AutoIdVector& aProps) const MOZ_OVERRIDE;
|
||||||
virtual bool
|
virtual bool
|
||||||
delete_(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<jsid> aId,
|
delete_(JSContext* aCx, JS::Handle<JSObject*> aProxy, JS::Handle<jsid> aId,
|
||||||
bool* aBp) MOZ_OVERRIDE;
|
bool* aBp) const MOZ_OVERRIDE;
|
||||||
virtual bool
|
virtual bool
|
||||||
isExtensible(JSContext* aCx, JS::Handle<JSObject*> aProxy,
|
isExtensible(JSContext* aCx, JS::Handle<JSObject*> aProxy,
|
||||||
bool* aIsExtensible) MOZ_OVERRIDE
|
bool* aIsExtensible) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
*aIsExtensible = true;
|
*aIsExtensible = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
virtual const char*
|
virtual const char*
|
||||||
className(JSContext *aCx, JS::Handle<JSObject*> aProxy) MOZ_OVERRIDE
|
className(JSContext *aCx, JS::Handle<JSObject*> aProxy) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return "WindowProperties";
|
return "WindowProperties";
|
||||||
}
|
}
|
||||||
|
|
|
@ -601,69 +601,72 @@ class nsOuterWindowProxy : public js::Wrapper
|
||||||
public:
|
public:
|
||||||
nsOuterWindowProxy() : js::Wrapper(0) { }
|
nsOuterWindowProxy() : js::Wrapper(0) { }
|
||||||
|
|
||||||
virtual bool finalizeInBackground(JS::Value priv) {
|
virtual bool finalizeInBackground(JS::Value priv) const MOZ_OVERRIDE {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const char *className(JSContext *cx,
|
virtual const char *className(JSContext *cx,
|
||||||
JS::Handle<JSObject*> wrapper) MOZ_OVERRIDE;
|
JS::Handle<JSObject*> wrapper) const MOZ_OVERRIDE;
|
||||||
virtual void finalize(JSFreeOp *fop, JSObject *proxy) MOZ_OVERRIDE;
|
virtual void finalize(JSFreeOp *fop, JSObject *proxy) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
// Fundamental traps
|
// Fundamental traps
|
||||||
virtual bool isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *extensible)
|
virtual bool isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *extensible)
|
||||||
MOZ_OVERRIDE;
|
const MOZ_OVERRIDE;
|
||||||
virtual bool preventExtensions(JSContext *cx,
|
virtual bool preventExtensions(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy) MOZ_OVERRIDE;
|
JS::Handle<JSObject*> proxy) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext* cx,
|
virtual bool getPropertyDescriptor(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext* cx,
|
virtual bool getOwnPropertyDescriptor(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext* cx,
|
virtual bool defineProperty(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx,
|
virtual bool getOwnPropertyNames(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool delete_(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool watch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool watch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, JS::Handle<JSObject*> callable) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, JS::Handle<JSObject*> callable) const MOZ_OVERRIDE;
|
||||||
virtual bool unwatch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool unwatch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id) MOZ_OVERRIDE;
|
JS::Handle<jsid> id) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
// Derived traps
|
// Derived traps
|
||||||
virtual bool has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool get(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<JSObject*> receiver,
|
JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool set(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<JSObject*> receiver,
|
JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
bool strict,
|
bool strict,
|
||||||
JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
unsigned flags,
|
unsigned flags,
|
||||||
JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const nsOuterWindowProxy singleton;
|
static const nsOuterWindowProxy singleton;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
nsGlobalWindow* GetWindow(JSObject *proxy)
|
nsGlobalWindow* GetWindow(JSObject *proxy) const
|
||||||
{
|
{
|
||||||
return nsGlobalWindow::FromSupports(
|
return nsGlobalWindow::FromSupports(
|
||||||
static_cast<nsISupports*>(js::GetProxyExtra(proxy, 0).toPrivate()));
|
static_cast<nsISupports*>(js::GetProxyExtra(proxy, 0).toPrivate()));
|
||||||
|
@ -674,16 +677,16 @@ protected:
|
||||||
bool GetSubframeWindow(JSContext *cx, JS::Handle<JSObject*> proxy,
|
bool GetSubframeWindow(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JS::Value> vp,
|
JS::MutableHandle<JS::Value> vp,
|
||||||
bool &found);
|
bool &found) const;
|
||||||
|
|
||||||
// Returns a non-null window only if id is an index and we have a
|
// Returns a non-null window only if id is an index and we have a
|
||||||
// window at that index.
|
// window at that index.
|
||||||
already_AddRefed<nsIDOMWindow> GetSubframeWindow(JSContext *cx,
|
already_AddRefed<nsIDOMWindow> GetSubframeWindow(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id);
|
JS::Handle<jsid> id) const;
|
||||||
|
|
||||||
bool AppendIndexedPropertyNames(JSContext *cx, JSObject *proxy,
|
bool AppendIndexedPropertyNames(JSContext *cx, JSObject *proxy,
|
||||||
JS::AutoIdVector &props);
|
JS::AutoIdVector &props) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
const js::Class OuterWindowProxyClass =
|
const js::Class OuterWindowProxyClass =
|
||||||
|
@ -702,7 +705,7 @@ const js::Class OuterWindowProxyClass =
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
bool *extensible)
|
bool *extensible) const
|
||||||
{
|
{
|
||||||
// If [[Extensible]] could be false, then navigating a window could navigate
|
// If [[Extensible]] could be false, then navigating a window could navigate
|
||||||
// to a window that's [[Extensible]] after being at one that wasn't: an
|
// to a window that's [[Extensible]] after being at one that wasn't: an
|
||||||
|
@ -713,7 +716,7 @@ nsOuterWindowProxy::isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::preventExtensions(JSContext *cx,
|
nsOuterWindowProxy::preventExtensions(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy)
|
JS::Handle<JSObject*> proxy) const
|
||||||
{
|
{
|
||||||
// See above.
|
// See above.
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr,
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr,
|
||||||
|
@ -722,7 +725,7 @@ nsOuterWindowProxy::preventExtensions(JSContext *cx,
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
nsOuterWindowProxy::className(JSContext *cx, JS::Handle<JSObject*> proxy)
|
nsOuterWindowProxy::className(JSContext *cx, JS::Handle<JSObject*> proxy) const
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(js::IsProxy(proxy));
|
MOZ_ASSERT(js::IsProxy(proxy));
|
||||||
|
|
||||||
|
@ -730,7 +733,7 @@ nsOuterWindowProxy::className(JSContext *cx, JS::Handle<JSObject*> proxy)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nsOuterWindowProxy::finalize(JSFreeOp *fop, JSObject *proxy)
|
nsOuterWindowProxy::finalize(JSFreeOp *fop, JSObject *proxy) const
|
||||||
{
|
{
|
||||||
nsGlobalWindow* global = GetWindow(proxy);
|
nsGlobalWindow* global = GetWindow(proxy);
|
||||||
if (global) {
|
if (global) {
|
||||||
|
@ -748,7 +751,7 @@ bool
|
||||||
nsOuterWindowProxy::getPropertyDescriptor(JSContext* cx,
|
nsOuterWindowProxy::getPropertyDescriptor(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
// The only thing we can do differently from js::Wrapper is shadow stuff with
|
// The only thing we can do differently from js::Wrapper is shadow stuff with
|
||||||
// our indexed properties, so we can just try getOwnPropertyDescriptor and if
|
// our indexed properties, so we can just try getOwnPropertyDescriptor and if
|
||||||
|
@ -770,6 +773,7 @@ nsOuterWindowProxy::getOwnPropertyDescriptor(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
bool found;
|
bool found;
|
||||||
if (!GetSubframeWindow(cx, proxy, id, desc.value(), found)) {
|
if (!GetSubframeWindow(cx, proxy, id, desc.value(), found)) {
|
||||||
|
@ -789,6 +793,7 @@ nsOuterWindowProxy::defineProperty(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
int32_t index = GetArrayIndexFromId(cx, id);
|
int32_t index = GetArrayIndexFromId(cx, id);
|
||||||
if (IsArrayIndex(index)) {
|
if (IsArrayIndex(index)) {
|
||||||
|
@ -805,7 +810,7 @@ nsOuterWindowProxy::defineProperty(JSContext* cx,
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::getOwnPropertyNames(JSContext *cx,
|
nsOuterWindowProxy::getOwnPropertyNames(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props)
|
JS::AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
// Just our indexed stuff followed by our "normal" own property names.
|
// Just our indexed stuff followed by our "normal" own property names.
|
||||||
if (!AppendIndexedPropertyNames(cx, proxy, props)) {
|
if (!AppendIndexedPropertyNames(cx, proxy, props)) {
|
||||||
|
@ -821,7 +826,7 @@ nsOuterWindowProxy::getOwnPropertyNames(JSContext *cx,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::delete_(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::delete_(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp)
|
JS::Handle<jsid> id, bool *bp) const
|
||||||
{
|
{
|
||||||
if (nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id)) {
|
if (nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id)) {
|
||||||
// Reject (which means throw if strict, else return false) the delete.
|
// Reject (which means throw if strict, else return false) the delete.
|
||||||
|
@ -842,7 +847,7 @@ nsOuterWindowProxy::delete_(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props)
|
JS::AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
// Just our indexed stuff followed by our "normal" own property names.
|
// Just our indexed stuff followed by our "normal" own property names.
|
||||||
if (!AppendIndexedPropertyNames(cx, proxy, props)) {
|
if (!AppendIndexedPropertyNames(cx, proxy, props)) {
|
||||||
|
@ -858,7 +863,7 @@ nsOuterWindowProxy::enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp)
|
JS::Handle<jsid> id, bool *bp) const
|
||||||
{
|
{
|
||||||
if (nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id)) {
|
if (nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id)) {
|
||||||
*bp = true;
|
*bp = true;
|
||||||
|
@ -870,7 +875,7 @@ nsOuterWindowProxy::has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp)
|
JS::Handle<jsid> id, bool *bp) const
|
||||||
{
|
{
|
||||||
if (nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id)) {
|
if (nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id)) {
|
||||||
*bp = true;
|
*bp = true;
|
||||||
|
@ -884,7 +889,7 @@ bool
|
||||||
nsOuterWindowProxy::get(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::get(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<JSObject*> receiver,
|
JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JS::Value> vp)
|
JS::MutableHandle<JS::Value> vp) const
|
||||||
{
|
{
|
||||||
if (id == nsDOMClassInfo::sWrappedJSObject_id &&
|
if (id == nsDOMClassInfo::sWrappedJSObject_id &&
|
||||||
xpc::AccessCheck::isChrome(js::GetContextCompartment(cx))) {
|
xpc::AccessCheck::isChrome(js::GetContextCompartment(cx))) {
|
||||||
|
@ -909,7 +914,7 @@ nsOuterWindowProxy::set(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<JSObject*> receiver,
|
JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
bool strict,
|
bool strict,
|
||||||
JS::MutableHandle<JS::Value> vp)
|
JS::MutableHandle<JS::Value> vp) const
|
||||||
{
|
{
|
||||||
int32_t index = GetArrayIndexFromId(cx, id);
|
int32_t index = GetArrayIndexFromId(cx, id);
|
||||||
if (IsArrayIndex(index)) {
|
if (IsArrayIndex(index)) {
|
||||||
|
@ -925,7 +930,7 @@ nsOuterWindowProxy::set(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props)
|
JS::AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
// BaseProxyHandler::keys seems to do what we want here: call
|
// BaseProxyHandler::keys seems to do what we want here: call
|
||||||
// getOwnPropertyNames and then filter out the non-enumerable properties.
|
// getOwnPropertyNames and then filter out the non-enumerable properties.
|
||||||
|
@ -934,7 +939,7 @@ nsOuterWindowProxy::keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::iterate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::iterate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
unsigned flags, JS::MutableHandle<JS::Value> vp)
|
unsigned flags, JS::MutableHandle<JS::Value> vp) const
|
||||||
{
|
{
|
||||||
// BaseProxyHandler::iterate seems to do what we want here: fall
|
// BaseProxyHandler::iterate seems to do what we want here: fall
|
||||||
// back on the property names returned from keys() and enumerate().
|
// back on the property names returned from keys() and enumerate().
|
||||||
|
@ -946,7 +951,7 @@ nsOuterWindowProxy::GetSubframeWindow(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JS::Value> vp,
|
JS::MutableHandle<JS::Value> vp,
|
||||||
bool& found)
|
bool& found) const
|
||||||
{
|
{
|
||||||
nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id);
|
nsCOMPtr<nsIDOMWindow> frame = GetSubframeWindow(cx, proxy, id);
|
||||||
if (!frame) {
|
if (!frame) {
|
||||||
|
@ -973,7 +978,7 @@ nsOuterWindowProxy::GetSubframeWindow(JSContext *cx,
|
||||||
already_AddRefed<nsIDOMWindow>
|
already_AddRefed<nsIDOMWindow>
|
||||||
nsOuterWindowProxy::GetSubframeWindow(JSContext *cx,
|
nsOuterWindowProxy::GetSubframeWindow(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id)
|
JS::Handle<jsid> id) const
|
||||||
{
|
{
|
||||||
int32_t index = GetArrayIndexFromId(cx, id);
|
int32_t index = GetArrayIndexFromId(cx, id);
|
||||||
if (!IsArrayIndex(index)) {
|
if (!IsArrayIndex(index)) {
|
||||||
|
@ -987,7 +992,7 @@ nsOuterWindowProxy::GetSubframeWindow(JSContext *cx,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::AppendIndexedPropertyNames(JSContext *cx, JSObject *proxy,
|
nsOuterWindowProxy::AppendIndexedPropertyNames(JSContext *cx, JSObject *proxy,
|
||||||
JS::AutoIdVector &props)
|
JS::AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
uint32_t length = GetWindow(proxy)->Length();
|
uint32_t length = GetWindow(proxy)->Length();
|
||||||
MOZ_ASSERT(int32_t(length) >= 0);
|
MOZ_ASSERT(int32_t(length) >= 0);
|
||||||
|
@ -1003,14 +1008,14 @@ nsOuterWindowProxy::AppendIndexedPropertyNames(JSContext *cx, JSObject *proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::watch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::watch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, JS::Handle<JSObject*> callable)
|
JS::Handle<jsid> id, JS::Handle<JSObject*> callable) const
|
||||||
{
|
{
|
||||||
return js::WatchGuts(cx, proxy, id, callable);
|
return js::WatchGuts(cx, proxy, id, callable);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsOuterWindowProxy::unwatch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
nsOuterWindowProxy::unwatch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id)
|
JS::Handle<jsid> id) const
|
||||||
{
|
{
|
||||||
return js::UnwatchGuts(cx, proxy, id);
|
return js::UnwatchGuts(cx, proxy, id);
|
||||||
}
|
}
|
||||||
|
@ -1023,14 +1028,14 @@ class nsChromeOuterWindowProxy : public nsOuterWindowProxy
|
||||||
public:
|
public:
|
||||||
nsChromeOuterWindowProxy() : nsOuterWindowProxy() {}
|
nsChromeOuterWindowProxy() : nsOuterWindowProxy() {}
|
||||||
|
|
||||||
virtual const char *className(JSContext *cx, JS::Handle<JSObject*> wrapper) MOZ_OVERRIDE;
|
virtual const char *className(JSContext *cx, JS::Handle<JSObject*> wrapper) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const nsChromeOuterWindowProxy singleton;
|
static const nsChromeOuterWindowProxy singleton;
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
nsChromeOuterWindowProxy::className(JSContext *cx,
|
nsChromeOuterWindowProxy::className(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy)
|
JS::Handle<JSObject*> proxy) const
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(js::IsProxy(proxy));
|
MOZ_ASSERT(js::IsProxy(proxy));
|
||||||
|
|
||||||
|
|
|
@ -9487,7 +9487,7 @@ class CGDOMJSProxyHandler_getOwnPropertyDescriptor(ClassMethod):
|
||||||
Argument('JS::Handle<jsid>', 'id'),
|
Argument('JS::Handle<jsid>', 'id'),
|
||||||
Argument('JS::MutableHandle<JSPropertyDescriptor>', 'desc')]
|
Argument('JS::MutableHandle<JSPropertyDescriptor>', 'desc')]
|
||||||
ClassMethod.__init__(self, "getOwnPropertyDescriptor", "bool", args,
|
ClassMethod.__init__(self, "getOwnPropertyDescriptor", "bool", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -9598,7 +9598,7 @@ class CGDOMJSProxyHandler_defineProperty(ClassMethod):
|
||||||
Argument('JS::Handle<jsid>', 'id'),
|
Argument('JS::Handle<jsid>', 'id'),
|
||||||
Argument('JS::MutableHandle<JSPropertyDescriptor>', 'desc'),
|
Argument('JS::MutableHandle<JSPropertyDescriptor>', 'desc'),
|
||||||
Argument('bool*', 'defined')]
|
Argument('bool*', 'defined')]
|
||||||
ClassMethod.__init__(self, "defineProperty", "bool", args, virtual=True, override=True)
|
ClassMethod.__init__(self, "defineProperty", "bool", args, virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -9679,7 +9679,7 @@ class CGDOMJSProxyHandler_delete(ClassMethod):
|
||||||
Argument('JS::Handle<jsid>', 'id'),
|
Argument('JS::Handle<jsid>', 'id'),
|
||||||
Argument('bool*', 'bp')]
|
Argument('bool*', 'bp')]
|
||||||
ClassMethod.__init__(self, "delete_", "bool", args,
|
ClassMethod.__init__(self, "delete_", "bool", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -9778,7 +9778,7 @@ class CGDOMJSProxyHandler_ownPropNames(ClassMethod):
|
||||||
Argument('unsigned', 'flags'),
|
Argument('unsigned', 'flags'),
|
||||||
Argument('JS::AutoIdVector&', 'props')]
|
Argument('JS::AutoIdVector&', 'props')]
|
||||||
ClassMethod.__init__(self, "ownPropNames", "bool", args,
|
ClassMethod.__init__(self, "ownPropNames", "bool", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -9854,7 +9854,7 @@ class CGDOMJSProxyHandler_hasOwn(ClassMethod):
|
||||||
Argument('JS::Handle<jsid>', 'id'),
|
Argument('JS::Handle<jsid>', 'id'),
|
||||||
Argument('bool*', 'bp')]
|
Argument('bool*', 'bp')]
|
||||||
ClassMethod.__init__(self, "hasOwn", "bool", args,
|
ClassMethod.__init__(self, "hasOwn", "bool", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -9936,7 +9936,7 @@ class CGDOMJSProxyHandler_get(ClassMethod):
|
||||||
Argument('JS::Handle<jsid>', 'id'),
|
Argument('JS::Handle<jsid>', 'id'),
|
||||||
Argument('JS::MutableHandle<JS::Value>', 'vp')]
|
Argument('JS::MutableHandle<JS::Value>', 'vp')]
|
||||||
ClassMethod.__init__(self, "get", "bool", args,
|
ClassMethod.__init__(self, "get", "bool", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -10038,7 +10038,7 @@ class CGDOMJSProxyHandler_setCustom(ClassMethod):
|
||||||
Argument('JS::Handle<jsid>', 'id'),
|
Argument('JS::Handle<jsid>', 'id'),
|
||||||
Argument('JS::MutableHandle<JS::Value>', 'vp'),
|
Argument('JS::MutableHandle<JS::Value>', 'vp'),
|
||||||
Argument('bool*', 'done')]
|
Argument('bool*', 'done')]
|
||||||
ClassMethod.__init__(self, "setCustom", "bool", args, virtual=True, override=True)
|
ClassMethod.__init__(self, "setCustom", "bool", args, virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -10101,7 +10101,7 @@ class CGDOMJSProxyHandler_className(ClassMethod):
|
||||||
args = [Argument('JSContext*', 'cx'),
|
args = [Argument('JSContext*', 'cx'),
|
||||||
Argument('JS::Handle<JSObject*>', 'proxy')]
|
Argument('JS::Handle<JSObject*>', 'proxy')]
|
||||||
ClassMethod.__init__(self, "className", "const char*", args,
|
ClassMethod.__init__(self, "className", "const char*", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -10112,7 +10112,7 @@ class CGDOMJSProxyHandler_finalizeInBackground(ClassMethod):
|
||||||
def __init__(self, descriptor):
|
def __init__(self, descriptor):
|
||||||
args = [Argument('JS::Value', 'priv')]
|
args = [Argument('JS::Value', 'priv')]
|
||||||
ClassMethod.__init__(self, "finalizeInBackground", "bool", args,
|
ClassMethod.__init__(self, "finalizeInBackground", "bool", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -10123,7 +10123,7 @@ class CGDOMJSProxyHandler_finalize(ClassMethod):
|
||||||
def __init__(self, descriptor):
|
def __init__(self, descriptor):
|
||||||
args = [Argument('JSFreeOp*', 'fop'), Argument('JSObject*', 'proxy')]
|
args = [Argument('JSFreeOp*', 'fop'), Argument('JSObject*', 'proxy')]
|
||||||
ClassMethod.__init__(self, "finalize", "void", args,
|
ClassMethod.__init__(self, "finalize", "void", args,
|
||||||
virtual=True, override=True)
|
virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
@ -10140,7 +10140,7 @@ class CGDOMJSProxyHandler_slice(ClassMethod):
|
||||||
Argument('uint32_t', 'begin'),
|
Argument('uint32_t', 'begin'),
|
||||||
Argument('uint32_t', 'end'),
|
Argument('uint32_t', 'end'),
|
||||||
Argument('JS::Handle<JSObject*>', 'array')]
|
Argument('JS::Handle<JSObject*>', 'array')]
|
||||||
ClassMethod.__init__(self, "slice", "bool", args, virtual=True, override=True)
|
ClassMethod.__init__(self, "slice", "bool", args, virtual=True, override=True, const=True)
|
||||||
self.descriptor = descriptor
|
self.descriptor = descriptor
|
||||||
|
|
||||||
def getBody(self):
|
def getBody(self):
|
||||||
|
|
|
@ -146,7 +146,7 @@ DOMProxyHandler::EnsureExpandoObject(JSContext* cx, JS::Handle<JSObject*> obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *extensible)
|
DOMProxyHandler::isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *extensible) const
|
||||||
{
|
{
|
||||||
// always extensible per WebIDL
|
// always extensible per WebIDL
|
||||||
*extensible = true;
|
*extensible = true;
|
||||||
|
@ -154,7 +154,7 @@ DOMProxyHandler::isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::preventExtensions(JSContext *cx, JS::Handle<JSObject*> proxy)
|
DOMProxyHandler::preventExtensions(JSContext *cx, JS::Handle<JSObject*> proxy) const
|
||||||
{
|
{
|
||||||
// Throw a TypeError, per WebIDL.
|
// Throw a TypeError, per WebIDL.
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr,
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr,
|
||||||
|
@ -166,7 +166,7 @@ bool
|
||||||
BaseDOMProxyHandler::getPropertyDescriptor(JSContext* cx,
|
BaseDOMProxyHandler::getPropertyDescriptor(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
if (!getOwnPropertyDescriptor(cx, proxy, id, desc)) {
|
if (!getOwnPropertyDescriptor(cx, proxy, id, desc)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -189,7 +189,7 @@ BaseDOMProxyHandler::getPropertyDescriptor(JSContext* cx,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
DOMProxyHandler::defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc, bool* defined)
|
MutableHandle<JSPropertyDescriptor> desc, bool* defined) const
|
||||||
{
|
{
|
||||||
if (desc.hasGetterObject() && desc.setter() == JS_StrictPropertyStub) {
|
if (desc.hasGetterObject() && desc.setter() == JS_StrictPropertyStub) {
|
||||||
return JS_ReportErrorFlagsAndNumber(cx,
|
return JS_ReportErrorFlagsAndNumber(cx,
|
||||||
|
@ -214,7 +214,7 @@ DOMProxyHandler::defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::set(JSContext *cx, Handle<JSObject*> proxy, Handle<JSObject*> receiver,
|
DOMProxyHandler::set(JSContext *cx, Handle<JSObject*> proxy, Handle<JSObject*> receiver,
|
||||||
Handle<jsid> id, bool strict, MutableHandle<JS::Value> vp)
|
Handle<jsid> id, bool strict, MutableHandle<JS::Value> vp) const
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),
|
MOZ_ASSERT(!xpc::WrapperFactory::IsXrayWrapper(proxy),
|
||||||
"Should not have a XrayWrapper here");
|
"Should not have a XrayWrapper here");
|
||||||
|
@ -230,7 +230,7 @@ DOMProxyHandler::set(JSContext *cx, Handle<JSObject*> proxy, Handle<JSObject*> r
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::delete_(JSContext* cx, JS::Handle<JSObject*> proxy,
|
DOMProxyHandler::delete_(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool* bp)
|
JS::Handle<jsid> id, bool* bp) const
|
||||||
{
|
{
|
||||||
JS::Rooted<JSObject*> expando(cx);
|
JS::Rooted<JSObject*> expando(cx);
|
||||||
if (!xpc::WrapperFactory::IsXrayWrapper(proxy) && (expando = GetExpandoObject(proxy))) {
|
if (!xpc::WrapperFactory::IsXrayWrapper(proxy) && (expando = GetExpandoObject(proxy))) {
|
||||||
|
@ -243,7 +243,7 @@ DOMProxyHandler::delete_(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseDOMProxyHandler::enumerate(JSContext* cx, JS::Handle<JSObject*> proxy,
|
BaseDOMProxyHandler::enumerate(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
AutoIdVector& props)
|
AutoIdVector& props) const
|
||||||
{
|
{
|
||||||
JS::Rooted<JSObject*> proto(cx);
|
JS::Rooted<JSObject*> proto(cx);
|
||||||
if (!JS_GetPrototype(cx, proxy, &proto)) {
|
if (!JS_GetPrototype(cx, proxy, &proto)) {
|
||||||
|
@ -255,13 +255,13 @@ BaseDOMProxyHandler::enumerate(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseDOMProxyHandler::watch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
BaseDOMProxyHandler::watch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
JS::Handle<JSObject*> callable)
|
JS::Handle<JSObject*> callable) const
|
||||||
{
|
{
|
||||||
return js::WatchGuts(cx, proxy, id, callable);
|
return js::WatchGuts(cx, proxy, id, callable);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseDOMProxyHandler::unwatch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id)
|
BaseDOMProxyHandler::unwatch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id) const
|
||||||
{
|
{
|
||||||
return js::UnwatchGuts(cx, proxy, id);
|
return js::UnwatchGuts(cx, proxy, id);
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ BaseDOMProxyHandler::unwatch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Han
|
||||||
bool
|
bool
|
||||||
BaseDOMProxyHandler::getOwnPropertyNames(JSContext* cx,
|
BaseDOMProxyHandler::getOwnPropertyNames(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector& props)
|
JS::AutoIdVector& props) const
|
||||||
{
|
{
|
||||||
return ownPropNames(cx, proxy, JSITER_OWNONLY | JSITER_HIDDEN, props);
|
return ownPropNames(cx, proxy, JSITER_OWNONLY | JSITER_HIDDEN, props);
|
||||||
}
|
}
|
||||||
|
@ -277,13 +277,13 @@ BaseDOMProxyHandler::getOwnPropertyNames(JSContext* cx,
|
||||||
bool
|
bool
|
||||||
BaseDOMProxyHandler::keys(JSContext* cx,
|
BaseDOMProxyHandler::keys(JSContext* cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector& props)
|
JS::AutoIdVector& props) const
|
||||||
{
|
{
|
||||||
return ownPropNames(cx, proxy, JSITER_OWNONLY, props);
|
return ownPropNames(cx, proxy, JSITER_OWNONLY, props);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::has(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool* bp)
|
DOMProxyHandler::has(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool* bp) const
|
||||||
{
|
{
|
||||||
if (!hasOwn(cx, proxy, id, bp)) {
|
if (!hasOwn(cx, proxy, id, bp)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -328,7 +328,7 @@ IdToInt32(JSContext* cx, JS::Handle<jsid> id)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMProxyHandler::setCustom(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
DOMProxyHandler::setCustom(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JS::Value> vp, bool *done)
|
JS::MutableHandle<JS::Value> vp, bool *done) const
|
||||||
{
|
{
|
||||||
*done = false;
|
*done = false;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -45,23 +45,23 @@ public:
|
||||||
// Implementations of traps that can be implemented in terms of
|
// Implementations of traps that can be implemented in terms of
|
||||||
// fundamental traps.
|
// fundamental traps.
|
||||||
bool enumerate(JSContext* cx, JS::Handle<JSObject*> proxy,
|
bool enumerate(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector& props) MOZ_OVERRIDE;
|
JS::AutoIdVector& props) const MOZ_OVERRIDE;
|
||||||
bool getPropertyDescriptor(JSContext* cx, JS::Handle<JSObject*> proxy,
|
bool getPropertyDescriptor(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
bool watch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
bool watch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
JS::Handle<JSObject*> callable) MOZ_OVERRIDE;
|
JS::Handle<JSObject*> callable) const MOZ_OVERRIDE;
|
||||||
bool unwatch(JSContext* cx, JS::Handle<JSObject*> proxy,
|
bool unwatch(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id) MOZ_OVERRIDE;
|
JS::Handle<jsid> id) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext* cx, JS::Handle<JSObject*> proxy,
|
virtual bool getOwnPropertyNames(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
// We override keys() and implement it directly instead of using the
|
// We override keys() and implement it directly instead of using the
|
||||||
// default implementation, which would getOwnPropertyNames and then
|
// default implementation, which would getOwnPropertyNames and then
|
||||||
// filter out the non-enumerable ones. This avoids doing
|
// filter out the non-enumerable ones. This avoids doing
|
||||||
// unnecessary work during enumeration.
|
// unnecessary work during enumeration.
|
||||||
virtual bool keys(JSContext* cx, JS::Handle<JSObject*> proxy,
|
virtual bool keys(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Hook for subclasses to implement shared getOwnPropertyNames()/keys()
|
// Hook for subclasses to implement shared getOwnPropertyNames()/keys()
|
||||||
|
@ -69,7 +69,7 @@ protected:
|
||||||
// or JSITER_OWNONLY | JSITER_HIDDEN (for getOwnPropertyNames()).
|
// or JSITER_OWNONLY | JSITER_HIDDEN (for getOwnPropertyNames()).
|
||||||
virtual bool ownPropNames(JSContext* cx, JS::Handle<JSObject*> proxy,
|
virtual bool ownPropNames(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
unsigned flags,
|
unsigned flags,
|
||||||
JS::AutoIdVector& props) = 0;
|
JS::AutoIdVector& props) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DOMProxyHandler : public BaseDOMProxyHandler
|
class DOMProxyHandler : public BaseDOMProxyHandler
|
||||||
|
@ -80,21 +80,25 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool preventExtensions(JSContext *cx, JS::Handle<JSObject*> proxy) MOZ_OVERRIDE;
|
bool preventExtensions(JSContext *cx, JS::Handle<JSObject*> proxy) const MOZ_OVERRIDE;
|
||||||
bool defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
bool defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
bool unused;
|
bool unused;
|
||||||
return defineProperty(cx, proxy, id, desc, &unused);
|
return defineProperty(cx, proxy, id, desc, &unused);
|
||||||
}
|
}
|
||||||
virtual bool defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
virtual bool defineProperty(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc, bool* defined);
|
JS::MutableHandle<JSPropertyDescriptor> desc, bool* defined)
|
||||||
|
const;
|
||||||
bool set(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<JSObject*> receiver,
|
bool set(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, bool strict, JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, bool strict, JS::MutableHandle<JS::Value> vp)
|
||||||
|
const MOZ_OVERRIDE;
|
||||||
bool delete_(JSContext* cx, JS::Handle<JSObject*> proxy,
|
bool delete_(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool* bp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, bool* bp) const MOZ_OVERRIDE;
|
||||||
bool has(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool* bp) MOZ_OVERRIDE;
|
bool has(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
bool isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *extensible) MOZ_OVERRIDE;
|
bool* bp) const MOZ_OVERRIDE;
|
||||||
|
bool isExtensible(JSContext *cx, JS::Handle<JSObject*> proxy, bool *extensible)
|
||||||
|
const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If assigning to proxy[id] hits a named setter with OverrideBuiltins or
|
* If assigning to proxy[id] hits a named setter with OverrideBuiltins or
|
||||||
|
@ -102,7 +106,7 @@ public:
|
||||||
* *done to false.
|
* *done to false.
|
||||||
*/
|
*/
|
||||||
virtual bool setCustom(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
virtual bool setCustom(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JS::Value> vp, bool *done);
|
JS::MutableHandle<JS::Value> vp, bool *done) const;
|
||||||
|
|
||||||
static JSObject* GetExpandoObject(JSObject* obj)
|
static JSObject* GetExpandoObject(JSObject* obj)
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,35 +54,36 @@ class CPOWProxyHandler : public BaseProxyHandler
|
||||||
: BaseProxyHandler(&sCPOWProxyHandler) {}
|
: BaseProxyHandler(&sCPOWProxyHandler) {}
|
||||||
virtual ~CPOWProxyHandler() {}
|
virtual ~CPOWProxyHandler() {}
|
||||||
|
|
||||||
virtual bool finalizeInBackground(Value priv) MOZ_OVERRIDE {
|
virtual bool finalizeInBackground(Value priv) const MOZ_OVERRIDE {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp) MOZ_OVERRIDE;
|
HandleId id, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, JS::HandleObject proxy, JS::HandleObject receiver,
|
virtual bool set(JSContext *cx, JS::HandleObject proxy, JS::HandleObject receiver,
|
||||||
JS::HandleId id, bool strict, JS::MutableHandleValue vp) MOZ_OVERRIDE;
|
JS::HandleId id, bool strict, JS::MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool objectClassIs(HandleObject obj, js::ESClassValue classValue, JSContext *cx) MOZ_OVERRIDE;
|
virtual bool objectClassIs(HandleObject obj, js::ESClassValue classValue,
|
||||||
virtual const char* className(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
JSContext *cx) const MOZ_OVERRIDE;
|
||||||
virtual void finalize(JSFreeOp *fop, JSObject *proxy) MOZ_OVERRIDE;
|
virtual const char* className(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
|
virtual void finalize(JSFreeOp *fop, JSObject *proxy) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const CPOWProxyHandler singleton;
|
static const CPOWProxyHandler singleton;
|
||||||
};
|
};
|
||||||
|
@ -98,7 +99,7 @@ const CPOWProxyHandler CPOWProxyHandler::singleton;
|
||||||
return owner->call args;
|
return owner->call args;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy)
|
CPOWProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
FORWARD(preventExtensions, (cx, proxy));
|
FORWARD(preventExtensions, (cx, proxy));
|
||||||
}
|
}
|
||||||
|
@ -119,7 +120,7 @@ WrapperOwner::preventExtensions(JSContext *cx, HandleObject proxy)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
CPOWProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
FORWARD(getPropertyDescriptor, (cx, proxy, id, desc));
|
FORWARD(getPropertyDescriptor, (cx, proxy, id, desc));
|
||||||
}
|
}
|
||||||
|
@ -149,7 +150,7 @@ WrapperOwner::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
CPOWProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
FORWARD(getOwnPropertyDescriptor, (cx, proxy, id, desc));
|
FORWARD(getOwnPropertyDescriptor, (cx, proxy, id, desc));
|
||||||
}
|
}
|
||||||
|
@ -179,7 +180,7 @@ WrapperOwner::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, Handle
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
CPOWProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
FORWARD(defineProperty, (cx, proxy, id, desc));
|
FORWARD(defineProperty, (cx, proxy, id, desc));
|
||||||
}
|
}
|
||||||
|
@ -208,7 +209,8 @@ WrapperOwner::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
CPOWProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
FORWARD(getOwnPropertyNames, (cx, proxy, props));
|
FORWARD(getOwnPropertyNames, (cx, proxy, props));
|
||||||
}
|
}
|
||||||
|
@ -220,7 +222,7 @@ WrapperOwner::getOwnPropertyNames(JSContext *cx, HandleObject proxy, AutoIdVecto
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
CPOWProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
FORWARD(delete_, (cx, proxy, id, bp));
|
FORWARD(delete_, (cx, proxy, id, bp));
|
||||||
}
|
}
|
||||||
|
@ -244,7 +246,7 @@ WrapperOwner::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
CPOWProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
FORWARD(enumerate, (cx, proxy, props));
|
FORWARD(enumerate, (cx, proxy, props));
|
||||||
}
|
}
|
||||||
|
@ -256,7 +258,7 @@ WrapperOwner::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
CPOWProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
FORWARD(has, (cx, proxy, id, bp));
|
FORWARD(has, (cx, proxy, id, bp));
|
||||||
}
|
}
|
||||||
|
@ -280,7 +282,7 @@ WrapperOwner::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
CPOWProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
FORWARD(hasOwn, (cx, proxy, id, bp));
|
FORWARD(hasOwn, (cx, proxy, id, bp));
|
||||||
}
|
}
|
||||||
|
@ -305,7 +307,7 @@ WrapperOwner::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
CPOWProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp)
|
HandleId id, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
FORWARD(get, (cx, proxy, receiver, id, vp));
|
FORWARD(get, (cx, proxy, receiver, id, vp));
|
||||||
}
|
}
|
||||||
|
@ -406,7 +408,7 @@ WrapperOwner::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::set(JSContext *cx, JS::HandleObject proxy, JS::HandleObject receiver,
|
CPOWProxyHandler::set(JSContext *cx, JS::HandleObject proxy, JS::HandleObject receiver,
|
||||||
JS::HandleId id, bool strict, JS::MutableHandleValue vp)
|
JS::HandleId id, bool strict, JS::MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
FORWARD(set, (cx, proxy, receiver, id, strict, vp));
|
FORWARD(set, (cx, proxy, receiver, id, strict, vp));
|
||||||
}
|
}
|
||||||
|
@ -440,7 +442,7 @@ WrapperOwner::set(JSContext *cx, JS::HandleObject proxy, JS::HandleObject receiv
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
CPOWProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
FORWARD(keys, (cx, proxy, props));
|
FORWARD(keys, (cx, proxy, props));
|
||||||
}
|
}
|
||||||
|
@ -452,7 +454,7 @@ WrapperOwner::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible)
|
CPOWProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const
|
||||||
{
|
{
|
||||||
FORWARD(isExtensible, (cx, proxy, extensible));
|
FORWARD(isExtensible, (cx, proxy, extensible));
|
||||||
}
|
}
|
||||||
|
@ -472,7 +474,7 @@ WrapperOwner::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
CPOWProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
FORWARD(call, (cx, proxy, args));
|
FORWARD(call, (cx, proxy, args));
|
||||||
}
|
}
|
||||||
|
@ -550,7 +552,7 @@ WrapperOwner::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CPOWProxyHandler::objectClassIs(HandleObject proxy, js::ESClassValue classValue, JSContext *cx)
|
CPOWProxyHandler::objectClassIs(HandleObject proxy, js::ESClassValue classValue, JSContext *cx) const
|
||||||
{
|
{
|
||||||
FORWARD(objectClassIs, (cx, proxy, classValue));
|
FORWARD(objectClassIs, (cx, proxy, classValue));
|
||||||
}
|
}
|
||||||
|
@ -572,7 +574,7 @@ WrapperOwner::objectClassIs(JSContext *cx, HandleObject proxy, js::ESClassValue
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
CPOWProxyHandler::className(JSContext *cx, HandleObject proxy)
|
CPOWProxyHandler::className(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
WrapperOwner *parent = OwnerOf(proxy);
|
WrapperOwner *parent = OwnerOf(proxy);
|
||||||
if (!parent->active())
|
if (!parent->active())
|
||||||
|
@ -595,7 +597,7 @@ WrapperOwner::className(JSContext *cx, HandleObject proxy)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CPOWProxyHandler::finalize(JSFreeOp *fop, JSObject *proxy)
|
CPOWProxyHandler::finalize(JSFreeOp *fop, JSObject *proxy) const
|
||||||
{
|
{
|
||||||
OwnerOf(proxy)->drop(proxy);
|
OwnerOf(proxy)->drop(proxy);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,14 +92,14 @@ BaseProxyHandler::~BaseProxyHandler()
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::enter(JSContext *cx, HandleObject wrapper, HandleId id, Action act,
|
BaseProxyHandler::enter(JSContext *cx, HandleObject wrapper, HandleId id, Action act,
|
||||||
bool *bp)
|
bool *bp) const
|
||||||
{
|
{
|
||||||
*bp = true;
|
*bp = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
BaseProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, GET);
|
assertEnteredPolicy(cx, proxy, id, GET);
|
||||||
Rooted<PropertyDescriptor> desc(cx);
|
Rooted<PropertyDescriptor> desc(cx);
|
||||||
|
@ -110,7 +110,7 @@ BaseProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
BaseProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
// Note: Proxy::set needs to invoke hasOwn to determine where the setter
|
// Note: Proxy::set needs to invoke hasOwn to determine where the setter
|
||||||
// lives, so we allow SET operations to invoke us.
|
// lives, so we allow SET operations to invoke us.
|
||||||
|
@ -124,7 +124,7 @@ BaseProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *b
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
BaseProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp)
|
HandleId id, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, GET);
|
assertEnteredPolicy(cx, proxy, id, GET);
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ BaseProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
BaseProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp)
|
HandleId id, bool strict, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, SET);
|
assertEnteredPolicy(cx, proxy, id, SET);
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ BaseProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
BaseProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
||||||
JS_ASSERT(props.length() == 0);
|
JS_ASSERT(props.length() == 0);
|
||||||
|
@ -256,7 +256,8 @@ BaseProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags, MutableHandleValue vp)
|
BaseProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
||||||
|
|
||||||
|
@ -271,25 +272,25 @@ BaseProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags, Mut
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
BaseProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
MOZ_ASSUME_UNREACHABLE("callable proxies should implement call trap");
|
MOZ_ASSUME_UNREACHABLE("callable proxies should implement call trap");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
BaseProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
MOZ_ASSUME_UNREACHABLE("callable proxies should implement construct trap");
|
MOZ_ASSUME_UNREACHABLE("callable proxies should implement construct trap");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
BaseProxyHandler::className(JSContext *cx, HandleObject proxy)
|
BaseProxyHandler::className(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
return proxy->isCallable() ? "Function" : "Object";
|
return proxy->isCallable() ? "Function" : "Object";
|
||||||
}
|
}
|
||||||
|
|
||||||
JSString *
|
JSString *
|
||||||
BaseProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent)
|
BaseProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) const
|
||||||
{
|
{
|
||||||
if (proxy->isCallable())
|
if (proxy->isCallable())
|
||||||
return JS_NewStringCopyZ(cx, "function () {\n [native code]\n}");
|
return JS_NewStringCopyZ(cx, "function () {\n [native code]\n}");
|
||||||
|
@ -300,27 +301,29 @@ BaseProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned inden
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
|
BaseProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
|
||||||
RegExpGuard *g)
|
RegExpGuard *g) const
|
||||||
{
|
{
|
||||||
MOZ_ASSUME_UNREACHABLE("This should have been a wrapped regexp");
|
MOZ_ASSUME_UNREACHABLE("This should have been a wrapped regexp");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::defaultValue(JSContext *cx, HandleObject proxy, JSType hint,
|
BaseProxyHandler::defaultValue(JSContext *cx, HandleObject proxy, JSType hint,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
return DefaultValue(cx, proxy, hint, vp);
|
return DefaultValue(cx, proxy, hint, vp);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl, CallArgs args)
|
BaseProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
|
CallArgs args) const
|
||||||
{
|
{
|
||||||
ReportIncompatible(cx, args);
|
ReportIncompatible(cx, args);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v, bool *bp)
|
BaseProxyHandler::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
||||||
|
bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
||||||
RootedValue val(cx, ObjectValue(*proxy.get()));
|
RootedValue val(cx, ObjectValue(*proxy.get()));
|
||||||
|
@ -330,30 +333,30 @@ BaseProxyHandler::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleVa
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue, JSContext *cx)
|
BaseProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue, JSContext *cx) const
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
BaseProxyHandler::finalize(JSFreeOp *fop, JSObject *proxy)
|
BaseProxyHandler::finalize(JSFreeOp *fop, JSObject *proxy) const
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
JSObject *
|
JSObject *
|
||||||
BaseProxyHandler::weakmapKeyDelegate(JSObject *proxy)
|
BaseProxyHandler::weakmapKeyDelegate(JSObject *proxy) const
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop)
|
BaseProxyHandler::getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
MOZ_ASSUME_UNREACHABLE("Must override getPrototypeOf with lazy prototype.");
|
MOZ_ASSUME_UNREACHABLE("Must override getPrototypeOf with lazy prototype.");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::setPrototypeOf(JSContext *cx, HandleObject, HandleObject, bool *)
|
BaseProxyHandler::setPrototypeOf(JSContext *cx, HandleObject, HandleObject, bool *) const
|
||||||
{
|
{
|
||||||
// Disallow sets of protos on proxies with lazy protos, but no hook.
|
// Disallow sets of protos on proxies with lazy protos, but no hook.
|
||||||
// This keeps us away from the footgun of having the first proto set opt
|
// This keeps us away from the footgun of having the first proto set opt
|
||||||
|
@ -364,7 +367,7 @@ BaseProxyHandler::setPrototypeOf(JSContext *cx, HandleObject, HandleObject, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::watch(JSContext *cx, HandleObject proxy, HandleId id, HandleObject callable)
|
BaseProxyHandler::watch(JSContext *cx, HandleObject proxy, HandleId id, HandleObject callable) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_WATCH,
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_WATCH,
|
||||||
proxy->getClass()->name);
|
proxy->getClass()->name);
|
||||||
|
@ -372,14 +375,14 @@ BaseProxyHandler::watch(JSContext *cx, HandleObject proxy, HandleId id, HandleOb
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::unwatch(JSContext *cx, HandleObject proxy, HandleId id)
|
BaseProxyHandler::unwatch(JSContext *cx, HandleObject proxy, HandleId id) const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BaseProxyHandler::slice(JSContext *cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
BaseProxyHandler::slice(JSContext *cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
||||||
HandleObject result)
|
HandleObject result) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
||||||
|
|
||||||
|
@ -388,7 +391,7 @@ BaseProxyHandler::slice(JSContext *cx, HandleObject proxy, uint32_t begin, uint3
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
DirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, GET | SET);
|
assertEnteredPolicy(cx, proxy, id, GET | SET);
|
||||||
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
||||||
|
@ -398,7 +401,7 @@ DirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, Han
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
DirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, GET | SET);
|
assertEnteredPolicy(cx, proxy, id, GET | SET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -407,7 +410,7 @@ DirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
DirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, SET);
|
assertEnteredPolicy(cx, proxy, id, SET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -418,7 +421,7 @@ DirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId i
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
DirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -426,7 +429,7 @@ DirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
DirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, SET);
|
assertEnteredPolicy(cx, proxy, id, SET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -435,7 +438,7 @@ DirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy,
|
DirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
||||||
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
||||||
|
@ -444,7 +447,7 @@ DirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
DirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
||||||
RootedValue target(cx, proxy->as<ProxyObject>().private_());
|
RootedValue target(cx, proxy->as<ProxyObject>().private_());
|
||||||
|
@ -452,7 +455,7 @@ DirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
DirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
||||||
RootedValue target(cx, proxy->as<ProxyObject>().private_());
|
RootedValue target(cx, proxy->as<ProxyObject>().private_());
|
||||||
|
@ -461,7 +464,7 @@ DirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
DirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args)
|
CallArgs args) const
|
||||||
{
|
{
|
||||||
args.setThis(ObjectValue(*args.thisv().toObject().as<ProxyObject>().target()));
|
args.setThis(ObjectValue(*args.thisv().toObject().as<ProxyObject>().target()));
|
||||||
if (!test(args.thisv())) {
|
if (!test(args.thisv())) {
|
||||||
|
@ -474,7 +477,7 @@ DirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
DirectProxyHandler::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
||||||
bool *bp)
|
bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
||||||
bool b;
|
bool b;
|
||||||
|
@ -486,14 +489,14 @@ DirectProxyHandler::hasInstance(JSContext *cx, HandleObject proxy, MutableHandle
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop)
|
DirectProxyHandler::getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
return JSObject::getProto(cx, target, protop);
|
return JSObject::getProto(cx, target, protop);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto, bool *bp)
|
DirectProxyHandler::setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto, bool *bp) const
|
||||||
{
|
{
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
return JSObject::setProto(cx, target, proto, bp);
|
return JSObject::setProto(cx, target, proto, bp);
|
||||||
|
@ -501,14 +504,14 @@ DirectProxyHandler::setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObje
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue,
|
DirectProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue,
|
||||||
JSContext *cx)
|
JSContext *cx) const
|
||||||
{
|
{
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
return ObjectClassIs(target, classValue, cx);
|
return ObjectClassIs(target, classValue, cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
DirectProxyHandler::className(JSContext *cx, HandleObject proxy)
|
DirectProxyHandler::className(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -517,7 +520,7 @@ DirectProxyHandler::className(JSContext *cx, HandleObject proxy)
|
||||||
|
|
||||||
JSString *
|
JSString *
|
||||||
DirectProxyHandler::fun_toString(JSContext *cx, HandleObject proxy,
|
DirectProxyHandler::fun_toString(JSContext *cx, HandleObject proxy,
|
||||||
unsigned indent)
|
unsigned indent) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -526,14 +529,14 @@ DirectProxyHandler::fun_toString(JSContext *cx, HandleObject proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
|
DirectProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
|
||||||
RegExpGuard *g)
|
RegExpGuard *g) const
|
||||||
{
|
{
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
return RegExpToShared(cx, target, g);
|
return RegExpToShared(cx, target, g);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSObject *
|
JSObject *
|
||||||
DirectProxyHandler::weakmapKeyDelegate(JSObject *proxy)
|
DirectProxyHandler::weakmapKeyDelegate(JSObject *proxy) const
|
||||||
{
|
{
|
||||||
return UncheckedUnwrap(proxy);
|
return UncheckedUnwrap(proxy);
|
||||||
}
|
}
|
||||||
|
@ -545,7 +548,7 @@ DirectProxyHandler::DirectProxyHandler(const void *family, bool hasPrototype,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
DirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, GET);
|
assertEnteredPolicy(cx, proxy, id, GET);
|
||||||
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
||||||
|
@ -558,7 +561,7 @@ DirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
DirectProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
// Note: Proxy::set needs to invoke hasOwn to determine where the setter
|
// Note: Proxy::set needs to invoke hasOwn to determine where the setter
|
||||||
// lives, so we allow SET operations to invoke us.
|
// lives, so we allow SET operations to invoke us.
|
||||||
|
@ -573,7 +576,7 @@ DirectProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
DirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp)
|
HandleId id, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, GET);
|
assertEnteredPolicy(cx, proxy, id, GET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -582,7 +585,7 @@ DirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
DirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp)
|
HandleId id, bool strict, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, id, SET);
|
assertEnteredPolicy(cx, proxy, id, SET);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -590,7 +593,7 @@ DirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
DirectProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
|
@ -599,7 +602,7 @@ DirectProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
DirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, ENUMERATE);
|
||||||
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
JS_ASSERT(!hasPrototype()); // Should never be called if there's a prototype.
|
||||||
|
@ -608,14 +611,14 @@ DirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible)
|
DirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const
|
||||||
{
|
{
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
return JSObject::isExtensible(cx, target, extensible);
|
return JSObject::isExtensible(cx, target, extensible);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy)
|
DirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
RootedObject target(cx, proxy->as<ProxyObject>().target());
|
||||||
return JSObject::preventExtensions(cx, target);
|
return JSObject::preventExtensions(cx, target);
|
||||||
|
@ -738,36 +741,37 @@ class ScriptedIndirectProxyHandler : public BaseProxyHandler
|
||||||
virtual ~ScriptedIndirectProxyHandler();
|
virtual ~ScriptedIndirectProxyHandler();
|
||||||
|
|
||||||
/* ES5 Harmony fundamental proxy traps. */
|
/* ES5 Harmony fundamental proxy traps. */
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props);
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
|
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* ES5 Harmony derived proxy traps. */
|
/* ES5 Harmony derived proxy traps. */
|
||||||
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
||||||
bool strict, MutableHandleValue vp) MOZ_OVERRIDE;
|
bool strict, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* Spidermonkey extensions. */
|
/* Spidermonkey extensions. */
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args) MOZ_OVERRIDE;
|
CallArgs args) const MOZ_OVERRIDE;
|
||||||
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) MOZ_OVERRIDE;
|
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) const MOZ_OVERRIDE;
|
||||||
virtual bool isScripted() MOZ_OVERRIDE { return true; }
|
virtual bool isScripted() const MOZ_OVERRIDE { return true; }
|
||||||
|
|
||||||
static const ScriptedIndirectProxyHandler singleton;
|
static const ScriptedIndirectProxyHandler singleton;
|
||||||
};
|
};
|
||||||
|
@ -802,7 +806,8 @@ ScriptedIndirectProxyHandler::~ScriptedIndirectProxyHandler()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible)
|
ScriptedIndirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy,
|
||||||
|
bool *extensible) const
|
||||||
{
|
{
|
||||||
// Scripted indirect proxies don't support extensibility changes.
|
// Scripted indirect proxies don't support extensibility changes.
|
||||||
*extensible = true;
|
*extensible = true;
|
||||||
|
@ -810,7 +815,7 @@ ScriptedIndirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bo
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy)
|
ScriptedIndirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
// See above.
|
// See above.
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_CHANGE_EXTENSIBILITY);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_CHANGE_EXTENSIBILITY);
|
||||||
|
@ -840,7 +845,7 @@ GetIndirectProxyHandlerObject(JSObject *proxy)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
ScriptedIndirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -853,7 +858,7 @@ ScriptedIndirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
ScriptedIndirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -866,7 +871,7 @@ ScriptedIndirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObje
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
ScriptedIndirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -877,7 +882,7 @@ ScriptedIndirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
ScriptedIndirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -887,7 +892,7 @@ ScriptedIndirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject pr
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
ScriptedIndirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -897,7 +902,7 @@ ScriptedIndirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleI
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
ScriptedIndirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -907,7 +912,7 @@ ScriptedIndirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoI
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
ScriptedIndirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -920,7 +925,7 @@ ScriptedIndirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
ScriptedIndirectProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue fval(cx), value(cx);
|
RootedValue fval(cx), value(cx);
|
||||||
|
@ -934,7 +939,7 @@ ScriptedIndirectProxyHandler::hasOwn(JSContext *cx, HandleObject proxy, HandleId
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
ScriptedIndirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp)
|
HandleId id, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue idv(cx);
|
RootedValue idv(cx);
|
||||||
|
@ -953,7 +958,7 @@ ScriptedIndirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObjec
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
ScriptedIndirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp)
|
HandleId id, bool strict, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue idv(cx);
|
RootedValue idv(cx);
|
||||||
|
@ -972,7 +977,7 @@ ScriptedIndirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObjec
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
ScriptedIndirectProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue value(cx);
|
RootedValue value(cx);
|
||||||
|
@ -986,7 +991,7 @@ ScriptedIndirectProxyHandler::keys(JSContext *cx, HandleObject proxy, AutoIdVect
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
ScriptedIndirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetIndirectProxyHandlerObject(proxy));
|
||||||
RootedValue value(cx);
|
RootedValue value(cx);
|
||||||
|
@ -999,7 +1004,7 @@ ScriptedIndirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigne
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
ScriptedIndirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
||||||
RootedObject ccHolder(cx, &proxy->as<ProxyObject>().extra(0).toObject());
|
RootedObject ccHolder(cx, &proxy->as<ProxyObject>().extra(0).toObject());
|
||||||
|
@ -1010,7 +1015,7 @@ ScriptedIndirectProxyHandler::call(JSContext *cx, HandleObject proxy, const Call
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
ScriptedIndirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, CALL);
|
||||||
RootedObject ccHolder(cx, &proxy->as<ProxyObject>().extra(0).toObject());
|
RootedObject ccHolder(cx, &proxy->as<ProxyObject>().extra(0).toObject());
|
||||||
|
@ -1023,13 +1028,13 @@ ScriptedIndirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedIndirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
ScriptedIndirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args)
|
CallArgs args) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::nativeCall(cx, test, impl, args);
|
return BaseProxyHandler::nativeCall(cx, test, impl, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSString *
|
JSString *
|
||||||
ScriptedIndirectProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent)
|
ScriptedIndirectProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
assertEnteredPolicy(cx, proxy, JSID_VOID, GET);
|
||||||
if (!proxy->isCallable()) {
|
if (!proxy->isCallable()) {
|
||||||
|
@ -1052,42 +1057,42 @@ class ScriptedDirectProxyHandler : public DirectProxyHandler {
|
||||||
virtual ~ScriptedDirectProxyHandler();
|
virtual ~ScriptedDirectProxyHandler();
|
||||||
|
|
||||||
/* ES5 Harmony fundamental proxy traps. */
|
/* ES5 Harmony fundamental proxy traps. */
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* ES5 Harmony derived proxy traps. */
|
/* ES5 Harmony derived proxy traps. */
|
||||||
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE {
|
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE {
|
||||||
return BaseProxyHandler::hasOwn(cx, proxy, id, bp);
|
return BaseProxyHandler::hasOwn(cx, proxy, id, bp);
|
||||||
}
|
}
|
||||||
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
||||||
bool strict, MutableHandleValue vp) MOZ_OVERRIDE;
|
bool strict, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
// Kick keys out to getOwnPropertyName and then filter. [[GetOwnProperty]] could potentially
|
// Kick keys out to getOwnPropertyName and then filter. [[GetOwnProperty]] could potentially
|
||||||
// change the enumerability of the target's properties.
|
// change the enumerability of the target's properties.
|
||||||
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE {
|
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE {
|
||||||
return BaseProxyHandler::keys(cx, proxy, props);
|
return BaseProxyHandler::keys(cx, proxy, props);
|
||||||
}
|
}
|
||||||
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* ES6 Harmony traps */
|
/* ES6 Harmony traps */
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* Spidermonkey extensions. */
|
/* Spidermonkey extensions. */
|
||||||
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool isScripted() MOZ_OVERRIDE { return true; }
|
virtual bool isScripted() const MOZ_OVERRIDE { return true; }
|
||||||
|
|
||||||
static const ScriptedDirectProxyHandler singleton;
|
static const ScriptedDirectProxyHandler singleton;
|
||||||
};
|
};
|
||||||
|
@ -1364,7 +1369,7 @@ ScriptedDirectProxyHandler::~ScriptedDirectProxyHandler()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy)
|
ScriptedDirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
// step a
|
// step a
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1411,7 +1416,7 @@ ScriptedDirectProxyHandler::preventExtensions(JSContext *cx, HandleObject proxy)
|
||||||
// FIXME: Move to Proxy::getPropertyDescriptor once ScriptedIndirectProxy is removed
|
// FIXME: Move to Proxy::getPropertyDescriptor once ScriptedIndirectProxy is removed
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
ScriptedDirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
JS_CHECK_RECURSION(cx, return false);
|
JS_CHECK_RECURSION(cx, return false);
|
||||||
|
|
||||||
|
@ -1432,7 +1437,7 @@ ScriptedDirectProxyHandler::getPropertyDescriptor(JSContext *cx, HandleObject pr
|
||||||
// ES6 (5 April 2014) Proxy.[[GetOwnProperty]](P)
|
// ES6 (5 April 2014) Proxy.[[GetOwnProperty]](P)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
ScriptedDirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
// step 2
|
// step 2
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1548,7 +1553,7 @@ ScriptedDirectProxyHandler::getOwnPropertyDescriptor(JSContext *cx, HandleObject
|
||||||
// ES6 (5 April 2014) Proxy.[[DefineOwnProperty]](O,P)
|
// ES6 (5 April 2014) Proxy.[[DefineOwnProperty]](O,P)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
ScriptedDirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
// step 2
|
// step 2
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1634,7 +1639,7 @@ ScriptedDirectProxyHandler::defineProperty(JSContext *cx, HandleObject proxy, Ha
|
||||||
// ES6 (5 April 2014) Proxy.[[OwnPropertyKeys]](O)
|
// ES6 (5 April 2014) Proxy.[[OwnPropertyKeys]](O)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
ScriptedDirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
// step 1
|
// step 1
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1676,7 +1681,7 @@ ScriptedDirectProxyHandler::getOwnPropertyNames(JSContext *cx, HandleObject prox
|
||||||
|
|
||||||
// ES6 (5 April 2014) Proxy.[[Delete]](P)
|
// ES6 (5 April 2014) Proxy.[[Delete]](P)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
ScriptedDirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
// step 2
|
// step 2
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1733,7 +1738,7 @@ ScriptedDirectProxyHandler::delete_(JSContext *cx, HandleObject proxy, HandleId
|
||||||
|
|
||||||
// 12.6.4 The for-in Statement, step 6
|
// 12.6.4 The for-in Statement, step 6
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props)
|
ScriptedDirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
// step a
|
// step a
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1776,7 +1781,7 @@ ScriptedDirectProxyHandler::enumerate(JSContext *cx, HandleObject proxy, AutoIdV
|
||||||
|
|
||||||
// Proxy.[[HasProperty]](P)
|
// Proxy.[[HasProperty]](P)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp)
|
ScriptedDirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
// step 1
|
// step 1
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1838,7 +1843,7 @@ ScriptedDirectProxyHandler::has(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
// Proxy.[[GetP]](P, Receiver)
|
// Proxy.[[GetP]](P, Receiver)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
ScriptedDirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp)
|
HandleId id, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// step 1
|
// step 1
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1901,7 +1906,7 @@ ScriptedDirectProxyHandler::get(JSContext *cx, HandleObject proxy, HandleObject
|
||||||
// Proxy.[[SetP]](P, V, Receiver)
|
// Proxy.[[SetP]](P, V, Receiver)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
ScriptedDirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp)
|
HandleId id, bool strict, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// step 1
|
// step 1
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -1966,7 +1971,7 @@ ScriptedDirectProxyHandler::set(JSContext *cx, HandleObject proxy, HandleObject
|
||||||
|
|
||||||
// ES6 (5 April, 2014) 9.5.3 Proxy.[[IsExtensible]](P)
|
// ES6 (5 April, 2014) 9.5.3 Proxy.[[IsExtensible]](P)
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible)
|
ScriptedDirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const
|
||||||
{
|
{
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
|
||||||
|
@ -2002,14 +2007,14 @@ ScriptedDirectProxyHandler::isExtensible(JSContext *cx, HandleObject proxy, bool
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
ScriptedDirectProxyHandler::iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// FIXME: Provide a proper implementation for this trap, see bug 787004
|
// FIXME: Provide a proper implementation for this trap, see bug 787004
|
||||||
return DirectProxyHandler::iterate(cx, proxy, flags, vp);
|
return DirectProxyHandler::iterate(cx, proxy, flags, vp);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
ScriptedDirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
// step 1
|
// step 1
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
@ -2047,7 +2052,7 @@ ScriptedDirectProxyHandler::call(JSContext *cx, HandleObject proxy, const CallAr
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ScriptedDirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args)
|
ScriptedDirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
// step 1
|
// step 1
|
||||||
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
RootedObject handler(cx, GetDirectProxyHandlerObject(proxy));
|
||||||
|
|
118
js/src/jsproxy.h
118
js/src/jsproxy.h
|
@ -136,7 +136,7 @@ class JS_FRIEND_API(BaseProxyHandler)
|
||||||
return offsetof(BaseProxyHandler, mFamily);
|
return offsetof(BaseProxyHandler, mFamily);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool finalizeInBackground(Value priv) {
|
virtual bool finalizeInBackground(Value priv) const {
|
||||||
/*
|
/*
|
||||||
* Called on creation of a proxy to determine whether its finalize
|
* Called on creation of a proxy to determine whether its finalize
|
||||||
* method can be finalized on the background thread.
|
* method can be finalized on the background thread.
|
||||||
|
@ -169,59 +169,59 @@ class JS_FRIEND_API(BaseProxyHandler)
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual bool enter(JSContext *cx, HandleObject wrapper, HandleId id, Action act,
|
virtual bool enter(JSContext *cx, HandleObject wrapper, HandleId id, Action act,
|
||||||
bool *bp);
|
bool *bp) const;
|
||||||
|
|
||||||
/* ES5 Harmony fundamental proxy traps. */
|
/* ES5 Harmony fundamental proxy traps. */
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) = 0;
|
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) const = 0;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) = 0;
|
MutableHandle<JSPropertyDescriptor> desc) const = 0;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy,
|
||||||
HandleId id, MutableHandle<JSPropertyDescriptor> desc) = 0;
|
HandleId id, MutableHandle<JSPropertyDescriptor> desc) const = 0;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) = 0;
|
MutableHandle<JSPropertyDescriptor> desc) const = 0;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props) = 0;
|
AutoIdVector &props) const = 0;
|
||||||
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) = 0;
|
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const = 0;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) = 0;
|
virtual bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const = 0;
|
||||||
|
|
||||||
/* ES5 Harmony derived proxy traps. */
|
/* ES5 Harmony derived proxy traps. */
|
||||||
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp);
|
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const;
|
||||||
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp);
|
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const;
|
||||||
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp);
|
HandleId id, MutableHandleValue vp) const;
|
||||||
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp);
|
HandleId id, bool strict, MutableHandleValue vp) const;
|
||||||
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props);
|
virtual bool keys(JSContext *cx, HandleObject proxy, AutoIdVector &props) const;
|
||||||
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp);
|
MutableHandleValue vp) const;
|
||||||
|
|
||||||
/* Spidermonkey extensions. */
|
/* Spidermonkey extensions. */
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) = 0;
|
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const = 0;
|
||||||
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args);
|
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) const;
|
||||||
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args);
|
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const;
|
||||||
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl, CallArgs args);
|
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl, CallArgs args) const;
|
||||||
virtual bool hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v, bool *bp);
|
virtual bool hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v, bool *bp) const;
|
||||||
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx);
|
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx) const;
|
||||||
virtual const char *className(JSContext *cx, HandleObject proxy);
|
virtual const char *className(JSContext *cx, HandleObject proxy) const;
|
||||||
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy, unsigned indent);
|
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) const;
|
||||||
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g);
|
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) const;
|
||||||
virtual bool defaultValue(JSContext *cx, HandleObject obj, JSType hint, MutableHandleValue vp);
|
virtual bool defaultValue(JSContext *cx, HandleObject obj, JSType hint, MutableHandleValue vp) const;
|
||||||
virtual void finalize(JSFreeOp *fop, JSObject *proxy);
|
virtual void finalize(JSFreeOp *fop, JSObject *proxy) const;
|
||||||
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop);
|
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop) const;
|
||||||
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto, bool *bp);
|
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto, bool *bp) const;
|
||||||
|
|
||||||
// These two hooks must be overridden, or not overridden, in tandem -- no
|
// These two hooks must be overridden, or not overridden, in tandem -- no
|
||||||
// overriding just one!
|
// overriding just one!
|
||||||
virtual bool watch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id,
|
virtual bool watch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id,
|
||||||
JS::HandleObject callable);
|
JS::HandleObject callable) const;
|
||||||
virtual bool unwatch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id);
|
virtual bool unwatch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id) const;
|
||||||
|
|
||||||
virtual bool slice(JSContext *cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
virtual bool slice(JSContext *cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
||||||
HandleObject result);
|
HandleObject result) const;
|
||||||
|
|
||||||
/* See comment for weakmapKeyDelegateOp in js/Class.h. */
|
/* See comment for weakmapKeyDelegateOp in js/Class.h. */
|
||||||
virtual JSObject *weakmapKeyDelegate(JSObject *proxy);
|
virtual JSObject *weakmapKeyDelegate(JSObject *proxy) const;
|
||||||
virtual bool isScripted() { return false; }
|
virtual bool isScripted() const { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -241,52 +241,54 @@ class JS_PUBLIC_API(DirectProxyHandler) : public BaseProxyHandler
|
||||||
bool hasSecurityPolicy = false);
|
bool hasSecurityPolicy = false);
|
||||||
|
|
||||||
/* ES5 Harmony fundamental proxy traps. */
|
/* ES5 Harmony fundamental proxy traps. */
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool delete_(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject proxy,
|
virtual bool enumerate(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* ES5 Harmony derived proxy traps. */
|
/* ES5 Harmony derived proxy traps. */
|
||||||
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool has(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id,
|
virtual bool hasOwn(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
virtual bool get(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp) MOZ_OVERRIDE;
|
HandleId id, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
virtual bool set(JSContext *cx, HandleObject proxy, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp) MOZ_OVERRIDE;
|
HandleId id, bool strict, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, HandleObject proxy,
|
virtual bool keys(JSContext *cx, HandleObject proxy,
|
||||||
AutoIdVector &props) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
virtual bool iterate(JSContext *cx, HandleObject proxy, unsigned flags,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* Spidermonkey extensions. */
|
/* Spidermonkey extensions. */
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args) MOZ_OVERRIDE;
|
CallArgs args) const MOZ_OVERRIDE;
|
||||||
virtual bool hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
virtual bool hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop);
|
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy,
|
||||||
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto, bool *bp);
|
MutableHandleObject protop) const MOZ_OVERRIDE;
|
||||||
|
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto,
|
||||||
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
|
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
|
||||||
JSContext *cx) MOZ_OVERRIDE;
|
JSContext *cx) const MOZ_OVERRIDE;
|
||||||
virtual const char *className(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual const char *className(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy,
|
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy,
|
||||||
unsigned indent) MOZ_OVERRIDE;
|
unsigned indent) const MOZ_OVERRIDE;
|
||||||
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy,
|
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy,
|
||||||
RegExpGuard *g) MOZ_OVERRIDE;
|
RegExpGuard *g) const MOZ_OVERRIDE;
|
||||||
virtual JSObject *weakmapKeyDelegate(JSObject *proxy);
|
virtual JSObject *weakmapKeyDelegate(JSObject *proxy) const MOZ_OVERRIDE;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -30,7 +30,7 @@ const char js::sWrapperFamily = 0;
|
||||||
* 720619.
|
* 720619.
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
Wrapper::defaultValue(JSContext *cx, HandleObject proxy, JSType hint, MutableHandleValue vp)
|
Wrapper::defaultValue(JSContext *cx, HandleObject proxy, JSType hint, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
vp.set(ObjectValue(*proxy->as<ProxyObject>().target()));
|
vp.set(ObjectValue(*proxy->as<ProxyObject>().target()));
|
||||||
if (hint == JSTYPE_VOID)
|
if (hint == JSTYPE_VOID)
|
||||||
|
@ -180,7 +180,7 @@ CrossCompartmentWrapper::~CrossCompartmentWrapper()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Wrapper::finalizeInBackground(Value priv)
|
bool Wrapper::finalizeInBackground(Value priv) const
|
||||||
{
|
{
|
||||||
if (!priv.isObject())
|
if (!priv.isObject())
|
||||||
return true;
|
return true;
|
||||||
|
@ -210,7 +210,7 @@ bool Wrapper::finalizeInBackground(Value priv)
|
||||||
#define NOTHING (true)
|
#define NOTHING (true)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible)
|
CrossCompartmentWrapper::isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -219,7 +219,7 @@ CrossCompartmentWrapper::isExtensible(JSContext *cx, HandleObject wrapper, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::preventExtensions(JSContext *cx, HandleObject wrapper)
|
CrossCompartmentWrapper::preventExtensions(JSContext *cx, HandleObject wrapper) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -229,7 +229,7 @@ CrossCompartmentWrapper::preventExtensions(JSContext *cx, HandleObject wrapper)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
CrossCompartmentWrapper::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -239,7 +239,7 @@ CrossCompartmentWrapper::getPropertyDescriptor(JSContext *cx, HandleObject wrapp
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
CrossCompartmentWrapper::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -249,7 +249,7 @@ CrossCompartmentWrapper::getOwnPropertyDescriptor(JSContext *cx, HandleObject wr
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
CrossCompartmentWrapper::defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
Rooted<PropertyDescriptor> desc2(cx, desc);
|
Rooted<PropertyDescriptor> desc2(cx, desc);
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
|
@ -260,7 +260,7 @@ CrossCompartmentWrapper::defineProperty(JSContext *cx, HandleObject wrapper, Han
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
CrossCompartmentWrapper::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -269,7 +269,7 @@ CrossCompartmentWrapper::getOwnPropertyNames(JSContext *cx, HandleObject wrapper
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp)
|
CrossCompartmentWrapper::delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -278,7 +278,7 @@ CrossCompartmentWrapper::delete_(JSContext *cx, HandleObject wrapper, HandleId i
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props)
|
CrossCompartmentWrapper::enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -287,7 +287,7 @@ CrossCompartmentWrapper::enumerate(JSContext *cx, HandleObject wrapper, AutoIdVe
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::has(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp)
|
CrossCompartmentWrapper::has(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -296,7 +296,7 @@ CrossCompartmentWrapper::has(JSContext *cx, HandleObject wrapper, HandleId id, b
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::hasOwn(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp)
|
CrossCompartmentWrapper::hasOwn(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -306,7 +306,7 @@ CrossCompartmentWrapper::hasOwn(JSContext *cx, HandleObject wrapper, HandleId id
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::get(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
CrossCompartmentWrapper::get(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp)
|
HandleId id, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
RootedObject receiverCopy(cx, receiver);
|
RootedObject receiverCopy(cx, receiver);
|
||||||
{
|
{
|
||||||
|
@ -322,7 +322,7 @@ CrossCompartmentWrapper::get(JSContext *cx, HandleObject wrapper, HandleObject r
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::set(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
CrossCompartmentWrapper::set(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp)
|
HandleId id, bool strict, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
RootedObject receiverCopy(cx, receiver);
|
RootedObject receiverCopy(cx, receiver);
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
|
@ -333,7 +333,7 @@ CrossCompartmentWrapper::set(JSContext *cx, HandleObject wrapper, HandleObject r
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::keys(JSContext *cx, HandleObject wrapper, AutoIdVector &props)
|
CrossCompartmentWrapper::keys(JSContext *cx, HandleObject wrapper, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -416,7 +416,7 @@ Reify(JSContext *cx, JSCompartment *origin, MutableHandleValue vp)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::iterate(JSContext *cx, HandleObject wrapper, unsigned flags,
|
CrossCompartmentWrapper::iterate(JSContext *cx, HandleObject wrapper, unsigned flags,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
AutoCompartment call(cx, wrappedObject(wrapper));
|
AutoCompartment call(cx, wrappedObject(wrapper));
|
||||||
|
@ -430,7 +430,7 @@ CrossCompartmentWrapper::iterate(JSContext *cx, HandleObject wrapper, unsigned f
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::call(JSContext *cx, HandleObject wrapper, const CallArgs &args)
|
CrossCompartmentWrapper::call(JSContext *cx, HandleObject wrapper, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
RootedObject wrapped(cx, wrappedObject(wrapper));
|
RootedObject wrapped(cx, wrappedObject(wrapper));
|
||||||
|
|
||||||
|
@ -454,7 +454,7 @@ CrossCompartmentWrapper::call(JSContext *cx, HandleObject wrapper, const CallArg
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::construct(JSContext *cx, HandleObject wrapper, const CallArgs &args)
|
CrossCompartmentWrapper::construct(JSContext *cx, HandleObject wrapper, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
RootedObject wrapped(cx, wrappedObject(wrapper));
|
RootedObject wrapped(cx, wrappedObject(wrapper));
|
||||||
{
|
{
|
||||||
|
@ -472,7 +472,7 @@ CrossCompartmentWrapper::construct(JSContext *cx, HandleObject wrapper, const Ca
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
CrossCompartmentWrapper::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs srcArgs)
|
CallArgs srcArgs) const
|
||||||
{
|
{
|
||||||
RootedObject wrapper(cx, &srcArgs.thisv().toObject());
|
RootedObject wrapper(cx, &srcArgs.thisv().toObject());
|
||||||
JS_ASSERT(srcArgs.thisv().isMagic(JS_IS_CONSTRUCTING) ||
|
JS_ASSERT(srcArgs.thisv().isMagic(JS_IS_CONSTRUCTING) ||
|
||||||
|
@ -521,7 +521,7 @@ CrossCompartmentWrapper::nativeCall(JSContext *cx, IsAcceptableThis test, Native
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::hasInstance(JSContext *cx, HandleObject wrapper, MutableHandleValue v,
|
CrossCompartmentWrapper::hasInstance(JSContext *cx, HandleObject wrapper, MutableHandleValue v,
|
||||||
bool *bp)
|
bool *bp) const
|
||||||
{
|
{
|
||||||
AutoCompartment call(cx, wrappedObject(wrapper));
|
AutoCompartment call(cx, wrappedObject(wrapper));
|
||||||
if (!cx->compartment()->wrap(cx, v))
|
if (!cx->compartment()->wrap(cx, v))
|
||||||
|
@ -530,14 +530,14 @@ CrossCompartmentWrapper::hasInstance(JSContext *cx, HandleObject wrapper, Mutabl
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
CrossCompartmentWrapper::className(JSContext *cx, HandleObject wrapper)
|
CrossCompartmentWrapper::className(JSContext *cx, HandleObject wrapper) const
|
||||||
{
|
{
|
||||||
AutoCompartment call(cx, wrappedObject(wrapper));
|
AutoCompartment call(cx, wrappedObject(wrapper));
|
||||||
return Wrapper::className(cx, wrapper);
|
return Wrapper::className(cx, wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSString *
|
JSString *
|
||||||
CrossCompartmentWrapper::fun_toString(JSContext *cx, HandleObject wrapper, unsigned indent)
|
CrossCompartmentWrapper::fun_toString(JSContext *cx, HandleObject wrapper, unsigned indent) const
|
||||||
{
|
{
|
||||||
RootedString str(cx);
|
RootedString str(cx);
|
||||||
{
|
{
|
||||||
|
@ -552,7 +552,7 @@ CrossCompartmentWrapper::fun_toString(JSContext *cx, HandleObject wrapper, unsig
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::regexp_toShared(JSContext *cx, HandleObject wrapper, RegExpGuard *g)
|
CrossCompartmentWrapper::regexp_toShared(JSContext *cx, HandleObject wrapper, RegExpGuard *g) const
|
||||||
{
|
{
|
||||||
RegExpGuard wrapperGuard(cx);
|
RegExpGuard wrapperGuard(cx);
|
||||||
{
|
{
|
||||||
|
@ -568,7 +568,7 @@ CrossCompartmentWrapper::regexp_toShared(JSContext *cx, HandleObject wrapper, Re
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::defaultValue(JSContext *cx, HandleObject wrapper, JSType hint,
|
CrossCompartmentWrapper::defaultValue(JSContext *cx, HandleObject wrapper, JSType hint,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
NOTHING,
|
NOTHING,
|
||||||
|
@ -578,7 +578,7 @@ CrossCompartmentWrapper::defaultValue(JSContext *cx, HandleObject wrapper, JSTyp
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::getPrototypeOf(JSContext *cx, HandleObject wrapper,
|
CrossCompartmentWrapper::getPrototypeOf(JSContext *cx, HandleObject wrapper,
|
||||||
MutableHandleObject protop)
|
MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
RootedObject wrapped(cx, wrappedObject(wrapper));
|
RootedObject wrapped(cx, wrappedObject(wrapper));
|
||||||
|
@ -594,7 +594,7 @@ CrossCompartmentWrapper::getPrototypeOf(JSContext *cx, HandleObject wrapper,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CrossCompartmentWrapper::setPrototypeOf(JSContext *cx, HandleObject wrapper,
|
CrossCompartmentWrapper::setPrototypeOf(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject proto, bool *bp)
|
HandleObject proto, bool *bp) const
|
||||||
{
|
{
|
||||||
RootedObject protoCopy(cx, proto);
|
RootedObject protoCopy(cx, proto);
|
||||||
PIERCE(cx, wrapper,
|
PIERCE(cx, wrapper,
|
||||||
|
@ -615,7 +615,7 @@ SecurityWrapper<Base>::SecurityWrapper(unsigned flags, bool hasPrototype)
|
||||||
|
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible)
|
SecurityWrapper<Base>::isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible) const
|
||||||
{
|
{
|
||||||
// Just like BaseProxyHandler, SecurityWrappers claim by default to always
|
// Just like BaseProxyHandler, SecurityWrappers claim by default to always
|
||||||
// be extensible, so as not to leak information about the state of the
|
// be extensible, so as not to leak information about the state of the
|
||||||
|
@ -626,7 +626,7 @@ SecurityWrapper<Base>::isExtensible(JSContext *cx, HandleObject wrapper, bool *e
|
||||||
|
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::preventExtensions(JSContext *cx, HandleObject wrapper)
|
SecurityWrapper<Base>::preventExtensions(JSContext *cx, HandleObject wrapper) const
|
||||||
{
|
{
|
||||||
// See above.
|
// See above.
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
||||||
|
@ -636,7 +636,7 @@ SecurityWrapper<Base>::preventExtensions(JSContext *cx, HandleObject wrapper)
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::enter(JSContext *cx, HandleObject wrapper, HandleId id,
|
SecurityWrapper<Base>::enter(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
Wrapper::Action act, bool *bp)
|
Wrapper::Action act, bool *bp) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
||||||
*bp = false;
|
*bp = false;
|
||||||
|
@ -646,7 +646,7 @@ SecurityWrapper<Base>::enter(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
SecurityWrapper<Base>::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args)
|
CallArgs args) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
||||||
return false;
|
return false;
|
||||||
|
@ -655,7 +655,7 @@ SecurityWrapper<Base>::nativeCall(JSContext *cx, IsAcceptableThis test, NativeIm
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::setPrototypeOf(JSContext *cx, HandleObject wrapper,
|
SecurityWrapper<Base>::setPrototypeOf(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject proto, bool *bp)
|
HandleObject proto, bool *bp) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
||||||
return false;
|
return false;
|
||||||
|
@ -667,21 +667,21 @@ SecurityWrapper<Base>::setPrototypeOf(JSContext *cx, HandleObject wrapper,
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::defaultValue(JSContext *cx, HandleObject wrapper,
|
SecurityWrapper<Base>::defaultValue(JSContext *cx, HandleObject wrapper,
|
||||||
JSType hint, MutableHandleValue vp)
|
JSType hint, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
return DefaultValue(cx, wrapper, hint, vp);
|
return DefaultValue(cx, wrapper, hint, vp);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::objectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx)
|
SecurityWrapper<Base>::objectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx) const
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::regexp_toShared(JSContext *cx, HandleObject obj, RegExpGuard *g)
|
SecurityWrapper<Base>::regexp_toShared(JSContext *cx, HandleObject obj, RegExpGuard *g) const
|
||||||
{
|
{
|
||||||
return Base::regexp_toShared(cx, obj, g);
|
return Base::regexp_toShared(cx, obj, g);
|
||||||
}
|
}
|
||||||
|
@ -689,7 +689,7 @@ SecurityWrapper<Base>::regexp_toShared(JSContext *cx, HandleObject obj, RegExpGu
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::defineProperty(JSContext *cx, HandleObject wrapper,
|
SecurityWrapper<Base>::defineProperty(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, MutableHandle<PropertyDescriptor> desc)
|
HandleId id, MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
if (desc.getter() || desc.setter()) {
|
if (desc.getter() || desc.setter()) {
|
||||||
JSString *str = IdToString(cx, id);
|
JSString *str = IdToString(cx, id);
|
||||||
|
@ -705,7 +705,7 @@ SecurityWrapper<Base>::defineProperty(JSContext *cx, HandleObject wrapper,
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::watch(JSContext *cx, HandleObject proxy,
|
SecurityWrapper<Base>::watch(JSContext *cx, HandleObject proxy,
|
||||||
HandleId id, HandleObject callable)
|
HandleId id, HandleObject callable) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
||||||
return false;
|
return false;
|
||||||
|
@ -714,7 +714,7 @@ SecurityWrapper<Base>::watch(JSContext *cx, HandleObject proxy,
|
||||||
template <class Base>
|
template <class Base>
|
||||||
bool
|
bool
|
||||||
SecurityWrapper<Base>::unwatch(JSContext *cx, HandleObject proxy,
|
SecurityWrapper<Base>::unwatch(JSContext *cx, HandleObject proxy,
|
||||||
HandleId id)
|
HandleId id) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_UNWRAP_DENIED);
|
||||||
return false;
|
return false;
|
||||||
|
@ -730,7 +730,7 @@ DeadObjectProxy::DeadObjectProxy()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible)
|
DeadObjectProxy::isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const
|
||||||
{
|
{
|
||||||
// This is kind of meaningless, but dead-object semantics aside,
|
// This is kind of meaningless, but dead-object semantics aside,
|
||||||
// [[Extensible]] always being true is consistent with other proxy types.
|
// [[Extensible]] always being true is consistent with other proxy types.
|
||||||
|
@ -739,7 +739,7 @@ DeadObjectProxy::isExtensible(JSContext *cx, HandleObject proxy, bool *extensibl
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::preventExtensions(JSContext *cx, HandleObject proxy)
|
DeadObjectProxy::preventExtensions(JSContext *cx, HandleObject proxy) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
|
@ -747,7 +747,7 @@ DeadObjectProxy::preventExtensions(JSContext *cx, HandleObject proxy)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
DeadObjectProxy::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
|
@ -755,7 +755,7 @@ DeadObjectProxy::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, Hand
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
DeadObjectProxy::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
|
@ -763,7 +763,7 @@ DeadObjectProxy::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, H
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
DeadObjectProxy::defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc)
|
MutableHandle<PropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
|
@ -771,89 +771,92 @@ DeadObjectProxy::defineProperty(JSContext *cx, HandleObject wrapper, HandleId id
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
DeadObjectProxy::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp)
|
DeadObjectProxy::delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props)
|
DeadObjectProxy::enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::call(JSContext *cx, HandleObject wrapper, const CallArgs &args)
|
DeadObjectProxy::call(JSContext *cx, HandleObject wrapper, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::construct(JSContext *cx, HandleObject wrapper, const CallArgs &args)
|
DeadObjectProxy::construct(JSContext *cx, HandleObject wrapper, const CallArgs &args) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl, CallArgs args)
|
DeadObjectProxy::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
|
CallArgs args) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v, bool *bp)
|
DeadObjectProxy::hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
||||||
|
bool *bp) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::objectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx)
|
DeadObjectProxy::objectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
DeadObjectProxy::className(JSContext *cx, HandleObject wrapper)
|
DeadObjectProxy::className(JSContext *cx, HandleObject wrapper) const
|
||||||
{
|
{
|
||||||
return "DeadObject";
|
return "DeadObject";
|
||||||
}
|
}
|
||||||
|
|
||||||
JSString *
|
JSString *
|
||||||
DeadObjectProxy::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent)
|
DeadObjectProxy::fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) const
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g)
|
DeadObjectProxy::regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::defaultValue(JSContext *cx, HandleObject obj, JSType hint, MutableHandleValue vp)
|
DeadObjectProxy::defaultValue(JSContext *cx, HandleObject obj, JSType hint,
|
||||||
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_DEAD_OBJECT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DeadObjectProxy::getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop)
|
DeadObjectProxy::getPrototypeOf(JSContext *cx, HandleObject proxy, MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
protop.set(nullptr);
|
protop.set(nullptr);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -66,7 +66,7 @@ class JS_FRIEND_API(Wrapper) : public DirectProxyHandler
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual bool defaultValue(JSContext *cx, HandleObject obj, JSType hint,
|
virtual bool defaultValue(JSContext *cx, HandleObject obj, JSType hint,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static JSObject *New(JSContext *cx, JSObject *obj, JSObject *parent, const Wrapper *handler,
|
static JSObject *New(JSContext *cx, JSObject *obj, JSObject *parent, const Wrapper *handler,
|
||||||
const WrapperOptions *options = nullptr);
|
const WrapperOptions *options = nullptr);
|
||||||
|
@ -85,7 +85,7 @@ class JS_FRIEND_API(Wrapper) : public DirectProxyHandler
|
||||||
|
|
||||||
virtual ~Wrapper();
|
virtual ~Wrapper();
|
||||||
|
|
||||||
virtual bool finalizeInBackground(Value priv) MOZ_OVERRIDE;
|
virtual bool finalizeInBackground(Value priv) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const Wrapper singleton;
|
static const Wrapper singleton;
|
||||||
static const Wrapper singletonWithPrototype;
|
static const Wrapper singletonWithPrototype;
|
||||||
|
@ -109,47 +109,47 @@ class JS_FRIEND_API(CrossCompartmentWrapper) : public Wrapper
|
||||||
virtual ~CrossCompartmentWrapper();
|
virtual ~CrossCompartmentWrapper();
|
||||||
|
|
||||||
/* ES5 Harmony fundamental wrapper traps. */
|
/* ES5 Harmony fundamental wrapper traps. */
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject wrapper) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject wrapper) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* ES5 Harmony derived wrapper traps. */
|
/* ES5 Harmony derived wrapper traps. */
|
||||||
virtual bool has(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool has(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool hasOwn(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
virtual bool get(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
||||||
HandleId id, MutableHandleValue vp) MOZ_OVERRIDE;
|
HandleId id, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
virtual bool set(JSContext *cx, HandleObject wrapper, HandleObject receiver,
|
||||||
HandleId id, bool strict, MutableHandleValue vp) MOZ_OVERRIDE;
|
HandleId id, bool strict, MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, HandleObject wrapper, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool keys(JSContext *cx, HandleObject wrapper, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, HandleObject wrapper, unsigned flags,
|
virtual bool iterate(JSContext *cx, HandleObject wrapper, unsigned flags,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* Spidermonkey extensions. */
|
/* Spidermonkey extensions. */
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool call(JSContext *cx, HandleObject wrapper, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool call(JSContext *cx, HandleObject wrapper, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, HandleObject wrapper, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool construct(JSContext *cx, HandleObject wrapper, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args) MOZ_OVERRIDE;
|
CallArgs args) const MOZ_OVERRIDE;
|
||||||
virtual bool hasInstance(JSContext *cx, HandleObject wrapper, MutableHandleValue v,
|
virtual bool hasInstance(JSContext *cx, HandleObject wrapper, MutableHandleValue v,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual const char *className(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual const char *className(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual JSString *fun_toString(JSContext *cx, HandleObject wrapper,
|
virtual JSString *fun_toString(JSContext *cx, HandleObject wrapper,
|
||||||
unsigned indent) MOZ_OVERRIDE;
|
unsigned indent) const MOZ_OVERRIDE;
|
||||||
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) MOZ_OVERRIDE;
|
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) const MOZ_OVERRIDE;
|
||||||
virtual bool defaultValue(JSContext *cx, HandleObject wrapper, JSType hint,
|
virtual bool defaultValue(JSContext *cx, HandleObject wrapper, JSType hint,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy,
|
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy,
|
||||||
MutableHandleObject protop) MOZ_OVERRIDE;
|
MutableHandleObject protop) const MOZ_OVERRIDE;
|
||||||
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto,
|
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const CrossCompartmentWrapper singleton;
|
static const CrossCompartmentWrapper singleton;
|
||||||
static const CrossCompartmentWrapper singletonWithPrototype;
|
static const CrossCompartmentWrapper singletonWithPrototype;
|
||||||
|
@ -170,26 +170,26 @@ class JS_FRIEND_API(SecurityWrapper) : public Base
|
||||||
public:
|
public:
|
||||||
explicit SecurityWrapper(unsigned flags, bool hasPrototype = false);
|
explicit SecurityWrapper(unsigned flags, bool hasPrototype = false);
|
||||||
|
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject wrapper, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject wrapper) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject wrapper) const MOZ_OVERRIDE;
|
||||||
virtual bool enter(JSContext *cx, HandleObject wrapper, HandleId id, Wrapper::Action act,
|
virtual bool enter(JSContext *cx, HandleObject wrapper, HandleId id, Wrapper::Action act,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args) MOZ_OVERRIDE;
|
CallArgs args) const MOZ_OVERRIDE;
|
||||||
virtual bool defaultValue(JSContext *cx, HandleObject wrapper, JSType hint,
|
virtual bool defaultValue(JSContext *cx, HandleObject wrapper, JSType hint,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
|
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
|
||||||
JSContext *cx) MOZ_OVERRIDE;
|
JSContext *cx) const MOZ_OVERRIDE;
|
||||||
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) MOZ_OVERRIDE;
|
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto,
|
virtual bool setPrototypeOf(JSContext *cx, HandleObject proxy, HandleObject proto,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool watch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id,
|
virtual bool watch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id,
|
||||||
JS::HandleObject callable) MOZ_OVERRIDE;
|
JS::HandleObject callable) const MOZ_OVERRIDE;
|
||||||
virtual bool unwatch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id) MOZ_OVERRIDE;
|
virtual bool unwatch(JSContext *cx, JS::HandleObject proxy, JS::HandleId id) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allow our subclasses to select the superclass behavior they want without
|
* Allow our subclasses to select the superclass behavior they want without
|
||||||
|
@ -211,35 +211,35 @@ class JS_FRIEND_API(DeadObjectProxy) : public BaseProxyHandler
|
||||||
explicit DeadObjectProxy();
|
explicit DeadObjectProxy();
|
||||||
|
|
||||||
/* ES5 Harmony fundamental wrapper traps. */
|
/* ES5 Harmony fundamental wrapper traps. */
|
||||||
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
virtual bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
virtual bool getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props) MOZ_OVERRIDE;
|
AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) MOZ_OVERRIDE;
|
virtual bool delete_(JSContext *cx, HandleObject wrapper, HandleId id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props) MOZ_OVERRIDE;
|
virtual bool enumerate(JSContext *cx, HandleObject wrapper, AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* Spidermonkey extensions. */
|
/* Spidermonkey extensions. */
|
||||||
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
|
virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
|
||||||
CallArgs args) MOZ_OVERRIDE;
|
CallArgs args) const MOZ_OVERRIDE;
|
||||||
virtual bool hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
virtual bool hasInstance(JSContext *cx, HandleObject proxy, MutableHandleValue v,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
|
virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
|
||||||
JSContext *cx) MOZ_OVERRIDE;
|
JSContext *cx) const MOZ_OVERRIDE;
|
||||||
virtual const char *className(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE;
|
virtual const char *className(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE;
|
||||||
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) MOZ_OVERRIDE;
|
virtual JSString *fun_toString(JSContext *cx, HandleObject proxy, unsigned indent) const MOZ_OVERRIDE;
|
||||||
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) MOZ_OVERRIDE;
|
virtual bool regexp_toShared(JSContext *cx, HandleObject proxy, RegExpGuard *g) const MOZ_OVERRIDE;
|
||||||
virtual bool defaultValue(JSContext *cx, HandleObject obj, JSType hint,
|
virtual bool defaultValue(JSContext *cx, HandleObject obj, JSType hint,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE;
|
MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy,
|
virtual bool getPrototypeOf(JSContext *cx, HandleObject proxy,
|
||||||
MutableHandleObject protop) MOZ_OVERRIDE;
|
MutableHandleObject protop) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const DeadObjectProxy singleton;
|
static const DeadObjectProxy singleton;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1141,7 +1141,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
*/
|
*/
|
||||||
bool handleUnaliasedAccess(JSContext *cx, Handle<DebugScopeObject*> debugScope,
|
bool handleUnaliasedAccess(JSContext *cx, Handle<DebugScopeObject*> debugScope,
|
||||||
Handle<ScopeObject*> scope, jsid id, Action action,
|
Handle<ScopeObject*> scope, jsid id, Action action,
|
||||||
MutableHandleValue vp, AccessResult *accessResult)
|
MutableHandleValue vp, AccessResult *accessResult) const
|
||||||
{
|
{
|
||||||
JS_ASSERT(&debugScope->scope() == scope);
|
JS_ASSERT(&debugScope->scope() == scope);
|
||||||
*accessResult = ACCESS_GENERIC;
|
*accessResult = ACCESS_GENERIC;
|
||||||
|
@ -1318,7 +1318,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
|
|
||||||
DebugScopeProxy() : BaseProxyHandler(&family) {}
|
DebugScopeProxy() : BaseProxyHandler(&family) {}
|
||||||
|
|
||||||
bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE
|
bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
// always [[Extensible]], can't be made non-[[Extensible]], like most
|
// always [[Extensible]], can't be made non-[[Extensible]], like most
|
||||||
// proxies
|
// proxies
|
||||||
|
@ -1326,7 +1326,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool preventExtensions(JSContext *cx, HandleObject proxy) MOZ_OVERRIDE
|
bool preventExtensions(JSContext *cx, HandleObject proxy) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
// See above.
|
// See above.
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_CHANGE_EXTENSIBILITY);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_CHANGE_EXTENSIBILITY);
|
||||||
|
@ -1334,13 +1334,13 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
bool getPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return getOwnPropertyDescriptor(cx, proxy, id, desc);
|
return getOwnPropertyDescriptor(cx, proxy, id, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
bool getOwnPropertyDescriptor(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
Rooted<DebugScopeObject*> debugScope(cx, &proxy->as<DebugScopeObject>());
|
Rooted<DebugScopeObject*> debugScope(cx, &proxy->as<DebugScopeObject>());
|
||||||
Rooted<ScopeObject*> scope(cx, &debugScope->scope());
|
Rooted<ScopeObject*> scope(cx, &debugScope->scope());
|
||||||
|
@ -1388,7 +1388,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE
|
MutableHandleValue vp) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
Rooted<DebugScopeObject*> debugScope(cx, &proxy->as<DebugScopeObject>());
|
Rooted<DebugScopeObject*> debugScope(cx, &proxy->as<DebugScopeObject>());
|
||||||
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
||||||
|
@ -1430,7 +1430,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
* exceptional cases.
|
* exceptional cases.
|
||||||
*/
|
*/
|
||||||
bool getMaybeSentinelValue(JSContext *cx, Handle<DebugScopeObject *> debugScope, HandleId id,
|
bool getMaybeSentinelValue(JSContext *cx, Handle<DebugScopeObject *> debugScope, HandleId id,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
Rooted<ScopeObject*> scope(cx, &debugScope->scope());
|
Rooted<ScopeObject*> scope(cx, &debugScope->scope());
|
||||||
|
|
||||||
|
@ -1460,7 +1460,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id, bool strict,
|
bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id, bool strict,
|
||||||
MutableHandleValue vp) MOZ_OVERRIDE
|
MutableHandleValue vp) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
Rooted<DebugScopeObject*> debugScope(cx, &proxy->as<DebugScopeObject>());
|
Rooted<DebugScopeObject*> debugScope(cx, &proxy->as<DebugScopeObject>());
|
||||||
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
||||||
|
@ -1480,7 +1480,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
bool defineProperty(JSContext *cx, HandleObject proxy, HandleId id,
|
||||||
MutableHandle<PropertyDescriptor> desc) MOZ_OVERRIDE
|
MutableHandle<PropertyDescriptor> desc) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
||||||
|
|
||||||
|
@ -1494,7 +1494,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getScopePropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props,
|
bool getScopePropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props,
|
||||||
unsigned flags)
|
unsigned flags) const
|
||||||
{
|
{
|
||||||
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
Rooted<ScopeObject*> scope(cx, &proxy->as<DebugScopeObject>().scope());
|
||||||
|
|
||||||
|
@ -1529,17 +1529,17 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool getOwnPropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE
|
bool getOwnPropertyNames(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return getScopePropertyNames(cx, proxy, props, JSITER_OWNONLY);
|
return getScopePropertyNames(cx, proxy, props, JSITER_OWNONLY);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) MOZ_OVERRIDE
|
bool enumerate(JSContext *cx, HandleObject proxy, AutoIdVector &props) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
return getScopePropertyNames(cx, proxy, props, 0);
|
return getScopePropertyNames(cx, proxy, props, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool has(JSContext *cx, HandleObject proxy, HandleId id_, bool *bp) MOZ_OVERRIDE
|
bool has(JSContext *cx, HandleObject proxy, HandleId id_, bool *bp) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
RootedId id(cx, id_);
|
RootedId id(cx, id_);
|
||||||
ScopeObject &scopeObj = proxy->as<DebugScopeObject>().scope();
|
ScopeObject &scopeObj = proxy->as<DebugScopeObject>().scope();
|
||||||
|
@ -1572,7 +1572,7 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) MOZ_OVERRIDE
|
bool delete_(JSContext *cx, HandleObject proxy, HandleId id, bool *bp) const MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
RootedValue idval(cx, IdToValue(id));
|
RootedValue idval(cx, IdToValue(id));
|
||||||
return js_ReportValueErrorFlags(cx, JSREPORT_ERROR, JSMSG_CANT_DELETE,
|
return js_ReportValueErrorFlags(cx, JSREPORT_ERROR, JSMSG_CANT_DELETE,
|
||||||
|
|
|
@ -522,7 +522,7 @@ xpc::IsSandboxPrototypeProxy(JSObject *obj)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
xpc::SandboxCallableProxyHandler::call(JSContext *cx, JS::Handle<JSObject*> proxy,
|
xpc::SandboxCallableProxyHandler::call(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
const JS::CallArgs &args)
|
const JS::CallArgs &args) const
|
||||||
{
|
{
|
||||||
// We forward the call to our underlying callable.
|
// We forward the call to our underlying callable.
|
||||||
|
|
||||||
|
@ -638,7 +638,7 @@ bool
|
||||||
xpc::SandboxProxyHandler::getPropertyDescriptor(JSContext *cx,
|
xpc::SandboxProxyHandler::getPropertyDescriptor(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
JS::RootedObject obj(cx, wrappedObject(proxy));
|
JS::RootedObject obj(cx, wrappedObject(proxy));
|
||||||
|
|
||||||
|
@ -685,6 +685,7 @@ xpc::SandboxProxyHandler::getOwnPropertyDescriptor(JSContext *cx,
|
||||||
JS::Handle<JSObject*> proxy,
|
JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
if (!getPropertyDescriptor(cx, proxy, id, desc))
|
if (!getPropertyDescriptor(cx, proxy, id, desc))
|
||||||
return false;
|
return false;
|
||||||
|
@ -702,13 +703,13 @@ xpc::SandboxProxyHandler::getOwnPropertyDescriptor(JSContext *cx,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
xpc::SandboxProxyHandler::has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
xpc::SandboxProxyHandler::has(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp)
|
JS::Handle<jsid> id, bool *bp) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::has(cx, proxy, id, bp);
|
return BaseProxyHandler::has(cx, proxy, id, bp);
|
||||||
}
|
}
|
||||||
bool
|
bool
|
||||||
xpc::SandboxProxyHandler::hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy,
|
xpc::SandboxProxyHandler::hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id, bool *bp)
|
JS::Handle<jsid> id, bool *bp) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::hasOwn(cx, proxy, id, bp);
|
return BaseProxyHandler::hasOwn(cx, proxy, id, bp);
|
||||||
}
|
}
|
||||||
|
@ -717,7 +718,7 @@ bool
|
||||||
xpc::SandboxProxyHandler::get(JSContext *cx, JS::Handle<JSObject*> proxy,
|
xpc::SandboxProxyHandler::get(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<JSObject*> receiver,
|
JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<Value> vp)
|
JS::MutableHandle<Value> vp) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::get(cx, proxy, receiver, id, vp);
|
return BaseProxyHandler::get(cx, proxy, receiver, id, vp);
|
||||||
}
|
}
|
||||||
|
@ -727,21 +728,21 @@ xpc::SandboxProxyHandler::set(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<JSObject*> receiver,
|
JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
bool strict,
|
bool strict,
|
||||||
JS::MutableHandle<Value> vp)
|
JS::MutableHandle<Value> vp) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::set(cx, proxy, receiver, id, strict, vp);
|
return BaseProxyHandler::set(cx, proxy, receiver, id, strict, vp);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
xpc::SandboxProxyHandler::keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
xpc::SandboxProxyHandler::keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::keys(cx, proxy, props);
|
return BaseProxyHandler::keys(cx, proxy, props);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
xpc::SandboxProxyHandler::iterate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
xpc::SandboxProxyHandler::iterate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
unsigned flags, JS::MutableHandle<Value> vp)
|
unsigned flags, JS::MutableHandle<Value> vp) const
|
||||||
{
|
{
|
||||||
return BaseProxyHandler::iterate(cx, proxy, flags, vp);
|
return BaseProxyHandler::iterate(cx, proxy, flags, vp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ bool
|
||||||
ChromeObjectWrapper::getPropertyDescriptor(JSContext *cx,
|
ChromeObjectWrapper::getPropertyDescriptor(JSContext *cx,
|
||||||
HandleObject wrapper,
|
HandleObject wrapper,
|
||||||
HandleId id,
|
HandleId id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, GET | SET);
|
assertEnteredPolicy(cx, wrapper, id, GET | SET);
|
||||||
// First, try a lookup on the base wrapper if permitted.
|
// First, try a lookup on the base wrapper if permitted.
|
||||||
|
@ -103,7 +103,7 @@ ChromeObjectWrapper::getPropertyDescriptor(JSContext *cx,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ChromeObjectWrapper::has(JSContext *cx, HandleObject wrapper,
|
ChromeObjectWrapper::has(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, bool *bp)
|
HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, GET);
|
assertEnteredPolicy(cx, wrapper, id, GET);
|
||||||
// Try the lookup on the base wrapper if permitted.
|
// Try the lookup on the base wrapper if permitted.
|
||||||
|
@ -132,7 +132,7 @@ ChromeObjectWrapper::has(JSContext *cx, HandleObject wrapper,
|
||||||
bool
|
bool
|
||||||
ChromeObjectWrapper::get(JSContext *cx, HandleObject wrapper,
|
ChromeObjectWrapper::get(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject receiver, HandleId id,
|
HandleObject receiver, HandleId id,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, GET);
|
assertEnteredPolicy(cx, wrapper, id, GET);
|
||||||
vp.setUndefined();
|
vp.setUndefined();
|
||||||
|
@ -167,7 +167,7 @@ ChromeObjectWrapper::get(JSContext *cx, HandleObject wrapper,
|
||||||
// contacts. This isn't really ideal, but make it work for now.
|
// contacts. This isn't really ideal, but make it work for now.
|
||||||
bool
|
bool
|
||||||
ChromeObjectWrapper::objectClassIs(HandleObject obj, js::ESClassValue classValue,
|
ChromeObjectWrapper::objectClassIs(HandleObject obj, js::ESClassValue classValue,
|
||||||
JSContext *cx)
|
JSContext *cx) const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::objectClassIs(obj, classValue, cx);
|
return CrossCompartmentWrapper::objectClassIs(obj, classValue, cx);
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ ChromeObjectWrapper::objectClassIs(HandleObject obj, js::ESClassValue classValue
|
||||||
// whole proto remapping thing for COWs is going to be phased out anyway.
|
// whole proto remapping thing for COWs is going to be phased out anyway.
|
||||||
bool
|
bool
|
||||||
ChromeObjectWrapper::enter(JSContext *cx, HandleObject wrapper,
|
ChromeObjectWrapper::enter(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, js::Wrapper::Action act, bool *bp)
|
HandleId id, js::Wrapper::Action act, bool *bp) const
|
||||||
{
|
{
|
||||||
if (AllowedByBase(cx, wrapper, id, act))
|
if (AllowedByBase(cx, wrapper, id, act))
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -31,17 +31,17 @@ class ChromeObjectWrapper : public ChromeObjectWrapperBase
|
||||||
/* Custom traps. */
|
/* Custom traps. */
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool has(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool has(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id, bool *bp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
virtual bool get(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool objectClassIs(JS::Handle<JSObject*> obj, js::ESClassValue classValue,
|
virtual bool objectClassIs(JS::Handle<JSObject*> obj, js::ESClassValue classValue,
|
||||||
JSContext *cx) MOZ_OVERRIDE;
|
JSContext *cx) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool enter(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool enter(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
js::Wrapper::Action act, bool *bp) MOZ_OVERRIDE;
|
js::Wrapper::Action act, bool *bp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
// NB: One might think we'd need to implement enumerate(), keys(), iterate(),
|
// NB: One might think we'd need to implement enumerate(), keys(), iterate(),
|
||||||
// and getPropertyNames() here. However, ES5 built-in properties aren't
|
// and getPropertyNames() here. However, ES5 built-in properties aren't
|
||||||
|
|
|
@ -60,7 +60,7 @@ template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::getPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::getPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id,
|
HandleId id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
||||||
if (!Base::getPropertyDescriptor(cx, wrapper, id, desc))
|
if (!Base::getPropertyDescriptor(cx, wrapper, id, desc))
|
||||||
|
@ -72,7 +72,7 @@ template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id,
|
HandleId id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
||||||
if (!Base::getOwnPropertyDescriptor(cx, wrapper, id, desc))
|
if (!Base::getOwnPropertyDescriptor(cx, wrapper, id, desc))
|
||||||
|
@ -83,7 +83,7 @@ FilteringWrapper<Base, Policy>::getOwnPropertyDescriptor(JSContext *cx, HandleOb
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
||||||
return Base::getOwnPropertyNames(cx, wrapper, props) &&
|
return Base::getOwnPropertyNames(cx, wrapper, props) &&
|
||||||
|
@ -93,7 +93,7 @@ FilteringWrapper<Base, Policy>::getOwnPropertyNames(JSContext *cx, HandleObject
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::enumerate(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::enumerate(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
||||||
return Base::enumerate(cx, wrapper, props) &&
|
return Base::enumerate(cx, wrapper, props) &&
|
||||||
|
@ -103,7 +103,7 @@ FilteringWrapper<Base, Policy>::enumerate(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::keys(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::keys(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
||||||
return Base::keys(cx, wrapper, props) &&
|
return Base::keys(cx, wrapper, props) &&
|
||||||
|
@ -113,7 +113,7 @@ FilteringWrapper<Base, Policy>::keys(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::iterate(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::iterate(JSContext *cx, HandleObject wrapper,
|
||||||
unsigned flags, MutableHandleValue vp)
|
unsigned flags, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
||||||
// We refuse to trigger the iterator hook across chrome wrappers because
|
// We refuse to trigger the iterator hook across chrome wrappers because
|
||||||
|
@ -126,7 +126,7 @@ FilteringWrapper<Base, Policy>::iterate(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::nativeCall(JSContext *cx, JS::IsAcceptableThis test,
|
FilteringWrapper<Base, Policy>::nativeCall(JSContext *cx, JS::IsAcceptableThis test,
|
||||||
JS::NativeImpl impl, JS::CallArgs args)
|
JS::NativeImpl impl, JS::CallArgs args) const
|
||||||
{
|
{
|
||||||
if (Policy::allowNativeCall(cx, test, impl))
|
if (Policy::allowNativeCall(cx, test, impl))
|
||||||
return Base::Permissive::nativeCall(cx, test, impl, args);
|
return Base::Permissive::nativeCall(cx, test, impl, args);
|
||||||
|
@ -136,7 +136,7 @@ FilteringWrapper<Base, Policy>::nativeCall(JSContext *cx, JS::IsAcceptableThis t
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::defaultValue(JSContext *cx, HandleObject obj,
|
FilteringWrapper<Base, Policy>::defaultValue(JSContext *cx, HandleObject obj,
|
||||||
JSType hint, MutableHandleValue vp)
|
JSType hint, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
return Base::defaultValue(cx, obj, hint, vp);
|
return Base::defaultValue(cx, obj, hint, vp);
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,7 @@ template<>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<CrossCompartmentSecurityWrapper, GentlyOpaque>
|
FilteringWrapper<CrossCompartmentSecurityWrapper, GentlyOpaque>
|
||||||
::defaultValue(JSContext *cx, HandleObject obj,
|
::defaultValue(JSContext *cx, HandleObject obj,
|
||||||
JSType hint, MutableHandleValue vp)
|
JSType hint, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
JSString *str = JS_NewStringCopyZ(cx, "[Opaque]");
|
JSString *str = JS_NewStringCopyZ(cx, "[Opaque]");
|
||||||
if (!str)
|
if (!str)
|
||||||
|
@ -160,7 +160,7 @@ FilteringWrapper<CrossCompartmentSecurityWrapper, GentlyOpaque>
|
||||||
template <typename Base, typename Policy>
|
template <typename Base, typename Policy>
|
||||||
bool
|
bool
|
||||||
FilteringWrapper<Base, Policy>::enter(JSContext *cx, HandleObject wrapper,
|
FilteringWrapper<Base, Policy>::enter(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, Wrapper::Action act, bool *bp)
|
HandleId id, Wrapper::Action act, bool *bp) const
|
||||||
{
|
{
|
||||||
// This is a super ugly hacky to get around Xray Resolve wonkiness.
|
// This is a super ugly hacky to get around Xray Resolve wonkiness.
|
||||||
//
|
//
|
||||||
|
|
|
@ -27,25 +27,26 @@ class FilteringWrapper : public Base {
|
||||||
|
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getOwnPropertyNames(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> wrapper, unsigned flags,
|
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> wrapper, unsigned flags,
|
||||||
JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool nativeCall(JSContext *cx, JS::IsAcceptableThis test, JS::NativeImpl impl,
|
virtual bool nativeCall(JSContext *cx, JS::IsAcceptableThis test, JS::NativeImpl impl,
|
||||||
JS::CallArgs args) MOZ_OVERRIDE;
|
JS::CallArgs args) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool defaultValue(JSContext *cx, JS::Handle<JSObject*> obj, JSType hint, JS::MutableHandleValue vp) MOZ_OVERRIDE;
|
virtual bool defaultValue(JSContext *cx, JS::Handle<JSObject*> obj, JSType hint,
|
||||||
|
JS::MutableHandleValue vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool enter(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool enter(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
js::Wrapper::Action act, bool *bp) MOZ_OVERRIDE;
|
js::Wrapper::Action act, bool *bp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const FilteringWrapper singleton;
|
static const FilteringWrapper singleton;
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,6 +42,7 @@ WaiveXrayWrapper::~WaiveXrayWrapper()
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::getPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
WaiveXrayWrapper::getPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, JS::MutableHandle<JSPropertyDescriptor> desc)
|
HandleId id, JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::getPropertyDescriptor(cx, wrapper, id, desc) &&
|
return CrossCompartmentWrapper::getPropertyDescriptor(cx, wrapper, id, desc) &&
|
||||||
WrapperFactory::WaiveXrayAndWrap(cx, desc.value()) && WaiveAccessors(cx, desc);
|
WrapperFactory::WaiveXrayAndWrap(cx, desc.value()) && WaiveAccessors(cx, desc);
|
||||||
|
@ -50,6 +51,7 @@ WaiveXrayWrapper::getPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
WaiveXrayWrapper::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, JS::MutableHandle<JSPropertyDescriptor> desc)
|
HandleId id, JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::getOwnPropertyDescriptor(cx, wrapper, id, desc) &&
|
return CrossCompartmentWrapper::getOwnPropertyDescriptor(cx, wrapper, id, desc) &&
|
||||||
WrapperFactory::WaiveXrayAndWrap(cx, desc.value()) && WaiveAccessors(cx, desc);
|
WrapperFactory::WaiveXrayAndWrap(cx, desc.value()) && WaiveAccessors(cx, desc);
|
||||||
|
@ -58,21 +60,21 @@ WaiveXrayWrapper::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper,
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::get(JSContext *cx, HandleObject wrapper,
|
WaiveXrayWrapper::get(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject receiver, HandleId id,
|
HandleObject receiver, HandleId id,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::get(cx, wrapper, receiver, id, vp) &&
|
return CrossCompartmentWrapper::get(cx, wrapper, receiver, id, vp) &&
|
||||||
WrapperFactory::WaiveXrayAndWrap(cx, vp);
|
WrapperFactory::WaiveXrayAndWrap(cx, vp);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::call(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args)
|
WaiveXrayWrapper::call(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args) const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::call(cx, wrapper, args) &&
|
return CrossCompartmentWrapper::call(cx, wrapper, args) &&
|
||||||
WrapperFactory::WaiveXrayAndWrap(cx, args.rval());
|
WrapperFactory::WaiveXrayAndWrap(cx, args.rval());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::construct(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args)
|
WaiveXrayWrapper::construct(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args) const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::construct(cx, wrapper, args) &&
|
return CrossCompartmentWrapper::construct(cx, wrapper, args) &&
|
||||||
WrapperFactory::WaiveXrayAndWrap(cx, args.rval());
|
WrapperFactory::WaiveXrayAndWrap(cx, args.rval());
|
||||||
|
@ -82,14 +84,14 @@ WaiveXrayWrapper::construct(JSContext *cx, HandleObject wrapper, const JS::CallA
|
||||||
// nsXBLProtoImplField.cpp.
|
// nsXBLProtoImplField.cpp.
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::nativeCall(JSContext *cx, JS::IsAcceptableThis test,
|
WaiveXrayWrapper::nativeCall(JSContext *cx, JS::IsAcceptableThis test,
|
||||||
JS::NativeImpl impl, JS::CallArgs args)
|
JS::NativeImpl impl, JS::CallArgs args) const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::nativeCall(cx, test, impl, args) &&
|
return CrossCompartmentWrapper::nativeCall(cx, test, impl, args) &&
|
||||||
WrapperFactory::WaiveXrayAndWrap(cx, args.rval());
|
WrapperFactory::WaiveXrayAndWrap(cx, args.rval());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
WaiveXrayWrapper::getPrototypeOf(JSContext *cx, HandleObject wrapper, MutableHandleObject protop)
|
WaiveXrayWrapper::getPrototypeOf(JSContext *cx, HandleObject wrapper, MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
return CrossCompartmentWrapper::getPrototypeOf(cx, wrapper, protop) &&
|
return CrossCompartmentWrapper::getPrototypeOf(cx, wrapper, protop) &&
|
||||||
(!protop || WrapperFactory::WaiveXrayAndWrap(cx, protop));
|
(!protop || WrapperFactory::WaiveXrayAndWrap(cx, protop));
|
||||||
|
|
|
@ -20,23 +20,23 @@ class WaiveXrayWrapper : public js::CrossCompartmentWrapper {
|
||||||
|
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
virtual bool get(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool call(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool call(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
const JS::CallArgs &args) MOZ_OVERRIDE;
|
const JS::CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool construct(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
const JS::CallArgs &args) MOZ_OVERRIDE;
|
const JS::CallArgs &args) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool nativeCall(JSContext *cx, JS::IsAcceptableThis test,
|
virtual bool nativeCall(JSContext *cx, JS::IsAcceptableThis test,
|
||||||
JS::NativeImpl impl, JS::CallArgs args) MOZ_OVERRIDE;
|
JS::NativeImpl impl, JS::CallArgs args) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool getPrototypeOf(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getPrototypeOf(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::MutableHandle<JSObject*> protop) MOZ_OVERRIDE;
|
JS::MutableHandle<JSObject*> protop) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const WaiveXrayWrapper singleton;
|
static const WaiveXrayWrapper singleton;
|
||||||
};
|
};
|
||||||
|
|
|
@ -185,7 +185,7 @@ public:
|
||||||
// on the holder. If the result is not cached, the lookup will happen afresh
|
// on the holder. If the result is not cached, the lookup will happen afresh
|
||||||
// for each access, which is the right thing for things like dynamic NodeList
|
// for each access, which is the right thing for things like dynamic NodeList
|
||||||
// properties.
|
// properties.
|
||||||
virtual bool resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper,
|
virtual bool resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper,
|
||||||
HandleObject wrapper, HandleObject holder,
|
HandleObject wrapper, HandleObject holder,
|
||||||
HandleId id, MutableHandle<JSPropertyDescriptor> desc);
|
HandleId id, MutableHandle<JSPropertyDescriptor> desc);
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ public:
|
||||||
virtual bool resolveNativeProperty(JSContext *cx, HandleObject wrapper,
|
virtual bool resolveNativeProperty(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject holder, HandleId id,
|
HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
||||||
virtual bool resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper, HandleObject wrapper,
|
virtual bool resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper, HandleObject wrapper,
|
||||||
HandleObject holder, HandleId id,
|
HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
||||||
bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
|
@ -253,9 +253,9 @@ public:
|
||||||
virtual bool enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags,
|
virtual bool enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags,
|
||||||
AutoIdVector &props);
|
AutoIdVector &props);
|
||||||
static bool call(JSContext *cx, HandleObject wrapper,
|
static bool call(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance);
|
const JS::CallArgs &args, const js::Wrapper& baseInstance);
|
||||||
static bool construct(JSContext *cx, HandleObject wrapper,
|
static bool construct(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance);
|
const JS::CallArgs &args, const js::Wrapper& baseInstance);
|
||||||
|
|
||||||
static bool isResolving(JSContext *cx, JSObject *holder, jsid id);
|
static bool isResolving(JSContext *cx, JSObject *holder, jsid id);
|
||||||
|
|
||||||
|
@ -295,7 +295,7 @@ public:
|
||||||
virtual bool resolveNativeProperty(JSContext *cx, HandleObject wrapper,
|
virtual bool resolveNativeProperty(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject holder, HandleId id,
|
HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
||||||
virtual bool resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper, HandleObject wrapper,
|
virtual bool resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper, HandleObject wrapper,
|
||||||
HandleObject holder, HandleId id,
|
HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
||||||
bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
|
@ -306,9 +306,9 @@ public:
|
||||||
virtual bool enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags,
|
virtual bool enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags,
|
||||||
AutoIdVector &props);
|
AutoIdVector &props);
|
||||||
static bool call(JSContext *cx, HandleObject wrapper,
|
static bool call(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance);
|
const JS::CallArgs &args, const js::Wrapper& baseInstance);
|
||||||
static bool construct(JSContext *cx, HandleObject wrapper,
|
static bool construct(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance);
|
const JS::CallArgs &args, const js::Wrapper& baseInstance);
|
||||||
|
|
||||||
static bool isResolving(JSContext *cx, JSObject *holder, jsid id)
|
static bool isResolving(JSContext *cx, JSObject *holder, jsid id)
|
||||||
{
|
{
|
||||||
|
@ -339,7 +339,7 @@ public:
|
||||||
MOZ_ASSUME_UNREACHABLE("resolveNativeProperty hook should never be called with HasPrototype = 1");
|
MOZ_ASSUME_UNREACHABLE("resolveNativeProperty hook should never be called with HasPrototype = 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper, HandleObject wrapper,
|
virtual bool resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper, HandleObject wrapper,
|
||||||
HandleObject holder, HandleId id,
|
HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
||||||
|
|
||||||
|
@ -353,7 +353,7 @@ public:
|
||||||
AutoIdVector &props);
|
AutoIdVector &props);
|
||||||
|
|
||||||
static bool call(JSContext *cx, HandleObject wrapper,
|
static bool call(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance)
|
const JS::CallArgs &args, const js::Wrapper& baseInstance)
|
||||||
{
|
{
|
||||||
JSXrayTraits &self = JSXrayTraits::singleton;
|
JSXrayTraits &self = JSXrayTraits::singleton;
|
||||||
RootedObject holder(cx, self.ensureHolder(cx, wrapper));
|
RootedObject holder(cx, self.ensureHolder(cx, wrapper));
|
||||||
|
@ -366,7 +366,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool construct(JSContext *cx, HandleObject wrapper,
|
static bool construct(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance)
|
const JS::CallArgs &args, const js::Wrapper& baseInstance)
|
||||||
{
|
{
|
||||||
JSXrayTraits &self = JSXrayTraits::singleton;
|
JSXrayTraits &self = JSXrayTraits::singleton;
|
||||||
RootedObject holder(cx, self.ensureHolder(cx, wrapper));
|
RootedObject holder(cx, self.ensureHolder(cx, wrapper));
|
||||||
|
@ -532,7 +532,7 @@ bool JSXrayTraits::getOwnPropertyFromTargetIfSafe(JSContext *cx,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
JSXrayTraits::resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper,
|
JSXrayTraits::resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper,
|
||||||
HandleObject wrapper, HandleObject holder,
|
HandleObject wrapper, HandleObject holder,
|
||||||
HandleId id,
|
HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
@ -1525,7 +1525,7 @@ wrappedJSObject_getter(JSContext *cx, HandleObject wrapper, HandleId id, Mutable
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
XrayTraits::resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper,
|
XrayTraits::resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper,
|
||||||
HandleObject wrapper, HandleObject holder, HandleId id,
|
HandleObject wrapper, HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc)
|
||||||
{
|
{
|
||||||
|
@ -1603,7 +1603,7 @@ XrayTraits::set(JSContext *cx, HandleObject wrapper, HandleObject receiver, Hand
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
XPCWrappedNativeXrayTraits::resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper,
|
XPCWrappedNativeXrayTraits::resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper,
|
||||||
HandleObject wrapper, HandleObject holder,
|
HandleObject wrapper, HandleObject holder,
|
||||||
HandleId id,
|
HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
@ -1757,7 +1757,7 @@ XPCWrappedNativeXrayTraits::createHolder(JSContext *cx, JSObject *wrapper)
|
||||||
bool
|
bool
|
||||||
XPCWrappedNativeXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
XPCWrappedNativeXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args,
|
const JS::CallArgs &args,
|
||||||
js::Wrapper& baseInstance)
|
const js::Wrapper& baseInstance)
|
||||||
{
|
{
|
||||||
// Run the resolve hook of the wrapped native.
|
// Run the resolve hook of the wrapped native.
|
||||||
XPCWrappedNative *wn = getWN(wrapper);
|
XPCWrappedNative *wn = getWN(wrapper);
|
||||||
|
@ -1783,7 +1783,7 @@ XPCWrappedNativeXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
||||||
bool
|
bool
|
||||||
XPCWrappedNativeXrayTraits::construct(JSContext *cx, HandleObject wrapper,
|
XPCWrappedNativeXrayTraits::construct(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args,
|
const JS::CallArgs &args,
|
||||||
js::Wrapper& baseInstance)
|
const js::Wrapper& baseInstance)
|
||||||
{
|
{
|
||||||
// Run the resolve hook of the wrapped native.
|
// Run the resolve hook of the wrapped native.
|
||||||
XPCWrappedNative *wn = getWN(wrapper);
|
XPCWrappedNative *wn = getWN(wrapper);
|
||||||
|
@ -1821,7 +1821,7 @@ DOMXrayTraits::resolveNativeProperty(JSContext *cx, HandleObject wrapper,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMXrayTraits::resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper, HandleObject wrapper,
|
DOMXrayTraits::resolveOwnProperty(JSContext *cx, const Wrapper &jsWrapper, HandleObject wrapper,
|
||||||
HandleObject holder, HandleId id,
|
HandleObject holder, HandleId id,
|
||||||
MutableHandle<JSPropertyDescriptor> desc)
|
MutableHandle<JSPropertyDescriptor> desc)
|
||||||
{
|
{
|
||||||
|
@ -1912,7 +1912,7 @@ DOMXrayTraits::enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flag
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
DOMXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance)
|
const JS::CallArgs &args, const js::Wrapper& baseInstance)
|
||||||
{
|
{
|
||||||
RootedObject obj(cx, getTargetObject(wrapper));
|
RootedObject obj(cx, getTargetObject(wrapper));
|
||||||
const js::Class* clasp = js::GetObjectClass(obj);
|
const js::Class* clasp = js::GetObjectClass(obj);
|
||||||
|
@ -1942,7 +1942,7 @@ DOMXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
||||||
|
|
||||||
bool
|
bool
|
||||||
DOMXrayTraits::construct(JSContext *cx, HandleObject wrapper,
|
DOMXrayTraits::construct(JSContext *cx, HandleObject wrapper,
|
||||||
const JS::CallArgs &args, js::Wrapper& baseInstance)
|
const JS::CallArgs &args, const js::Wrapper& baseInstance)
|
||||||
{
|
{
|
||||||
RootedObject obj(cx, getTargetObject(wrapper));
|
RootedObject obj(cx, getTargetObject(wrapper));
|
||||||
MOZ_ASSERT(mozilla::dom::HasConstructor(obj));
|
MOZ_ASSERT(mozilla::dom::HasConstructor(obj));
|
||||||
|
@ -2153,7 +2153,8 @@ DEBUG_CheckXBLLookup(JSContext *cx, JSPropertyDescriptor *desc)
|
||||||
|
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::isExtensible(JSContext *cx, JS::Handle<JSObject*> wrapper, bool *extensible)
|
XrayWrapper<Base, Traits>::isExtensible(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
|
bool *extensible) const
|
||||||
{
|
{
|
||||||
// Xray wrappers are supposed to provide a clean view of the target
|
// Xray wrappers are supposed to provide a clean view of the target
|
||||||
// reflector, hiding any modifications by script in the target scope. So
|
// reflector, hiding any modifications by script in the target scope. So
|
||||||
|
@ -2166,7 +2167,7 @@ XrayWrapper<Base, Traits>::isExtensible(JSContext *cx, JS::Handle<JSObject*> wra
|
||||||
|
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::preventExtensions(JSContext *cx, HandleObject wrapper)
|
XrayWrapper<Base, Traits>::preventExtensions(JSContext *cx, HandleObject wrapper) const
|
||||||
{
|
{
|
||||||
// See above.
|
// See above.
|
||||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_CHANGE_EXTENSIBILITY);
|
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_CANT_CHANGE_EXTENSIBILITY);
|
||||||
|
@ -2177,6 +2178,7 @@ template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
XrayWrapper<Base, Traits>::getPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
||||||
RootedObject holder(cx, Traits::singleton.ensureHolder(cx, wrapper));
|
RootedObject holder(cx, Traits::singleton.ensureHolder(cx, wrapper));
|
||||||
|
@ -2309,6 +2311,7 @@ template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
XrayWrapper<Base, Traits>::getOwnPropertyDescriptor(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc)
|
JS::MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::GET | BaseProxyHandler::SET);
|
||||||
RootedObject holder(cx, Traits::singleton.ensureHolder(cx, wrapper));
|
RootedObject holder(cx, Traits::singleton.ensureHolder(cx, wrapper));
|
||||||
|
@ -2390,6 +2393,7 @@ template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::defineProperty(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::defineProperty(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, MutableHandle<JSPropertyDescriptor> desc)
|
HandleId id, MutableHandle<JSPropertyDescriptor> desc)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::SET);
|
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::SET);
|
||||||
|
|
||||||
|
@ -2454,7 +2458,7 @@ XrayWrapper<Base, Traits>::defineProperty(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::getOwnPropertyNames(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
||||||
return enumerate(cx, wrapper, JSITER_OWNONLY | JSITER_HIDDEN, props);
|
return enumerate(cx, wrapper, JSITER_OWNONLY | JSITER_HIDDEN, props);
|
||||||
|
@ -2463,7 +2467,7 @@ XrayWrapper<Base, Traits>::getOwnPropertyNames(JSContext *cx, HandleObject wrapp
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::delete_(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::delete_(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, bool *bp)
|
HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::SET);
|
assertEnteredPolicy(cx, wrapper, id, BaseProxyHandler::SET);
|
||||||
|
|
||||||
|
@ -2481,7 +2485,7 @@ XrayWrapper<Base, Traits>::delete_(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::enumerate(JSContext *cx, HandleObject wrapper, unsigned flags,
|
XrayWrapper<Base, Traits>::enumerate(JSContext *cx, HandleObject wrapper, unsigned flags,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::ENUMERATE);
|
||||||
if (!AccessCheck::wrapperSubsumes(wrapper)) {
|
if (!AccessCheck::wrapperSubsumes(wrapper)) {
|
||||||
|
@ -2505,7 +2509,7 @@ XrayWrapper<Base, Traits>::enumerate(JSContext *cx, HandleObject wrapper, unsign
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::enumerate(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::enumerate(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
return enumerate(cx, wrapper, 0, props);
|
return enumerate(cx, wrapper, 0, props);
|
||||||
}
|
}
|
||||||
|
@ -2514,7 +2518,7 @@ template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::get(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::get(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject receiver, HandleId id,
|
HandleObject receiver, HandleId id,
|
||||||
MutableHandleValue vp)
|
MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// Skip our Base if it isn't already ProxyHandler.
|
// Skip our Base if it isn't already ProxyHandler.
|
||||||
// NB: None of the functions we call are prepared for the receiver not
|
// NB: None of the functions we call are prepared for the receiver not
|
||||||
|
@ -2526,7 +2530,7 @@ template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::set(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::set(JSContext *cx, HandleObject wrapper,
|
||||||
HandleObject receiver, HandleId id,
|
HandleObject receiver, HandleId id,
|
||||||
bool strict, MutableHandleValue vp)
|
bool strict, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// Delegate to Traits.
|
// Delegate to Traits.
|
||||||
// NB: None of the functions we call are prepared for the receiver not
|
// NB: None of the functions we call are prepared for the receiver not
|
||||||
|
@ -2537,7 +2541,7 @@ XrayWrapper<Base, Traits>::set(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::has(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::has(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, bool *bp)
|
HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
// Skip our Base if it isn't already ProxyHandler.
|
// Skip our Base if it isn't already ProxyHandler.
|
||||||
return js::BaseProxyHandler::has(cx, wrapper, id, bp);
|
return js::BaseProxyHandler::has(cx, wrapper, id, bp);
|
||||||
|
@ -2546,7 +2550,7 @@ XrayWrapper<Base, Traits>::has(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::hasOwn(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::hasOwn(JSContext *cx, HandleObject wrapper,
|
||||||
HandleId id, bool *bp)
|
HandleId id, bool *bp) const
|
||||||
{
|
{
|
||||||
// Skip our Base if it isn't already ProxyHandler.
|
// Skip our Base if it isn't already ProxyHandler.
|
||||||
return js::BaseProxyHandler::hasOwn(cx, wrapper, id, bp);
|
return js::BaseProxyHandler::hasOwn(cx, wrapper, id, bp);
|
||||||
|
@ -2555,7 +2559,7 @@ XrayWrapper<Base, Traits>::hasOwn(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::keys(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::keys(JSContext *cx, HandleObject wrapper,
|
||||||
AutoIdVector &props)
|
AutoIdVector &props) const
|
||||||
{
|
{
|
||||||
// Skip our Base if it isn't already ProxyHandler.
|
// Skip our Base if it isn't already ProxyHandler.
|
||||||
return js::BaseProxyHandler::keys(cx, wrapper, props);
|
return js::BaseProxyHandler::keys(cx, wrapper, props);
|
||||||
|
@ -2564,7 +2568,7 @@ XrayWrapper<Base, Traits>::keys(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::iterate(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::iterate(JSContext *cx, HandleObject wrapper,
|
||||||
unsigned flags, MutableHandleValue vp)
|
unsigned flags, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// Skip our Base if it isn't already ProxyHandler.
|
// Skip our Base if it isn't already ProxyHandler.
|
||||||
return js::BaseProxyHandler::iterate(cx, wrapper, flags, vp);
|
return js::BaseProxyHandler::iterate(cx, wrapper, flags, vp);
|
||||||
|
@ -2572,26 +2576,26 @@ XrayWrapper<Base, Traits>::iterate(JSContext *cx, HandleObject wrapper,
|
||||||
|
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::call(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args)
|
XrayWrapper<Base, Traits>::call(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::CALL);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::CALL);
|
||||||
// Hard cast the singleton since SecurityWrapper doesn't have one.
|
// Hard cast the singleton since SecurityWrapper doesn't have one.
|
||||||
return Traits::call(cx, wrapper, args, (js::Wrapper&)Base::singleton);
|
return Traits::call(cx, wrapper, args, Base::singleton);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::construct(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args)
|
XrayWrapper<Base, Traits>::construct(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args) const
|
||||||
{
|
{
|
||||||
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::CALL);
|
assertEnteredPolicy(cx, wrapper, JSID_VOID, BaseProxyHandler::CALL);
|
||||||
// Hard cast the singleton since SecurityWrapper doesn't have one.
|
// Hard cast the singleton since SecurityWrapper doesn't have one.
|
||||||
return Traits::construct(cx, wrapper, args, (js::Wrapper&)Base::singleton);
|
return Traits::construct(cx, wrapper, args, Base::singleton);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::defaultValue(JSContext *cx, HandleObject wrapper,
|
XrayWrapper<Base, Traits>::defaultValue(JSContext *cx, HandleObject wrapper,
|
||||||
JSType hint, MutableHandleValue vp)
|
JSType hint, MutableHandleValue vp) const
|
||||||
{
|
{
|
||||||
// Even if this isn't a security wrapper, Xray semantics dictate that we
|
// Even if this isn't a security wrapper, Xray semantics dictate that we
|
||||||
// run the DefaultValue algorithm directly on the Xray wrapper.
|
// run the DefaultValue algorithm directly on the Xray wrapper.
|
||||||
|
@ -2604,7 +2608,7 @@ XrayWrapper<Base, Traits>::defaultValue(JSContext *cx, HandleObject wrapper,
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::getPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
XrayWrapper<Base, Traits>::getPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::MutableHandleObject protop)
|
JS::MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
// We really only want this override for non-SecurityWrapper-inheriting
|
// We really only want this override for non-SecurityWrapper-inheriting
|
||||||
// |Base|. But doing that statically with templates requires partial method
|
// |Base|. But doing that statically with templates requires partial method
|
||||||
|
@ -2635,7 +2639,7 @@ XrayWrapper<Base, Traits>::getPrototypeOf(JSContext *cx, JS::HandleObject wrappe
|
||||||
template <typename Base, typename Traits>
|
template <typename Base, typename Traits>
|
||||||
bool
|
bool
|
||||||
XrayWrapper<Base, Traits>::setPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
XrayWrapper<Base, Traits>::setPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::HandleObject proto, bool *bp)
|
JS::HandleObject proto, bool *bp) const
|
||||||
{
|
{
|
||||||
// Do this only for non-SecurityWrapper-inheriting |Base|. See the comment
|
// Do this only for non-SecurityWrapper-inheriting |Base|. See the comment
|
||||||
// in getPrototypeOf().
|
// in getPrototypeOf().
|
||||||
|
|
|
@ -69,47 +69,47 @@ class XrayWrapper : public Base {
|
||||||
virtual ~XrayWrapper();
|
virtual ~XrayWrapper();
|
||||||
|
|
||||||
/* Fundamental proxy traps. */
|
/* Fundamental proxy traps. */
|
||||||
virtual bool isExtensible(JSContext *cx, JS::Handle<JSObject*> wrapper, bool *extensible) MOZ_OVERRIDE;
|
virtual bool isExtensible(JSContext *cx, JS::Handle<JSObject*> wrapper, bool *extensible) const MOZ_OVERRIDE;
|
||||||
virtual bool preventExtensions(JSContext *cx, JS::Handle<JSObject*> wrapper) MOZ_OVERRIDE;
|
virtual bool preventExtensions(JSContext *cx, JS::Handle<JSObject*> wrapper) const MOZ_OVERRIDE;
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc);
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc);
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool defineProperty(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool defineProperty(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc);
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyNames(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool getOwnPropertyNames(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::AutoIdVector &props);
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool delete_(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool delete_(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::Handle<jsid> id, bool *bp);
|
JS::Handle<jsid> id, bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::AutoIdVector &props);
|
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
/* Derived proxy traps. */
|
/* Derived proxy traps. */
|
||||||
virtual bool get(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
virtual bool get(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp);
|
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
virtual bool set(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, bool strict, JS::MutableHandle<JS::Value> vp);
|
JS::Handle<jsid> id, bool strict, JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool has(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool has(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
bool *bp);
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
virtual bool hasOwn(JSContext *cx, JS::Handle<JSObject*> wrapper, JS::Handle<jsid> id,
|
||||||
bool *bp);
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
JS::AutoIdVector &props);
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> wrapper, unsigned flags,
|
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> wrapper, unsigned flags,
|
||||||
JS::MutableHandle<JS::Value> vp);
|
JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool call(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool call(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
const JS::CallArgs &args) MOZ_OVERRIDE;
|
const JS::CallArgs &args) const MOZ_OVERRIDE;
|
||||||
virtual bool construct(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
virtual bool construct(JSContext *cx, JS::Handle<JSObject*> wrapper,
|
||||||
const JS::CallArgs &args) MOZ_OVERRIDE;
|
const JS::CallArgs &args) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool defaultValue(JSContext *cx, JS::HandleObject wrapper,
|
virtual bool defaultValue(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JSType hint, JS::MutableHandleValue vp)
|
JSType hint, JS::MutableHandleValue vp)
|
||||||
MOZ_OVERRIDE;
|
const MOZ_OVERRIDE;
|
||||||
|
|
||||||
virtual bool getPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
virtual bool getPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::MutableHandleObject protop) MOZ_OVERRIDE;
|
JS::MutableHandleObject protop) const MOZ_OVERRIDE;
|
||||||
virtual bool setPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
virtual bool setPrototypeOf(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::HandleObject proto, bool *bp) MOZ_OVERRIDE;
|
JS::HandleObject proto, bool *bp) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
static const XrayWrapper singleton;
|
static const XrayWrapper singleton;
|
||||||
|
|
||||||
|
@ -117,26 +117,26 @@ class XrayWrapper : public Base {
|
||||||
template <bool HasPrototype>
|
template <bool HasPrototype>
|
||||||
typename mozilla::EnableIf<HasPrototype, bool>::Type
|
typename mozilla::EnableIf<HasPrototype, bool>::Type
|
||||||
getPrototypeOfHelper(JSContext *cx, JS::HandleObject wrapper,
|
getPrototypeOfHelper(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::HandleObject target, JS::MutableHandleObject protop)
|
JS::HandleObject target, JS::MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
return Traits::singleton.getPrototypeOf(cx, wrapper, target, protop);
|
return Traits::singleton.getPrototypeOf(cx, wrapper, target, protop);
|
||||||
}
|
}
|
||||||
template <bool HasPrototype>
|
template <bool HasPrototype>
|
||||||
typename mozilla::EnableIf<!HasPrototype, bool>::Type
|
typename mozilla::EnableIf<!HasPrototype, bool>::Type
|
||||||
getPrototypeOfHelper(JSContext *cx, JS::HandleObject wrapper,
|
getPrototypeOfHelper(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::HandleObject target, JS::MutableHandleObject protop)
|
JS::HandleObject target, JS::MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
return Base::getPrototypeOf(cx, wrapper, protop);
|
return Base::getPrototypeOf(cx, wrapper, protop);
|
||||||
}
|
}
|
||||||
bool getPrototypeOfHelper(JSContext *cx, JS::HandleObject wrapper,
|
bool getPrototypeOfHelper(JSContext *cx, JS::HandleObject wrapper,
|
||||||
JS::HandleObject target, JS::MutableHandleObject protop)
|
JS::HandleObject target, JS::MutableHandleObject protop) const
|
||||||
{
|
{
|
||||||
return getPrototypeOfHelper<Traits::HasPrototype>(cx, wrapper, target,
|
return getPrototypeOfHelper<Traits::HasPrototype>(cx, wrapper, target,
|
||||||
protop);
|
protop);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool enumerate(JSContext *cx, JS::Handle<JSObject*> wrapper, unsigned flags,
|
bool enumerate(JSContext *cx, JS::Handle<JSObject*> wrapper, unsigned flags,
|
||||||
JS::AutoIdVector &props);
|
JS::AutoIdVector &props) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PermissiveXrayXPCWN xpc::XrayWrapper<js::CrossCompartmentWrapper, xpc::XPCWrappedNativeXrayTraits>
|
#define PermissiveXrayXPCWN xpc::XrayWrapper<js::CrossCompartmentWrapper, xpc::XPCWrappedNativeXrayTraits>
|
||||||
|
@ -154,25 +154,25 @@ public:
|
||||||
|
|
||||||
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool getPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool getOwnPropertyDescriptor(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::Handle<jsid> id,
|
JS::Handle<jsid> id,
|
||||||
JS::MutableHandle<JSPropertyDescriptor> desc) MOZ_OVERRIDE;
|
JS::MutableHandle<JSPropertyDescriptor> desc) const MOZ_OVERRIDE;
|
||||||
|
|
||||||
// We just forward the derived traps to the BaseProxyHandler versions which
|
// We just forward the derived traps to the BaseProxyHandler versions which
|
||||||
// implement them in terms of the fundamental traps.
|
// implement them in terms of the fundamental traps.
|
||||||
virtual bool has(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
virtual bool has(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
virtual bool hasOwn(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||||
bool *bp) MOZ_OVERRIDE;
|
bool *bp) const MOZ_OVERRIDE;
|
||||||
virtual bool get(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<JSObject*> receiver,
|
virtual bool get(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool set(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<JSObject*> receiver,
|
virtual bool set(JSContext *cx, JS::Handle<JSObject*> proxy, JS::Handle<JSObject*> receiver,
|
||||||
JS::Handle<jsid> id, bool strict, JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::Handle<jsid> id, bool strict, JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool keys(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
JS::AutoIdVector &props) MOZ_OVERRIDE;
|
JS::AutoIdVector &props) const MOZ_OVERRIDE;
|
||||||
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> proxy, unsigned flags,
|
virtual bool iterate(JSContext *cx, JS::Handle<JSObject*> proxy, unsigned flags,
|
||||||
JS::MutableHandle<JS::Value> vp) MOZ_OVERRIDE;
|
JS::MutableHandle<JS::Value> vp) const MOZ_OVERRIDE;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const SandboxProxyHandler sandboxProxyHandler;
|
extern const SandboxProxyHandler sandboxProxyHandler;
|
||||||
|
@ -187,7 +187,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool call(JSContext *cx, JS::Handle<JSObject*> proxy,
|
virtual bool call(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||||
const JS::CallArgs &args) MOZ_OVERRIDE;
|
const JS::CallArgs &args) const MOZ_OVERRIDE;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const SandboxCallableProxyHandler sandboxCallableProxyHandler;
|
extern const SandboxCallableProxyHandler sandboxCallableProxyHandler;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче