Bug 975042 - Make enumerateNames trap virtual. r=peterv

This commit is contained in:
Bobby Holley 2014-03-20 23:47:24 -03:00
parent 3ef7622033
commit b65a5d12b4

View File

@ -206,8 +206,8 @@ public:
static bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id, static bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
MutableHandle<JSPropertyDescriptor> desc, MutableHandle<JSPropertyDescriptor> desc,
Handle<JSPropertyDescriptor> existingDesc, bool *defined); Handle<JSPropertyDescriptor> existingDesc, bool *defined);
static 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, js::Wrapper& baseInstance);
static bool construct(JSContext *cx, HandleObject wrapper, static bool construct(JSContext *cx, HandleObject wrapper,
@ -257,8 +257,8 @@ public:
static bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id, static bool defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
MutableHandle<JSPropertyDescriptor> desc, MutableHandle<JSPropertyDescriptor> desc,
Handle<JSPropertyDescriptor> existingDesc, bool *defined); Handle<JSPropertyDescriptor> existingDesc, bool *defined);
static 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, js::Wrapper& baseInstance);
static bool construct(JSContext *cx, HandleObject wrapper, static bool construct(JSContext *cx, HandleObject wrapper,
@ -309,8 +309,8 @@ public:
return true; return true;
} }
static bool enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags, virtual bool enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags,
AutoIdVector &props) AutoIdVector &props)
{ {
MOZ_ASSUME_UNREACHABLE("Not yet implemented"); MOZ_ASSUME_UNREACHABLE("Not yet implemented");
} }
@ -1921,7 +1921,7 @@ XrayWrapper<Base, Traits>::enumerate(JSContext *cx, HandleObject wrapper, unsign
if (!JS_WrapAutoIdVector(cx, props)) if (!JS_WrapAutoIdVector(cx, props))
return false; return false;
return Traits::enumerateNames(cx, wrapper, flags, props); return Traits::singleton.enumerateNames(cx, wrapper, flags, props);
} }
template <typename Base, typename Traits> template <typename Base, typename Traits>