mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1246318 - Make the proxy enumerate trap non-standard. r=efaust
This commit is contained in:
parent
a9dc5fef4d
commit
369af34f4a
@ -259,13 +259,6 @@ BaseDOMProxyHandler::getOwnEnumerablePropertyKeys(JSContext* cx,
|
||||
return ownPropNames(cx, proxy, JSITER_OWNONLY, props);
|
||||
}
|
||||
|
||||
bool
|
||||
BaseDOMProxyHandler::enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||
JS::MutableHandle<JSObject*> objp) const
|
||||
{
|
||||
return BaseProxyHandler::enumerate(cx, proxy, objp);
|
||||
}
|
||||
|
||||
bool
|
||||
DOMProxyHandler::has(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id, bool* bp) const
|
||||
{
|
||||
|
@ -59,9 +59,6 @@ public:
|
||||
virtual bool ownPropertyKeys(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||
JS::AutoIdVector &props) const override;
|
||||
|
||||
virtual bool enumerate(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||
JS::MutableHandle<JSObject*> objp) const override;
|
||||
|
||||
// We override getOwnEnumerablePropertyKeys() and implement it directly
|
||||
// instead of using the default implementation, which would call
|
||||
// ownPropertyKeys and then filter out the non-enumerable ones. This avoids
|
||||
|
@ -59,16 +59,15 @@ class JS_FRIEND_API(Wrapper);
|
||||
*
|
||||
* ### Proxies and internal methods
|
||||
*
|
||||
* ES6 draft rev 27 (24 August 2014) specifies 14 internal methods. The runtime
|
||||
* semantics of just about everything a script can do to an object is specified
|
||||
* in terms of these internal methods. For example:
|
||||
* ES2016 specifies 13 internal methods. The runtime semantics of just
|
||||
* about everything a script can do to an object is specified in terms
|
||||
* of these internal methods. For example:
|
||||
*
|
||||
* JS code ES6 internal method that gets called
|
||||
* --------------------------- --------------------------------
|
||||
* obj.prop obj.[[Get]](obj, "prop")
|
||||
* "prop" in obj obj.[[HasProperty]]("prop")
|
||||
* new obj() obj.[[Construct]](<empty argument List>)
|
||||
* for (k in obj) {} obj.[[Enumerate]]()
|
||||
*
|
||||
* With regard to the implementation of these internal methods, there are three
|
||||
* very different kinds of object in SpiderMonkey.
|
||||
@ -261,14 +260,6 @@ class JS_FRIEND_API(BaseProxyHandler)
|
||||
virtual bool delete_(JSContext* cx, HandleObject proxy, HandleId id,
|
||||
ObjectOpResult& result) const = 0;
|
||||
|
||||
/*
|
||||
* Because [[Enumerate]] is one of the standard traps it should be overridden.
|
||||
* However for convenience BaseProxyHandler includes a pure virtual implementation,
|
||||
* that turns the properties returned by getOwnEnumerablePropertyKeys (and proto walking)
|
||||
* into an Iterator object.
|
||||
*/
|
||||
virtual bool enumerate(JSContext* cx, HandleObject proxy, MutableHandleObject objp) const = 0;
|
||||
|
||||
/*
|
||||
* These methods are standard, but the engine does not normally call them.
|
||||
* They're opt-in. See "Proxy prototype chains" above.
|
||||
@ -315,6 +306,7 @@ class JS_FRIEND_API(BaseProxyHandler)
|
||||
virtual bool construct(JSContext* cx, HandleObject proxy, const CallArgs& args) const;
|
||||
|
||||
/* SpiderMonkey extensions. */
|
||||
virtual bool enumerate(JSContext* cx, HandleObject proxy, MutableHandleObject objp) const;
|
||||
virtual bool getPropertyDescriptor(JSContext* cx, HandleObject proxy, HandleId id,
|
||||
MutableHandle<PropertyDescriptor> desc) const;
|
||||
virtual bool hasOwn(JSContext* cx, HandleObject proxy, HandleId id, bool* bp) const;
|
||||
|
@ -493,13 +493,6 @@ ModuleNamespaceObject::ProxyHandler::delete_(JSContext* cx, HandleObject proxy,
|
||||
return result.succeed();
|
||||
}
|
||||
|
||||
bool
|
||||
ModuleNamespaceObject::ProxyHandler::enumerate(JSContext* cx, HandleObject proxy,
|
||||
MutableHandleObject objp) const
|
||||
{
|
||||
return BaseProxyHandler::enumerate(cx, proxy, objp);
|
||||
}
|
||||
|
||||
bool
|
||||
ModuleNamespaceObject::ProxyHandler::ownPropertyKeys(JSContext* cx, HandleObject proxy,
|
||||
AutoIdVector& props) const
|
||||
|
@ -162,7 +162,6 @@ class ModuleNamespaceObject : public ProxyObject
|
||||
AutoIdVector& props) const override;
|
||||
bool delete_(JSContext* cx, HandleObject proxy, HandleId id,
|
||||
ObjectOpResult& result) const override;
|
||||
bool enumerate(JSContext* cx, HandleObject proxy, MutableHandleObject objp) const override;
|
||||
bool getPrototype(JSContext* cx, HandleObject proxy,
|
||||
MutableHandleObject protop) const override;
|
||||
bool setPrototype(JSContext* cx, HandleObject proxy, HandleObject proto,
|
||||
|
@ -53,13 +53,6 @@ DeadObjectProxy::delete_(JSContext* cx, HandleObject wrapper, HandleId id,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
DeadObjectProxy::enumerate(JSContext* cx, HandleObject wrapper, MutableHandleObject objp) const
|
||||
{
|
||||
ReportDead(cx);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
DeadObjectProxy::getPrototype(JSContext* cx, HandleObject proxy, MutableHandleObject protop) const
|
||||
{
|
||||
|
@ -28,7 +28,6 @@ class DeadObjectProxy : public BaseProxyHandler
|
||||
AutoIdVector& props) const override;
|
||||
virtual bool delete_(JSContext* cx, HandleObject wrapper, HandleId id,
|
||||
ObjectOpResult& result) const override;
|
||||
virtual bool enumerate(JSContext* cx, HandleObject wrapper, MutableHandleObject objp) const override;
|
||||
virtual bool getPrototype(JSContext* cx, HandleObject proxy,
|
||||
MutableHandleObject protop) const override;
|
||||
virtual bool preventExtensions(JSContext* cx, HandleObject proxy,
|
||||
@ -39,6 +38,7 @@ class DeadObjectProxy : public BaseProxyHandler
|
||||
|
||||
/* SpiderMonkey extensions. */
|
||||
// BaseProxyHandler::getPropertyDescriptor will throw by calling getOwnPropertyDescriptor.
|
||||
// BaseProxyHandler::enumerate will throw by calling ownKeys.
|
||||
virtual bool nativeCall(JSContext* cx, IsAcceptableThis test, NativeImpl impl,
|
||||
const CallArgs& args) const override;
|
||||
virtual bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v,
|
||||
|
@ -2333,11 +2333,6 @@ class DebugScopeProxy : public BaseProxyHandler
|
||||
return true;
|
||||
}
|
||||
|
||||
bool enumerate(JSContext* cx, HandleObject proxy, MutableHandleObject objp) const override
|
||||
{
|
||||
return BaseProxyHandler::enumerate(cx, proxy, objp);
|
||||
}
|
||||
|
||||
bool has(JSContext* cx, HandleObject proxy, HandleId id_, bool* bp) const override
|
||||
{
|
||||
RootedId id(cx, id_);
|
||||
|
Loading…
Reference in New Issue
Block a user