123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #include "nsISupports.idl"
- #include "nsIClassInfo.idl"
- %{C++
- #ifdef XP_WIN
- #undef GetClassName
- #endif
- #include "js/TypeDecls.h"
- struct JSFreeOp;
- namespace js {
- struct Class;
- }
- %}
- interface nsIXPConnectWrappedNative;
- [ptr] native JSContextPtr(JSContext);
- [ptr] native JSObjectPtr(JSObject);
- [ptr] native JSValPtr(JS::Value);
- [ptr] native JSFreeOpPtr(JSFreeOp);
- [ref] native JSCallArgsRef(const JS::CallArgs);
- [ref] native JSAutoIdVector(JS::AutoIdVector);
- [ptr] native jsClassPtr(const js::Class);
- /**
- * Note: This is not really an XPCOM interface. For example, callers must
- * guarantee that they set the *_retval of the various methods that return a
- * boolean to PR_TRUE before making the call. Implementations may skip writing
- * to *_retval unless they want to return PR_FALSE.
- */
- [uuid(19b70b26-7c3f-437f-a04a-2a8f9e28b617)]
- interface nsIXPCScriptable : nsISupports
- {
- /* bitflags used for 'flags' (only 32 bits available!) */
- const uint32_t WANT_PRECREATE = 1 << 0;
- // unused bit here
- // unused bit here
- const uint32_t WANT_ADDPROPERTY = 1 << 3;
- // unused bit here
- const uint32_t WANT_GETPROPERTY = 1 << 5;
- const uint32_t WANT_SETPROPERTY = 1 << 6;
- const uint32_t WANT_ENUMERATE = 1 << 7;
- const uint32_t WANT_NEWENUMERATE = 1 << 8;
- const uint32_t WANT_RESOLVE = 1 << 9;
- // unused bit here
- const uint32_t WANT_FINALIZE = 1 << 11;
- // unused bit here!
- const uint32_t WANT_CALL = 1 << 13;
- const uint32_t WANT_CONSTRUCT = 1 << 14;
- const uint32_t WANT_HASINSTANCE = 1 << 15;
- // Unused bit here!
- const uint32_t USE_JSSTUB_FOR_ADDPROPERTY = 1 << 17;
- const uint32_t USE_JSSTUB_FOR_DELPROPERTY = 1 << 18;
- const uint32_t USE_JSSTUB_FOR_SETPROPERTY = 1 << 19;
- // Unused bit here!
- const uint32_t DONT_ENUM_QUERY_INTERFACE = 1 << 21;
- const uint32_t DONT_ASK_INSTANCE_FOR_SCRIPTABLE = 1 << 22;
- const uint32_t CLASSINFO_INTERFACES_ONLY = 1 << 23;
- const uint32_t ALLOW_PROP_MODS_DURING_RESOLVE = 1 << 24;
- const uint32_t ALLOW_PROP_MODS_TO_PROTOTYPE = 1 << 25;
- const uint32_t IS_GLOBAL_OBJECT = 1 << 26;
- const uint32_t DONT_REFLECT_INTERFACE_NAMES = 1 << 27;
- // The high order bit is RESERVED for consumers of these flags.
- // No implementor of this interface should ever return flags
- // with this bit set.
- const uint32_t RESERVED = 1 << 31;
- readonly attribute string className;
- [notxpcom,nostdcall] uint32_t getScriptableFlags();
- [notxpcom,nostdcall] jsClassPtr getClass();
- void preCreate(in nsISupports nativeObj, in JSContextPtr cx,
- in JSObjectPtr globalObj, out JSObjectPtr parentObj);
- boolean addProperty(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj, in jsid id,
- in jsval val);
- boolean getProperty(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj, in jsid id,
- in JSValPtr vp);
- boolean setProperty(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj, in jsid id,
- in JSValPtr vp);
- boolean enumerate(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj);
- boolean newEnumerate(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj,
- in JSAutoIdVector properties);
- boolean resolve(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj, in jsid id,
- out boolean resolvedp);
- void finalize(in nsIXPConnectWrappedNative wrapper,
- in JSFreeOpPtr fop, in JSObjectPtr obj);
- boolean call(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj,
- in JSCallArgsRef args);
- boolean construct(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj,
- in JSCallArgsRef args);
- boolean hasInstance(in nsIXPConnectWrappedNative wrapper,
- in JSContextPtr cx, in JSObjectPtr obj,
- in jsval val, out boolean bp);
- void postCreatePrototype(in JSContextPtr cx, in JSObjectPtr proto);
- };
- %{ C++
- #include "nsAutoPtr.h"
- #define NS_XPCCLASSINFO_IID \
- { 0x43b67f01, 0xd4ce, 0x4b82, \
- { 0xb3, 0xf8, 0xeb, 0xf2, 0x13, 0x60, 0xfb, 0x7e } }
- class NS_NO_VTABLE nsXPCClassInfo : public nsIClassInfo,
- public nsIXPCScriptable
- {
- public:
- NS_DECLARE_STATIC_IID_ACCESSOR(NS_XPCCLASSINFO_IID)
- NS_IMETHOD_(MozExternalRefCountType) AddRef() override = 0;
- NS_IMETHOD_(MozExternalRefCountType) Release() override = 0;
- virtual void PreserveWrapper(nsISupports *aNative) = 0;
- };
- NS_DEFINE_STATIC_IID_ACCESSOR(nsXPCClassInfo, NS_XPCCLASSINFO_IID)
- inline
- nsresult
- CallQueryInterface(nsISupports* aSourcePtr,
- RefPtrGetterAddRefs<nsXPCClassInfo> aDestPtr)
- {
- return CallQueryInterface(aSourcePtr,
- static_cast<nsXPCClassInfo**>(aDestPtr));
- }
- %}
|