--- a/js/src/jswrapper.h
+++ b/js/src/jswrapper.h
@@ -37,16 +37,18 @@
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef jswrapper_h___
#define jswrapper_h___
+#include "mozilla/Types.h"
+
#include "jsapi.h"
#include "jsproxy.h"
namespace js {
/* No-op wrapper handler base class. */
class JS_FRIEND_API(Wrapper) : public ProxyHandler
{
@@ -57,47 +59,47 @@ class JS_FRIEND_API(Wrapper) : public Pr
explicit Wrapper(uintN flags);
typedef enum { PermitObjectAccess, PermitPropertyAccess, DenyAccess } Permission;
virtual ~Wrapper();
/* ES5 Harmony fundamental wrapper traps. */
virtual bool getPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
- PropertyDescriptor *desc);
+ PropertyDescriptor *desc) MOZ_OVERRIDE;
virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
- PropertyDescriptor *desc);
+ PropertyDescriptor *desc) MOZ_OVERRIDE;
virtual bool defineProperty(JSContext *cx, JSObject *wrapper, jsid id,
- PropertyDescriptor *desc);
- virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props);
- virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp);
- virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props);
- virtual bool fix(JSContext *cx, JSObject *wrapper, Value *vp);
+ PropertyDescriptor *desc) MOZ_OVERRIDE;
+ virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props) MOZ_OVERRIDE;
+ virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) MOZ_OVERRIDE;
+ virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props) MOZ_OVERRIDE;
+ virtual bool fix(JSContext *cx, JSObject *wrapper, Value *vp) MOZ_OVERRIDE;
/* ES5 Harmony derived wrapper traps. */
- virtual bool has(JSContext *cx, JSObject *wrapper, jsid id, bool *bp);
- virtual bool hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp);
- virtual bool get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp);
+ virtual bool has(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) MOZ_OVERRIDE;
+ virtual bool hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) MOZ_OVERRIDE;
+ virtual bool get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp) MOZ_OVERRIDE;
virtual bool set(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, bool strict,
- Value *vp);
- virtual bool keys(JSContext *cx, JSObject *wrapper, AutoIdVector &props);
- virtual bool iterate(JSContext *cx, JSObject *wrapper, uintN flags, Value *vp);
+ Value *vp) MOZ_OVERRIDE;
+ virtual bool keys(JSContext *cx, JSObject *wrapper, AutoIdVector &props) MOZ_OVERRIDE;
+ virtual bool iterate(JSContext *cx, JSObject *wrapper, uintN flags, Value *vp) MOZ_OVERRIDE;
/* Spidermonkey extensions. */
- virtual bool call(JSContext *cx, JSObject *wrapper, uintN argc, Value *vp);
- virtual bool construct(JSContext *cx, JSObject *wrapper, uintN argc, Value *argv, Value *rval);
- virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args);
- virtual bool hasInstance(JSContext *cx, JSObject *wrapper, const Value *vp, bool *bp);
- virtual JSType typeOf(JSContext *cx, JSObject *proxy);
- virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx);
- virtual JSString *obj_toString(JSContext *cx, JSObject *wrapper);
- virtual JSString *fun_toString(JSContext *cx, JSObject *wrapper, uintN indent);
- virtual bool defaultValue(JSContext *cx, JSObject *wrapper, JSType hint, Value *vp);
+ virtual bool call(JSContext *cx, JSObject *wrapper, uintN argc, Value *vp) MOZ_OVERRIDE;
+ virtual bool construct(JSContext *cx, JSObject *wrapper, uintN argc, Value *argv, Value *rval) MOZ_OVERRIDE;
+ virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args) MOZ_OVERRIDE;
+ virtual bool hasInstance(JSContext *cx, JSObject *wrapper, const Value *vp, bool *bp) MOZ_OVERRIDE;
+ virtual JSType typeOf(JSContext *cx, JSObject *proxy) MOZ_OVERRIDE;
+ virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx) MOZ_OVERRIDE;
+ virtual JSString *obj_toString(JSContext *cx, JSObject *wrapper) MOZ_OVERRIDE;
+ virtual JSString *fun_toString(JSContext *cx, JSObject *wrapper, uintN indent) MOZ_OVERRIDE;
+ virtual bool defaultValue(JSContext *cx, JSObject *wrapper, JSType hint, Value *vp) MOZ_OVERRIDE;
- virtual void trace(JSTracer *trc, JSObject *wrapper);
+ virtual void trace(JSTracer *trc, JSObject *wrapper) MOZ_OVERRIDE;
/* Policy enforcement traps. */
enum Action { GET, SET, CALL };
virtual bool enter(JSContext *cx, JSObject *wrapper, jsid id, Action act, bool *bp);
virtual void leave(JSContext *cx, JSObject *wrapper);
static Wrapper singleton;
@@ -120,44 +122,44 @@ class JS_FRIEND_API(CrossCompartmentWrap
{
public:
CrossCompartmentWrapper(uintN flags);
virtual ~CrossCompartmentWrapper();
/* ES5 Harmony fundamental wrapper traps. */
virtual bool getPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
- PropertyDescriptor *desc);
+ PropertyDescriptor *desc) MOZ_OVERRIDE;
virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
- PropertyDescriptor *desc);
+ PropertyDescriptor *desc) MOZ_OVERRIDE;
virtual bool defineProperty(JSContext *cx, JSObject *wrapper, jsid id,
- PropertyDescriptor *desc);
- virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props);
- virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp);
- virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props);
+ PropertyDescriptor *desc) MOZ_OVERRIDE;
+ virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props) MOZ_OVERRIDE;
+ virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) MOZ_OVERRIDE;
+ virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props) MOZ_OVERRIDE;
/* ES5 Harmony derived wrapper traps. */
- virtual bool has(JSContext *cx, JSObject *wrapper, jsid id, bool *bp);
- virtual bool hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp);
- virtual bool get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp);
+ virtual bool has(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) MOZ_OVERRIDE;
+ virtual bool hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) MOZ_OVERRIDE;
+ virtual bool get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp) MOZ_OVERRIDE;
virtual bool set(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, bool strict,
- Value *vp);
- virtual bool keys(JSContext *cx, JSObject *wrapper, AutoIdVector &props);
- virtual bool iterate(JSContext *cx, JSObject *wrapper, uintN flags, Value *vp);
+ Value *vp) MOZ_OVERRIDE;
+ virtual bool keys(JSContext *cx, JSObject *wrapper, AutoIdVector &props) MOZ_OVERRIDE;
+ virtual bool iterate(JSContext *cx, JSObject *wrapper, uintN flags, Value *vp) MOZ_OVERRIDE;
/* Spidermonkey extensions. */
- virtual bool call(JSContext *cx, JSObject *wrapper, uintN argc, Value *vp);
- virtual bool construct(JSContext *cx, JSObject *wrapper, uintN argc, Value *argv, Value *rval);
- virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args);
- virtual bool hasInstance(JSContext *cx, JSObject *wrapper, const Value *vp, bool *bp);
- virtual JSString *obj_toString(JSContext *cx, JSObject *wrapper);
- virtual JSString *fun_toString(JSContext *cx, JSObject *wrapper, uintN indent);
- virtual bool defaultValue(JSContext *cx, JSObject *wrapper, JSType hint, Value *vp);
+ virtual bool call(JSContext *cx, JSObject *wrapper, uintN argc, Value *vp) MOZ_OVERRIDE;
+ virtual bool construct(JSContext *cx, JSObject *wrapper, uintN argc, Value *argv, Value *rval) MOZ_OVERRIDE;
+ virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args) MOZ_OVERRIDE;
+ virtual bool hasInstance(JSContext *cx, JSObject *wrapper, const Value *vp, bool *bp) MOZ_OVERRIDE;
+ virtual JSString *obj_toString(JSContext *cx, JSObject *wrapper) MOZ_OVERRIDE;
+ virtual JSString *fun_toString(JSContext *cx, JSObject *wrapper, uintN indent) MOZ_OVERRIDE;
+ virtual bool defaultValue(JSContext *cx, JSObject *wrapper, JSType hint, Value *vp) MOZ_OVERRIDE;
- virtual void trace(JSTracer *trc, JSObject *wrapper);
+ virtual void trace(JSTracer *trc, JSObject *wrapper) MOZ_OVERRIDE;
static CrossCompartmentWrapper singleton;
};
/*
* Base class for security wrappers. A security wrapper is potentially hiding
* all or part of some wrapped object thus SecurityWrapper defaults to denying
* access to the wrappee. This is the opposite of Wrapper which tries to be
@@ -167,18 +169,18 @@ class JS_FRIEND_API(CrossCompartmentWrap
* access, relying on derived SecurityWrapper to block access when necessary.
*/
template <class Base>
class JS_FRIEND_API(SecurityWrapper) : public Base
{
public:
SecurityWrapper(uintN flags);
- virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args);
- virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx);
+ virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args) MOZ_OVERRIDE;
+ virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx) MOZ_OVERRIDE;
};
typedef SecurityWrapper<Wrapper> SameCompartmentSecurityWrapper;
typedef SecurityWrapper<CrossCompartmentWrapper> CrossCompartmentSecurityWrapper;
/*
* A hacky class that lets a friend force a fake frame. We must already be
* in the compartment of |target| when we enter the forced frame.