mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 687332: Move inline event listeners on FileReader to the event listener manager. r=smaug
This commit is contained in:
parent
e60509c0df
commit
1eecbf1d0e
@ -94,54 +94,52 @@ protected:
|
||||
};
|
||||
|
||||
#define NS_DECL_EVENT_HANDLER(_event) \
|
||||
protected: \
|
||||
nsRefPtr<nsDOMEventListenerWrapper> mOn##_event##Listener; \
|
||||
public:
|
||||
public: \
|
||||
NS_IMETHOD GetOn##_event(JSContext *cx, jsval *vp); \
|
||||
NS_IMETHOD SetOn##_event(JSContext *cx, const jsval &vp);
|
||||
|
||||
#define NS_DECL_AND_IMPL_EVENT_HANDLER(_event) \
|
||||
protected: \
|
||||
nsRefPtr<nsDOMEventListenerWrapper> mOn##_event##Listener; \
|
||||
public: \
|
||||
NS_IMETHOD GetOn##_event(nsIDOMEventListener** a##_event) \
|
||||
{ \
|
||||
return GetInnerEventListener(mOn##_event##Listener, a##_event); \
|
||||
} \
|
||||
NS_IMETHOD SetOn##_event(nsIDOMEventListener* a##_event) \
|
||||
{ \
|
||||
return RemoveAddEventListener(NS_LITERAL_STRING(#_event), \
|
||||
mOn##_event##Listener, a##_event); \
|
||||
}
|
||||
NS_IMPL_EVENT_HANDLER(_class, _event)
|
||||
|
||||
#define NS_IMPL_EVENT_HANDLER(_class, _event) \
|
||||
NS_IMETHODIMP \
|
||||
_class::GetOn##_event(nsIDOMEventListener** a##_event) \
|
||||
_class::GetOn##_event(JSContext *cx, jsval *vp) \
|
||||
{ \
|
||||
return GetInnerEventListener(mOn##_event##Listener, a##_event); \
|
||||
nsEventListenerManager* elm = GetListenerManager(PR_FALSE); \
|
||||
if (elm) { \
|
||||
elm->GetJSEventListener(nsGkAtoms::on##_event, vp); \
|
||||
} else { \
|
||||
*vp = JSVAL_NULL; \
|
||||
} \
|
||||
return NS_OK; \
|
||||
} \
|
||||
NS_IMETHODIMP \
|
||||
_class::SetOn##_event(nsIDOMEventListener* a##_event) \
|
||||
_class::SetOn##_event(JSContext *cx, const jsval &vp) \
|
||||
{ \
|
||||
return RemoveAddEventListener(NS_LITERAL_STRING(#_event), \
|
||||
mOn##_event##Listener, a##_event); \
|
||||
nsEventListenerManager* elm = GetListenerManager(PR_TRUE); \
|
||||
if (!elm) { \
|
||||
return NS_ERROR_OUT_OF_MEMORY; \
|
||||
} \
|
||||
\
|
||||
JSObject *obj = GetWrapper(); \
|
||||
if (!obj) { \
|
||||
/* Just silently do nothing */ \
|
||||
return NS_OK; \
|
||||
} \
|
||||
return elm->SetJSEventListenerToJsval(nsGkAtoms::on##_event, cx, obj, vp);\
|
||||
}
|
||||
|
||||
#define NS_IMPL_FORWARD_EVENT_HANDLER(_class, _event, _baseclass) \
|
||||
NS_IMETHODIMP \
|
||||
_class::GetOn##_event(nsIDOMEventListener** a##_event) \
|
||||
_class::GetOn##_event(JSContext *cx, jsval *vp) \
|
||||
{ \
|
||||
return _baseclass::GetOn##_event(a##_event); \
|
||||
return _baseclass::GetOn##_event(cx, vp); \
|
||||
} \
|
||||
NS_IMETHODIMP \
|
||||
_class::SetOn##_event(nsIDOMEventListener* a##_event) \
|
||||
_class::SetOn##_event(JSContext *cx, const jsval &vp) \
|
||||
{ \
|
||||
return _baseclass::SetOn##_event(a##_event); \
|
||||
return _baseclass::SetOn##_event(cx, vp); \
|
||||
}
|
||||
|
||||
#define NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(_event) \
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mOn##_event##Listener)
|
||||
|
||||
#define NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(_event) \
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mOn##_event##Listener)
|
||||
|
||||
|
||||
#endif // nsDOMEventTargetWrapperCache_h__
|
||||
|
@ -41,7 +41,7 @@ interface nsIDOMEventListener;
|
||||
interface nsIDOMBlob;
|
||||
interface nsIDOMFileError;
|
||||
|
||||
[scriptable, builtinclass, uuid(fc316500-87c4-411e-ab75-dd62468f4174)]
|
||||
[scriptable, builtinclass, uuid(57d68e17-85fa-4509-bf71-ffac1b22a174)]
|
||||
interface nsIDOMFileReader : nsIDOMEventTarget
|
||||
{
|
||||
[implicit_jscontext]
|
||||
@ -61,12 +61,12 @@ interface nsIDOMFileReader : nsIDOMEventTarget
|
||||
readonly attribute jsval result;
|
||||
readonly attribute nsIDOMFileError error;
|
||||
|
||||
attribute nsIDOMEventListener onloadstart;
|
||||
attribute nsIDOMEventListener onprogress;
|
||||
attribute nsIDOMEventListener onload;
|
||||
attribute nsIDOMEventListener onabort;
|
||||
attribute nsIDOMEventListener onerror;
|
||||
attribute nsIDOMEventListener onloadend;
|
||||
[implicit_jscontext] attribute jsval onloadstart;
|
||||
[implicit_jscontext] attribute jsval onprogress;
|
||||
[implicit_jscontext] attribute jsval onload;
|
||||
[implicit_jscontext] attribute jsval onabort;
|
||||
[implicit_jscontext] attribute jsval onerror;
|
||||
[implicit_jscontext] attribute jsval onloadend;
|
||||
};
|
||||
|
||||
%{ C++
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include "nsIDOMProgressEvent.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsEventDispatcher.h"
|
||||
#include "nsGkAtoms.h"
|
||||
|
||||
#define ERROR_STR "error"
|
||||
#define ABORT_STR "abort"
|
||||
@ -67,19 +68,17 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(FileIOObject)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(FileIOObject,
|
||||
nsDOMEventTargetWrapperCache)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mProgressNotifier)
|
||||
NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(abort)
|
||||
NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(error)
|
||||
NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(progress)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(FileIOObject,
|
||||
nsDOMEventTargetWrapperCache)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mProgressNotifier)
|
||||
NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(abort)
|
||||
NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(error)
|
||||
NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(progress)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
NS_IMPL_EVENT_HANDLER(FileIOObject, abort)
|
||||
NS_IMPL_EVENT_HANDLER(FileIOObject, error)
|
||||
NS_IMPL_EVENT_HANDLER(FileIOObject, progress)
|
||||
|
||||
FileIOObject::FileIOObject()
|
||||
: mProgressEventWasDelayed(PR_FALSE),
|
||||
mTimerIsActive(PR_FALSE),
|
||||
|
@ -72,9 +72,9 @@ public:
|
||||
NS_METHOD GetReadyState(PRUint16* aReadyState);
|
||||
NS_METHOD GetError(nsIDOMFileError** aError);
|
||||
|
||||
NS_DECL_AND_IMPL_EVENT_HANDLER(abort);
|
||||
NS_DECL_AND_IMPL_EVENT_HANDLER(error);
|
||||
NS_DECL_AND_IMPL_EVENT_HANDLER(progress);
|
||||
NS_DECL_EVENT_HANDLER(abort);
|
||||
NS_DECL_EVENT_HANDLER(error);
|
||||
NS_DECL_EVENT_HANDLER(progress);
|
||||
|
||||
NS_DECL_NSITIMERCALLBACK
|
||||
|
||||
|
@ -96,9 +96,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsDOMFileReader,
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mFile)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mPrincipal)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mChannel)
|
||||
NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(load)
|
||||
NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(loadstart)
|
||||
NS_CYCLE_COLLECTION_TRAVERSE_EVENT_HANDLER(loadend)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsDOMFileReader,
|
||||
@ -106,9 +103,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsDOMFileReader,
|
||||
tmp->mResultArrayBuffer = nsnull;
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mFile)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mPrincipal)
|
||||
NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(load)
|
||||
NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(loadstart)
|
||||
NS_CYCLE_COLLECTION_UNLINK_EVENT_HANDLER(loadend)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
|
||||
|
@ -83,10 +83,6 @@ public:
|
||||
// nsIInterfaceRequestor
|
||||
NS_DECL_NSIINTERFACEREQUESTOR
|
||||
|
||||
NS_DECL_EVENT_HANDLER(load)
|
||||
NS_DECL_EVENT_HANDLER(loadend)
|
||||
NS_DECL_EVENT_HANDLER(loadstart)
|
||||
|
||||
// nsIJSNativeInitializer
|
||||
NS_IMETHOD Initialize(nsISupports* aOwner, JSContext* cx, JSObject* obj,
|
||||
PRUint32 argc, jsval* argv);
|
||||
|
@ -1790,6 +1790,7 @@ GK_ATOM(svgTSpanFrame, "SVGTSpanFrame")
|
||||
GK_ATOM(svgUseFrame, "SVGUseFrame")
|
||||
GK_ATOM(HTMLVideoFrame, "VideoFrame")
|
||||
GK_ATOM(onloadstart, "onloadstart")
|
||||
GK_ATOM(onloadend, "onloadend")
|
||||
GK_ATOM(onprogress, "onprogress")
|
||||
GK_ATOM(onsuspend, "onsuspend")
|
||||
GK_ATOM(onemptied, "onemptied")
|
||||
|
Loading…
Reference in New Issue
Block a user