mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
Bug 638054 - Remove watch class-hook and proxy trap r=jorendorff,bz
This commit is contained in:
parent
25e271696a
commit
7a6aff2c7e
@ -1125,11 +1125,6 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
bool watch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||
JS::Handle<jsid> id, JS::Handle<JSObject*> callable) const override;
|
||||
bool unwatch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||
JS::Handle<jsid> id) const override;
|
||||
|
||||
static const nsOuterWindowProxy singleton;
|
||||
|
||||
protected:
|
||||
@ -1478,20 +1473,6 @@ nsOuterWindowProxy::AppendIndexedPropertyNames(JSContext *cx, JSObject *proxy,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
nsOuterWindowProxy::watch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||
JS::Handle<jsid> id, JS::Handle<JSObject*> callable) const
|
||||
{
|
||||
return js::WatchGuts(cx, proxy, id, callable);
|
||||
}
|
||||
|
||||
bool
|
||||
nsOuterWindowProxy::unwatch(JSContext *cx, JS::Handle<JSObject*> proxy,
|
||||
JS::Handle<jsid> id) const
|
||||
{
|
||||
return js::UnwatchGuts(cx, proxy, id);
|
||||
}
|
||||
|
||||
size_t
|
||||
nsOuterWindowProxy::objectMoved(JSObject *obj, JSObject *old) const
|
||||
{
|
||||
|
@ -2067,8 +2067,6 @@ const js::ObjectOps sInterfaceObjectClassObjectOps = {
|
||||
nullptr, /* setProperty */
|
||||
nullptr, /* getOwnPropertyDescriptor */
|
||||
nullptr, /* deleteProperty */
|
||||
nullptr, /* watch */
|
||||
nullptr, /* unwatch */
|
||||
nullptr, /* getElements */
|
||||
InterfaceObjectToString, /* funToString */
|
||||
};
|
||||
|
@ -13556,9 +13556,9 @@ class CGDictionary(CGThing):
|
||||
# continues to match the list in test_Object.prototype_props.html
|
||||
if (member.identifier.name in
|
||||
["constructor", "toSource", "toString", "toLocaleString", "valueOf",
|
||||
"watch", "unwatch", "hasOwnProperty", "isPrototypeOf",
|
||||
"propertyIsEnumerable", "__defineGetter__", "__defineSetter__",
|
||||
"__lookupGetter__", "__lookupSetter__", "__proto__"]):
|
||||
"hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable",
|
||||
"__defineGetter__", "__defineSetter__", "__lookupGetter__",
|
||||
"__lookupSetter__", "__proto__"]):
|
||||
raise TypeError("'%s' member of %s dictionary shadows "
|
||||
"a property of Object.prototype, and Xrays to "
|
||||
"Object can't handle that.\n"
|
||||
|
@ -233,19 +233,6 @@ DOMProxyHandler::delete_(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||
return result.succeed();
|
||||
}
|
||||
|
||||
bool
|
||||
BaseDOMProxyHandler::watch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||
JS::Handle<JSObject*> callable) const
|
||||
{
|
||||
return js::WatchGuts(cx, proxy, id, callable);
|
||||
}
|
||||
|
||||
bool
|
||||
BaseDOMProxyHandler::unwatch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id) const
|
||||
{
|
||||
return js::UnwatchGuts(cx, proxy, id);
|
||||
}
|
||||
|
||||
bool
|
||||
BaseDOMProxyHandler::ownPropertyKeys(JSContext* cx,
|
||||
JS::Handle<JSObject*> proxy,
|
||||
|
@ -66,11 +66,6 @@ public:
|
||||
virtual bool getOwnEnumerablePropertyKeys(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||
JS::AutoIdVector &props) const override;
|
||||
|
||||
bool watch(JSContext* cx, JS::Handle<JSObject*> proxy, JS::Handle<jsid> id,
|
||||
JS::Handle<JSObject*> callable) const override;
|
||||
bool unwatch(JSContext* cx, JS::Handle<JSObject*> proxy,
|
||||
JS::Handle<jsid> id) const override;
|
||||
|
||||
protected:
|
||||
// Hook for subclasses to implement shared ownPropertyKeys()/keys()
|
||||
// functionality. The "flags" argument is either JSITER_OWNONLY (for keys())
|
||||
|
@ -537,12 +537,6 @@ typedef bool
|
||||
(* DeletePropertyOp)(JSContext* cx, JS::HandleObject obj, JS::HandleId id,
|
||||
JS::ObjectOpResult& result);
|
||||
|
||||
typedef bool
|
||||
(* WatchOp)(JSContext* cx, JS::HandleObject obj, JS::HandleId id, JS::HandleObject callable);
|
||||
|
||||
typedef bool
|
||||
(* UnwatchOp)(JSContext* cx, JS::HandleObject obj, JS::HandleId id);
|
||||
|
||||
class JS_FRIEND_API(ElementAdder)
|
||||
{
|
||||
public:
|
||||
@ -741,8 +735,6 @@ struct JS_STATIC_CLASS ObjectOps
|
||||
SetPropertyOp setProperty;
|
||||
GetOwnPropertyOp getOwnPropertyDescriptor;
|
||||
DeletePropertyOp deleteProperty;
|
||||
WatchOp watch;
|
||||
UnwatchOp unwatch;
|
||||
GetElementsOp getElements;
|
||||
JSFunToStringOp funToString;
|
||||
};
|
||||
@ -896,8 +888,8 @@ struct JS_STATIC_CLASS Class
|
||||
* Objects of this class aren't native objects. They don't have Shapes that
|
||||
* describe their properties and layout. Classes using this flag must
|
||||
* provide their own property behavior, either by being proxy classes (do
|
||||
* this) or by overriding all the ObjectOps except getElements, watch and
|
||||
* unwatch (don't do this).
|
||||
* this) or by overriding all the ObjectOps except getElements
|
||||
* (don't do this).
|
||||
*/
|
||||
static const uint32_t NON_NATIVE = JSCLASS_INTERNAL_FLAG2;
|
||||
|
||||
@ -974,8 +966,6 @@ struct JS_STATIC_CLASS Class
|
||||
const { return oOps ? oOps->getOwnPropertyDescriptor
|
||||
: nullptr; }
|
||||
DeletePropertyOp getOpsDeleteProperty() const { return oOps ? oOps->deleteProperty : nullptr; }
|
||||
WatchOp getOpsWatch() const { return oOps ? oOps->watch : nullptr; }
|
||||
UnwatchOp getOpsUnwatch() const { return oOps ? oOps->unwatch : nullptr; }
|
||||
GetElementsOp getOpsGetElements() const { return oOps ? oOps->getElements : nullptr; }
|
||||
JSFunToStringOp getOpsFunToString() const { return oOps ? oOps->funToString : nullptr; }
|
||||
};
|
||||
|
@ -344,12 +344,6 @@ class JS_FRIEND_API(BaseProxyHandler)
|
||||
virtual bool isCallable(JSObject* obj) const;
|
||||
virtual bool isConstructor(JSObject* obj) const;
|
||||
|
||||
// These two hooks must be overridden, or not overridden, in tandem -- no
|
||||
// overriding just one!
|
||||
virtual bool watch(JSContext* cx, JS::HandleObject proxy, JS::HandleId id,
|
||||
JS::HandleObject callable) const;
|
||||
virtual bool unwatch(JSContext* cx, JS::HandleObject proxy, JS::HandleId id) const;
|
||||
|
||||
virtual bool getElements(JSContext* cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
||||
ElementAdder* adder) const;
|
||||
|
||||
|
@ -3037,9 +3037,6 @@ js::UnwatchGuts(JSContext* cx, JS::HandleObject origObj, JS::HandleId id)
|
||||
bool
|
||||
js::WatchProperty(JSContext* cx, HandleObject obj, HandleId id, HandleObject callable)
|
||||
{
|
||||
if (WatchOp op = obj->getOpsWatch())
|
||||
return op(cx, obj, id, callable);
|
||||
|
||||
if (!obj->isNative() || obj->is<TypedArrayObject>()) {
|
||||
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_CANT_WATCH,
|
||||
obj->getClass()->name);
|
||||
@ -3052,9 +3049,6 @@ js::WatchProperty(JSContext* cx, HandleObject obj, HandleId id, HandleObject cal
|
||||
bool
|
||||
js::UnwatchProperty(JSContext* cx, HandleObject obj, HandleId id)
|
||||
{
|
||||
if (UnwatchOp op = obj->getOpsUnwatch())
|
||||
return op(cx, obj, id);
|
||||
|
||||
return UnwatchGuts(cx, obj, id);
|
||||
}
|
||||
|
||||
|
@ -118,8 +118,6 @@ class JSObject : public js::gc::Cell
|
||||
js::GetOwnPropertyOp getOpsGetOwnPropertyDescriptor()
|
||||
const { return getClass()->getOpsGetOwnPropertyDescriptor(); }
|
||||
js::DeletePropertyOp getOpsDeleteProperty() const { return getClass()->getOpsDeleteProperty(); }
|
||||
js::WatchOp getOpsWatch() const { return getClass()->getOpsWatch(); }
|
||||
js::UnwatchOp getOpsUnwatch() const { return getClass()->getOpsUnwatch(); }
|
||||
js::GetElementsOp getOpsGetElements() const { return getClass()->getOpsGetElements(); }
|
||||
JSFunToStringOp getOpsFunToString() const { return getClass()->getOpsFunToString(); }
|
||||
|
||||
|
@ -408,20 +408,6 @@ BaseProxyHandler::setImmutablePrototype(JSContext* cx, HandleObject proxy, bool*
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
BaseProxyHandler::watch(JSContext* cx, HandleObject proxy, HandleId id, HandleObject callable) const
|
||||
{
|
||||
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_CANT_WATCH,
|
||||
proxy->getClass()->name);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
BaseProxyHandler::unwatch(JSContext* cx, HandleObject proxy, HandleId id) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
BaseProxyHandler::getElements(JSContext* cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
||||
ElementAdder* adder) const
|
||||
|
@ -624,22 +624,6 @@ Proxy::boxedValue_unbox(JSContext* cx, HandleObject proxy, MutableHandleValue vp
|
||||
|
||||
JSObject * const TaggedProto::LazyProto = reinterpret_cast<JSObject*>(0x1);
|
||||
|
||||
/* static */ bool
|
||||
Proxy::watch(JSContext* cx, JS::HandleObject proxy, JS::HandleId id, JS::HandleObject callable)
|
||||
{
|
||||
if (!CheckRecursionLimit(cx))
|
||||
return false;
|
||||
return proxy->as<ProxyObject>().handler()->watch(cx, proxy, id, callable);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
Proxy::unwatch(JSContext* cx, JS::HandleObject proxy, JS::HandleId id)
|
||||
{
|
||||
if (!CheckRecursionLimit(cx))
|
||||
return false;
|
||||
return proxy->as<ProxyObject>().handler()->unwatch(cx, proxy, id);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
Proxy::getElements(JSContext* cx, HandleObject proxy, uint32_t begin, uint32_t end,
|
||||
ElementAdder* adder)
|
||||
@ -823,7 +807,6 @@ const ObjectOps js::ProxyObjectOps = {
|
||||
Proxy::set,
|
||||
Proxy::getOwnPropertyDescriptor,
|
||||
proxy_DeleteProperty,
|
||||
Proxy::watch, Proxy::unwatch,
|
||||
Proxy::getElements,
|
||||
Proxy::fun_toString
|
||||
};
|
||||
|
@ -67,9 +67,6 @@ class Proxy
|
||||
static RegExpShared* regexp_toShared(JSContext* cx, HandleObject proxy);
|
||||
static bool boxedValue_unbox(JSContext* cx, HandleObject proxy, MutableHandleValue vp);
|
||||
|
||||
static bool watch(JSContext* cx, HandleObject proxy, HandleId id, HandleObject callable);
|
||||
static bool unwatch(JSContext* cx, HandleObject proxy, HandleId id);
|
||||
|
||||
static bool getElements(JSContext* cx, HandleObject obj, uint32_t begin, uint32_t end,
|
||||
ElementAdder* adder);
|
||||
|
||||
|
@ -405,7 +405,6 @@ const ObjectOps ModuleEnvironmentObject::objectOps_ = {
|
||||
ModuleEnvironmentObject::setProperty,
|
||||
ModuleEnvironmentObject::getOwnPropertyDescriptor,
|
||||
ModuleEnvironmentObject::deleteProperty,
|
||||
nullptr, nullptr, /* watch/unwatch */
|
||||
nullptr, /* getElements */
|
||||
nullptr
|
||||
};
|
||||
@ -857,7 +856,6 @@ static const ObjectOps WithEnvironmentObjectOps = {
|
||||
with_SetProperty,
|
||||
with_GetOwnPropertyDescriptor,
|
||||
with_DeleteProperty,
|
||||
nullptr, nullptr, /* watch/unwatch */
|
||||
nullptr, /* getElements */
|
||||
nullptr,
|
||||
};
|
||||
@ -1224,7 +1222,6 @@ static const ObjectOps RuntimeLexicalErrorObjectObjectOps = {
|
||||
lexicalError_SetProperty,
|
||||
lexicalError_GetOwnPropertyDescriptor,
|
||||
lexicalError_DeleteProperty,
|
||||
nullptr, nullptr, /* watch/unwatch */
|
||||
nullptr, /* getElements */
|
||||
nullptr, /* this */
|
||||
};
|
||||
|
@ -895,14 +895,6 @@ UnboxedPlainObject::obj_deleteProperty(JSContext* cx, HandleObject obj, HandleId
|
||||
return DeleteProperty(cx, obj, id, result);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
UnboxedPlainObject::obj_watch(JSContext* cx, HandleObject obj, HandleId id, HandleObject callable)
|
||||
{
|
||||
if (!convertToNative(cx, obj))
|
||||
return false;
|
||||
return WatchProperty(cx, obj, id, callable);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
UnboxedPlainObject::newEnumerate(JSContext* cx, HandleObject obj, AutoIdVector& properties,
|
||||
bool enumerableOnly)
|
||||
@ -946,8 +938,6 @@ static const ObjectOps UnboxedPlainObjectObjectOps = {
|
||||
UnboxedPlainObject::obj_setProperty,
|
||||
UnboxedPlainObject::obj_getOwnPropertyDescriptor,
|
||||
UnboxedPlainObject::obj_deleteProperty,
|
||||
UnboxedPlainObject::obj_watch,
|
||||
nullptr, /* No unwatch needed, as watch() converts the object to native */
|
||||
nullptr, /* getElements */
|
||||
nullptr /* funToString */
|
||||
};
|
||||
|
@ -260,7 +260,6 @@ class UnboxedPlainObject : public UnboxedObject
|
||||
|
||||
static bool newEnumerate(JSContext* cx, HandleObject obj, AutoIdVector& properties,
|
||||
bool enumerableOnly);
|
||||
static bool obj_watch(JSContext* cx, HandleObject obj, HandleId id, HandleObject callable);
|
||||
|
||||
inline const UnboxedLayout& layout() const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user