This commit is contained in:
Olli.Pettay@helsinki.fi 2007-05-11 06:34:05 -07:00
Родитель 98144a0d8b
Коммит 40178e46a3
122 изменённых файлов: 734 добавлений и 652 удалений

Просмотреть файл

@ -50,6 +50,7 @@
#include "nsISelection.h"
#include "nsIDOMNode.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMEvent.h"
#include "nsIDOMNSEvent.h"
#include "nsIDOMMouseEvent.h"
@ -97,7 +98,6 @@
#include "nsContentCID.h"
#include "nsISelectionController.h"
#include "nsFrameSelection.h"
#include "nsIDOMEventTarget.h"
// private clipboard data flavors for html copy, used by editor when pasting
#define kHTMLContext "text/_moz_htmlcontext"
@ -190,9 +190,9 @@ nsContentAreaDragDrop::HookupTo(nsIDOMEventTarget *inAttachPoint,
nsIWebNavigation* inNavigator)
{
NS_ASSERTION(inAttachPoint, "Can't hookup Drag Listeners to NULL receiver");
mEventTarget = do_QueryInterface(inAttachPoint);
NS_ASSERTION(mEventTarget,
"Target doesn't implement nsPIDOMEventTarget as needed");
mEventReceiver = do_QueryInterface(inAttachPoint);
NS_ASSERTION(mEventReceiver,
"Target doesn't implement nsIDOMEventReceiver as needed");
mNavigator = inNavigator;
return AddDragListener();
@ -216,10 +216,10 @@ nsContentAreaDragDrop::AddDragListener()
{
nsresult rv = NS_ERROR_FAILURE;
if (mEventTarget) {
if ( mEventReceiver ) {
nsIDOMDragListener *pListener = NS_STATIC_CAST(nsIDOMDragListener *, this);
rv = mEventTarget->AddEventListenerByIID(pListener,
NS_GET_IID(nsIDOMDragListener));
rv = mEventReceiver->AddEventListenerByIID(pListener,
NS_GET_IID(nsIDOMDragListener));
if (NS_SUCCEEDED(rv))
mListenerInstalled = PR_TRUE;
}
@ -238,14 +238,14 @@ nsContentAreaDragDrop::RemoveDragListener()
{
nsresult rv = NS_ERROR_FAILURE;
if (mEventTarget) {
if (mEventReceiver) {
nsIDOMDragListener *pListener = NS_STATIC_CAST(nsIDOMDragListener *, this);
rv =
mEventTarget->RemoveEventListenerByIID(pListener,
NS_GET_IID(nsIDOMDragListener));
mEventReceiver->RemoveEventListenerByIID(pListener,
NS_GET_IID(nsIDOMDragListener));
if (NS_SUCCEEDED(rv))
mListenerInstalled = PR_FALSE;
mEventTarget = nsnull;
mEventReceiver = nsnull;
}
return rv;

Просмотреть файл

@ -44,7 +44,7 @@
#include "nsIDragDropHandler.h"
#include "nsIDOMDragListener.h"
#include "nsPIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsITransferable.h"
class nsIDOMNode;
@ -120,7 +120,7 @@ private:
PRPackedBool mListenerInstalled;
nsCOMPtr<nsPIDOMEventTarget> mEventTarget;
nsCOMPtr<nsIDOMEventReceiver> mEventReceiver;
// weak ref, this is probably my owning webshell
// FIXME: we set this and never null it out. That's bad! See bug 332187.

Просмотреть файл

@ -107,6 +107,7 @@
#include "nsCRT.h"
#include "nsIDOMEvent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIPrivateDOMEvent.h"
#include "nsIDOMDocumentEvent.h"
#ifdef MOZ_XTF
@ -2979,10 +2980,10 @@ nsContentUtils::HasMutationListeners(nsINode* aNode,
}
// If we have a window, we can check it for mutation listeners now.
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryInterface(window));
if (piTarget) {
nsCOMPtr<nsIDOMEventReceiver> rec(do_QueryInterface(window));
if (rec) {
nsCOMPtr<nsIEventListenerManager> manager;
piTarget->GetListenerManager(PR_FALSE, getter_AddRefs(manager));
rec->GetListenerManager(PR_FALSE, getter_AddRefs(manager));
if (manager) {
PRBool hasListeners = PR_FALSE;
manager->HasMutationListeners(&hasListeners);

Просмотреть файл

@ -56,7 +56,6 @@
#include "nsGkAtoms.h"
#include "nsCOMArray.h"
#include "nsNodeUtils.h"
#include "nsIEventListenerManager.h"
//----------------------------------------------------------------------
PRBool nsDOMAttribute::sInitialized;
@ -735,48 +734,13 @@ nsDOMAttribute::DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult
NS_IMETHODIMP
nsDOMAttribute::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
return nsContentUtils::GetListenerManager(this, aCreateIfNotFound, aResult);
}
nsresult
nsDOMAttribute::AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> elm;
nsresult rv = GetListenerManager(PR_TRUE, getter_AddRefs(elm));
if (elm) {
return elm->AddEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
return rv;
}
nsresult
nsDOMAttribute::RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> elm;
GetListenerManager(PR_FALSE, getter_AddRefs(elm));
if (elm) {
return elm->RemoveEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
return NS_OK;
}
nsresult
nsDOMAttribute::GetSystemEventGroup(nsIDOMEventGroup** aGroup)
{
nsCOMPtr<nsIEventListenerManager> elm;
nsresult rv = GetListenerManager(PR_TRUE, getter_AddRefs(elm));
if (elm) {
return elm->GetSystemEventGroupLM(aGroup);
}
return rv;
}
nsresult
nsDOMAttribute::EnsureChildState(PRBool aSetText, PRBool &aHasChild) const
{

Просмотреть файл

@ -100,13 +100,8 @@ public:
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsresult GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult GetSystemEventGroup(nsIDOMEventGroup** aGroup);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
static void Initialize();

Просмотреть файл

@ -50,6 +50,7 @@
#include "nsIDOMClassInfo.h"
#include "nsReadableUtils.h"
#include "nsCRT.h"
#include "nsIDOMEventReceiver.h"
#include "nsLoadListenerProxy.h"
#include "nsStreamUtils.h"
#include "nsThreadUtils.h"
@ -223,7 +224,7 @@ nsDOMParser::ParseFromStream(nsIInputStream *stream,
NS_ENSURE_SUCCESS(rv, rv);
// Register as a load listener on the document
nsCOMPtr<nsPIDOMEventTarget> target(do_QueryInterface(domDocument));
nsCOMPtr<nsIDOMEventReceiver> target(do_QueryInterface(domDocument));
if (target) {
nsWeakPtr requestWeak(do_GetWeakReference(NS_STATIC_CAST(nsIDOMParser*, this)));
nsLoadListenerProxy* proxy = new nsLoadListenerProxy(requestWeak);

Просмотреть файл

@ -911,6 +911,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsDocument)
NS_INTERFACE_MAP_ENTRY(nsIDOMDocumentTraversal)
NS_INTERFACE_MAP_ENTRY(nsIDOMDocumentXBL)
NS_INTERFACE_MAP_ENTRY(nsIScriptObjectPrincipal)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventReceiver)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOM3EventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOMNSEventTarget)
@ -4543,7 +4544,7 @@ nsDocument::GetOwnerDocument(nsIDOMDocument** aOwnerDocument)
return NS_OK;
}
nsresult
NS_IMETHODIMP
nsDocument::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aInstancePtrResult)
{
@ -4569,7 +4570,7 @@ nsDocument::GetListenerManager(PRBool aCreateIfNotFound,
return NS_OK;
}
nsresult
NS_IMETHODIMP
nsDocument::GetSystemEventGroup(nsIDOMEventGroup **aGroup)
{
nsCOMPtr<nsIEventListenerManager> manager;
@ -5428,10 +5429,10 @@ PRBool
nsDocument::CanSavePresentation(nsIRequest *aNewRequest)
{
// Check our event listener manager for unload/beforeunload listeners.
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(mScriptGlobalObject);
if (piTarget) {
nsCOMPtr<nsIDOMEventReceiver> er = do_QueryInterface(mScriptGlobalObject);
if (er) {
nsCOMPtr<nsIEventListenerManager> manager;
piTarget->GetListenerManager(PR_FALSE, getter_AddRefs(manager));
er->GetListenerManager(PR_FALSE, getter_AddRefs(manager));
if (manager && manager->HasUnloadListeners()) {
return PR_FALSE;
}

Просмотреть файл

@ -59,6 +59,7 @@
#include "nsIDOMDocumentRange.h"
#include "nsIDOMDocumentTraversal.h"
#include "nsStubDocumentObserver.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMNSEventTarget.h"
#include "nsIDOMStyleSheetList.h"
@ -287,7 +288,7 @@ class nsDocument : public nsIDocument,
public nsIDOMDocumentXBL,
public nsIDOM3Document,
public nsSupportsWeakReference,
public nsIDOMEventTarget,
public nsIDOMEventReceiver,
public nsIDOM3EventTarget,
public nsIDOMNSEventTarget,
public nsIScriptObjectPrincipal,
@ -530,13 +531,6 @@ public:
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsresult GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult GetSystemEventGroup(nsIDOMEventGroup** aGroup);
virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const
{
return NS_ERROR_NOT_IMPLEMENTED;
@ -608,6 +602,15 @@ public:
// nsIDOMDocumentXBL
NS_DECL_NSIDOMDOCUMENTXBL
// nsIDOMEventReceiver interface
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup);
// nsIDOMEventTarget
NS_DECL_NSIDOMEVENTTARGET

Просмотреть файл

@ -92,6 +92,8 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGenericDOMDataNode)
NS_INTERFACE_MAP_ENTRY(nsIContent)
NS_INTERFACE_MAP_ENTRY(nsINode)
NS_INTERFACE_MAP_ENTRY(nsPIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMEventReceiver,
nsDOMEventRTTearoff::Create(this))
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMEventTarget,
nsDOMEventRTTearoff::Create(this))
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOM3EventTarget,
@ -709,48 +711,13 @@ nsGenericDOMDataNode::DispatchDOMEvent(nsEvent* aEvent,
aPresContext, aEventStatus);
}
nsresult
NS_IMETHODIMP
nsGenericDOMDataNode::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
return nsContentUtils::GetListenerManager(this, aCreateIfNotFound, aResult);
}
nsresult
nsGenericDOMDataNode::AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> elm;
nsresult rv = GetListenerManager(PR_TRUE, getter_AddRefs(elm));
if (elm) {
return elm->AddEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
return rv;
}
nsresult
nsGenericDOMDataNode::RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> elm;
GetListenerManager(PR_FALSE, getter_AddRefs(elm));
if (elm) {
return elm->RemoveEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
return NS_OK;
}
nsresult
nsGenericDOMDataNode::GetSystemEventGroup(nsIDOMEventGroup** aGroup)
{
nsCOMPtr<nsIEventListenerManager> elm;
nsresult rv = GetListenerManager(PR_TRUE, getter_AddRefs(elm));
if (elm) {
return elm->GetSystemEventGroupLM(aGroup);
}
return rv;
}
PRUint32
nsGenericDOMDataNode::GetChildCount() const
{

Просмотреть файл

@ -44,7 +44,7 @@
#define nsGenericDOMDataNode_h___
#include "nsIDOMCharacterData.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsTextFragment.h"
#include "nsVoidArray.h"
#include "nsDOMError.h"
@ -180,13 +180,8 @@ public:
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsresult GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult GetSystemEventGroup(nsIDOMEventGroup** aGroup);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
// Implementation for nsIContent
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,

Просмотреть файл

@ -51,6 +51,7 @@
#include "nsIDOMNodeList.h"
#include "nsIDOMDocument.h"
#include "nsIDOMText.h"
#include "nsIDOMEventReceiver.h"
#include "nsIContentIterator.h"
#include "nsIEventListenerManager.h"
#include "nsIFocusController.h"
@ -214,48 +215,13 @@ nsINode::UnsetProperty(PRUint16 aCategory, nsIAtom *aPropertyName,
aStatus);
}
nsresult
NS_IMETHODIMP
nsGenericElement::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
return nsContentUtils::GetListenerManager(this, aCreateIfNotFound, aResult);
}
nsresult
nsGenericElement::AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> elm;
nsresult rv = GetListenerManager(PR_TRUE, getter_AddRefs(elm));
if (elm) {
return elm->AddEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
return rv;
}
nsresult
nsGenericElement::RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> elm;
GetListenerManager(PR_FALSE, getter_AddRefs(elm));
if (elm) {
return elm->RemoveEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
return NS_OK;
}
nsresult
nsGenericElement::GetSystemEventGroup(nsIDOMEventGroup** aGroup)
{
nsCOMPtr<nsIEventListenerManager> elm;
nsresult rv = GetListenerManager(PR_TRUE, getter_AddRefs(elm));
if (elm) {
return elm->GetSystemEventGroupLM(aGroup);
}
return rv;
}
nsINode::nsSlots*
nsINode::CreateSlots()
{
@ -730,6 +696,7 @@ NS_IMPL_CYCLE_COLLECTION_1(nsDOMEventRTTearoff, mContent)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsDOMEventRTTearoff)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventReceiver)
NS_INTERFACE_MAP_ENTRY(nsIDOM3EventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOMNSEventTarget)
NS_INTERFACE_MAP_END_AGGREGATED(mContent)
@ -795,6 +762,17 @@ nsDOMEventRTTearoff::LastRelease()
delete this;
}
nsresult
nsDOMEventRTTearoff::GetEventReceiver(nsIDOMEventReceiver **aReceiver)
{
nsCOMPtr<nsIEventListenerManager> listener_manager;
nsresult rv =
mContent->GetListenerManager(PR_TRUE, getter_AddRefs(listener_manager));
NS_ENSURE_SUCCESS(rv, rv);
return CallQueryInterface(listener_manager, aReceiver);
}
nsresult
nsDOMEventRTTearoff::GetDOM3EventTarget(nsIDOM3EventTarget **aTarget)
{
@ -806,6 +784,48 @@ nsDOMEventRTTearoff::GetDOM3EventTarget(nsIDOM3EventTarget **aTarget)
return CallQueryInterface(listener_manager, aTarget);
}
NS_IMETHODIMP
nsDOMEventRTTearoff::AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIDOMEventReceiver> event_receiver;
nsresult rv = GetEventReceiver(getter_AddRefs(event_receiver));
NS_ENSURE_SUCCESS(rv, rv);
return event_receiver->AddEventListenerByIID(aListener, aIID);
}
NS_IMETHODIMP
nsDOMEventRTTearoff::RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
nsCOMPtr<nsIDOMEventReceiver> event_receiver;
nsresult rv = GetEventReceiver(getter_AddRefs(event_receiver));
NS_ENSURE_SUCCESS(rv, rv);
return event_receiver->RemoveEventListenerByIID(aListener, aIID);
}
NS_IMETHODIMP
nsDOMEventRTTearoff::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
return mContent->GetListenerManager(aCreateIfNotFound, aResult);
}
NS_IMETHODIMP
nsDOMEventRTTearoff::GetSystemEventGroup(nsIDOMEventGroup **aGroup)
{
nsCOMPtr<nsIEventListenerManager> manager;
GetListenerManager(PR_TRUE, getter_AddRefs(manager));
if (!manager) {
return NS_ERROR_FAILURE;
}
return manager->GetSystemEventGroupLM(aGroup);
}
NS_IMETHODIMP
nsDOMEventRTTearoff::GetScriptTypeID(PRUint32 *aLang)
{
@ -832,21 +852,25 @@ nsDOMEventRTTearoff::AddEventListener(const nsAString& aType,
}
NS_IMETHODIMP
nsDOMEventRTTearoff::RemoveEventListener(const nsAString& aType,
nsIDOMEventListener* aListener,
PRBool aUseCapture)
nsDOMEventRTTearoff::RemoveEventListener(const nsAString& type,
nsIDOMEventListener *listener,
PRBool useCapture)
{
return RemoveGroupedEventListener(aType, aListener, aUseCapture, nsnull);
nsCOMPtr<nsIDOMEventReceiver> event_receiver;
nsresult rv = GetEventReceiver(getter_AddRefs(event_receiver));
NS_ENSURE_SUCCESS(rv, rv);
return event_receiver->RemoveEventListener(type, listener, useCapture);
}
NS_IMETHODIMP
nsDOMEventRTTearoff::DispatchEvent(nsIDOMEvent *aEvt, PRBool* _retval)
nsDOMEventRTTearoff::DispatchEvent(nsIDOMEvent *evt, PRBool* _retval)
{
nsEventStatus status = nsEventStatus_eIgnore;
nsresult rv = nsEventDispatcher::DispatchDOMEvent(
NS_STATIC_CAST(nsPIDOMEventTarget*, mContent), nsnull, aEvt, nsnull, &status);
*_retval = (status != nsEventStatus_eConsumeNoDefault);
return rv;
nsCOMPtr<nsIDOMEventReceiver> event_receiver;
nsresult rv = GetEventReceiver(getter_AddRefs(event_receiver));
NS_ENSURE_SUCCESS(rv, rv);
return event_receiver->DispatchEvent(evt, _retval);
}
// nsIDOM3EventTarget
@ -3035,6 +3059,8 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGenericElement)
NS_INTERFACE_MAP_ENTRY(nsPIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOM3Node, new nsNode3Tearoff(this))
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMNSElement, new nsNSElementTearoff(this))
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMEventReceiver,
nsDOMEventRTTearoff::Create(this))
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMEventTarget,
nsDOMEventRTTearoff::Create(this))
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOM3EventTarget,

Просмотреть файл

@ -49,7 +49,7 @@
#include "nsIContent.h"
#include "nsIDOMElement.h"
#include "nsIDOMDocumentFragment.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOM3Node.h"
#include "nsIDOMNSEventTarget.h"
@ -225,7 +225,7 @@ private:
* @see nsDOMEventRTTearoff::Create
*/
class nsDOMEventRTTearoff : public nsIDOMEventTarget,
class nsDOMEventRTTearoff : public nsIDOMEventReceiver,
public nsIDOM3EventTarget,
public nsIDOMNSEventTarget
{
@ -248,6 +248,7 @@ private:
*/
void LastRelease();
nsresult GetEventReceiver(nsIDOMEventReceiver **aReceiver);
nsresult GetDOM3EventTarget(nsIDOM3EventTarget **aTarget);
public:
@ -273,6 +274,15 @@ public:
// nsIDOM3EventTarget
NS_DECL_NSIDOM3EVENTTARGET
// nsIDOMEventReceiver
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup);
// nsIDOMNSEventTarget
NS_DECL_NSIDOMNSEVENTTARGET
@ -389,13 +399,8 @@ public:
virtual nsresult DispatchDOMEvent(nsEvent* aEvent, nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsresult GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult GetSystemEventGroup(nsIDOMEventGroup** aGroup);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
// nsIContent interface methods
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,

Просмотреть файл

@ -51,6 +51,7 @@
#include "nsIDocument.h"
#include "nsIDOMDocument.h"
#include "nsIDOMDOMImplementation.h"
#include "nsIDOMEventReceiver.h"
#include "nsIPrivateDOMImplementation.h"
#include "nsIScriptSecurityManager.h"
#include "nsContentUtils.h"
@ -224,7 +225,7 @@ nsSyncLoader::LoadDocument(nsIChannel* aChannel,
}
// Register as a load listener on the document
nsCOMPtr<nsPIDOMEventTarget> target = do_QueryInterface(document);
nsCOMPtr<nsIDOMEventReceiver> target = do_QueryInterface(document);
NS_ENSURE_TRUE(target, NS_ERROR_FAILURE);
nsWeakPtr requestWeak = do_GetWeakReference(NS_STATIC_CAST(nsIDOMLoadListener*, this));

Просмотреть файл

@ -50,6 +50,7 @@
#include "nsIDOMSerializer.h"
#include "nsXPCOM.h"
#include "nsISupportsPrimitives.h"
#include "nsIDOMEventReceiver.h"
#include "nsIEventListenerManager.h"
#include "nsGUIEvent.h"
#include "nsIPrivateDOMEvent.h"
@ -1301,7 +1302,7 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
mResponseBody.Truncate();
// Register as a load listener on the document
nsCOMPtr<nsPIDOMEventTarget> target(do_QueryInterface(mDocument));
nsCOMPtr<nsIDOMEventReceiver> target(do_QueryInterface(mDocument));
if (target) {
nsWeakPtr requestWeak =
do_GetWeakReference(NS_STATIC_CAST(nsIXMLHttpRequest*, this));

Просмотреть файл

@ -46,13 +46,11 @@ class nsPresContext;
class nsEventChainPreVisitor;
class nsEventChainPostVisitor;
class nsIEventListenerManager;
class nsIDOMEventListener;
class nsIDOMEventGroup;
// 360fa72e-c709-42cc-9285-1f755ec90376
#define NS_PIDOMEVENTTARGET_IID \
{ 0x44a6597b, 0x9fc3, 0x4a8d, \
{ 0xb7, 0xa4, 0xd9, 0x00, 0x9a, 0xbf, 0x9d, 0x15 } }
{ 0x360fa72e, 0xc709, 0x42cc, \
{ 0x92, 0x85, 0x1f, 0x75, 0x5e, 0xc9, 0x03, 0x76 } }
class nsPIDOMEventTarget : public nsISupports
{
@ -131,24 +129,8 @@ public:
* one already exists. [IN]
* @param aResult The event listener manager [OUT]
*/
virtual nsresult GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult) = 0;
/**
* Add an event listener for nsIID.
*/
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID) = 0;
/**
* Remove event listener for nsIID.
*/
virtual nsresult RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID) = 0;
/**
* Get the system event group.
*/
virtual nsresult GetSystemEventGroup(nsIDOMEventGroup** aGroup) = 0;
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsPIDOMEventTarget, NS_PIDOMEVENTTARGET_IID)

Просмотреть файл

@ -43,6 +43,7 @@
#include "nsPIDOMEventTarget.h"
#include "nsPresContext.h"
#include "nsIPrivateDOMEvent.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMEventTarget.h"
#include "nsIEventListenerManager.h"
#include "nsPIDOMWindow.h"

Просмотреть файл

@ -393,6 +393,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsEventListenerManager)
NS_INTERFACE_MAP_ENTRY(nsIEventListenerManager)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOM3EventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventReceiver)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF_AMBIGUOUS(nsEventListenerManager, nsIEventListenerManager)
@ -1372,6 +1373,35 @@ nsEventListenerManager::IsRegisteredHere(const nsAString & type, PRBool *_retval
return NS_ERROR_NOT_IMPLEMENTED;
}
// nsIDOMEventReceiver interface
NS_IMETHODIMP
nsEventListenerManager::AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID)
{
return AddEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
NS_IMETHODIMP
nsEventListenerManager::RemoveEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID)
{
return RemoveEventListenerByIID(aListener, aIID, NS_EVENT_FLAG_BUBBLE);
}
NS_IMETHODIMP
nsEventListenerManager::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
NS_ENSURE_ARG_POINTER(aResult);
NS_ADDREF(*aResult = this);
return NS_OK;
}
NS_IMETHODIMP
nsEventListenerManager::GetSystemEventGroup(nsIDOMEventGroup **aGroup)
{
return GetSystemEventGroupLM(aGroup);
}
nsresult
nsEventListenerManager::FixContextMenuEvent(nsPresContext* aPresContext,
nsISupports* aCurrentTarget,

Просмотреть файл

@ -42,7 +42,7 @@
#include "jsapi.h"
#include "nsCOMPtr.h"
#include "nsAutoPtr.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsHashtable.h"
#include "nsIScriptContext.h"
@ -68,7 +68,7 @@ typedef struct {
*/
class nsEventListenerManager : public nsIEventListenerManager,
public nsIDOMEventTarget,
public nsIDOMEventReceiver,
public nsIDOM3EventTarget
{
@ -139,6 +139,15 @@ public:
// nsIDOM3EventTarget
NS_DECL_NSIDOM3EVENTTARGET
// nsIDOMEventReceiver interface
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup);
static void Shutdown();
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsEventListenerManager,

Просмотреть файл

@ -41,7 +41,7 @@
#include "nsGkAtoms.h"
#include "nsIDOMElement.h"
#include "nsIDOMDocument.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsNetUtil.h"
#include "nsIURL.h"
#include "nsIDOMEventListener.h"

Просмотреть файл

@ -50,6 +50,7 @@
#include "nsIDOMHTMLBodyElement.h"
#include "nsIDOMHTMLDocument.h"
#include "nsIDOMAttr.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMDocumentFragment.h"
#include "nsIDOMNSHTMLDocument.h"
#include "nsIDOMNSHTMLElement.h"
@ -1376,10 +1377,10 @@ nsGenericHTMLElement::GetEventListenerManagerForAttr(nsIEventListenerManager** a
nsIDocument *document = GetOwnerDoc();
nsresult rv = NS_OK;
if (document && (win = document->GetInnerWindow())) {
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryInterface(win));
NS_ENSURE_TRUE(piTarget, NS_ERROR_FAILURE);
nsCOMPtr<nsIDOMEventReceiver> receiver(do_QueryInterface(win));
NS_ENSURE_TRUE(receiver, NS_ERROR_FAILURE);
rv = piTarget->GetListenerManager(PR_TRUE, aManager);
rv = receiver->GetListenerManager(PR_TRUE, aManager);
if (NS_SUCCEEDED(rv)) {
NS_ADDREF(*aTarget = win);

Просмотреть файл

@ -41,7 +41,7 @@
#include "nsUnicharUtils.h"
#include "nsIDOMHTMLAnchorElement.h"
#include "nsIDOMNSHTMLAnchorElement2.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIHTMLDocument.h"
#include "nsGenericHTMLElement.h"
#include "nsILink.h"

Просмотреть файл

@ -37,7 +37,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLAreaElement.h"
#include "nsIDOMNSHTMLAreaElement2.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsILink.h"
#include "nsIPresShell.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLBRElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -38,7 +38,7 @@
#include "nscore.h"
#include "nsCOMPtr.h"
#include "nsIDOMHTMLBodyElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -37,7 +37,7 @@
#include "nsIDOMHTMLButtonElement.h"
#include "nsIDOMNSHTMLButtonElement.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsIPresShell.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLModElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLDivElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -36,7 +36,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLFieldSetElement.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsStyleConsts.h"
#include "nsPresContext.h"

Просмотреть файл

@ -36,7 +36,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsCOMPtr.h"
#include "nsIDOMHTMLFontElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsIDeviceContext.h"

Просмотреть файл

@ -42,7 +42,7 @@
#include "nsIDOMNSHTMLFormElement.h"
#include "nsIHTMLDocument.h"
#include "nsIDOMNSHTMLFormControlList.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsEventStateManager.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLFrameSetElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -36,7 +36,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLHRElement.h"
#include "nsIDOMNSHTMLHRElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLHeadElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLHeadingElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLHtmlElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -36,7 +36,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMNSHTMLImageElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsImageLoadingContent.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -51,7 +51,7 @@
#include "nsContentCID.h"
#include "nsIComponentManager.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"
@ -88,7 +88,7 @@
#include "nsLayoutUtils.h"
#include "nsIDOMMutationEvent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsMutationEvent.h"
#include "nsIEventListenerManager.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLLIElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -37,7 +37,7 @@
#include "nsCOMPtr.h"
#include "nsIDOMHTMLLabelElement.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -37,7 +37,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLLegendElement.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -36,7 +36,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLLinkElement.h"
#include "nsIDOMLinkStyle.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsILink.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLMapElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLMetaElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -37,7 +37,7 @@
#include "nsIDOMHTMLOListElement.h"
#include "nsIDOMHTMLDListElement.h"
#include "nsIDOMHTMLUListElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLOptGroupElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -41,7 +41,7 @@
#include "nsIOptionElement.h"
#include "nsIDOMHTMLOptGroupElement.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLParagraphElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLPreElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -36,7 +36,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLScriptElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -42,7 +42,7 @@
#include "nsIDOMNSHTMLSelectElement.h"
#include "nsIDOMNSXBLFormControl.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsContentCreatorFunctions.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -37,7 +37,7 @@
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLStyleElement.h"
#include "nsIDOMLinkStyle.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLTableCaptionElem.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -37,7 +37,7 @@
#include "nsIDOMHTMLTableCellElement.h"
#include "nsIDOMHTMLTableRowElement.h"
#include "nsIDOMHTMLCollection.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsMappedAttributes.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLTableColElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsMappedAttributes.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsIDOMHTMLTableCaptionElem.h"
#include "nsIDOMHTMLTableSectionElem.h"
#include "nsCOMPtr.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsDOMError.h"
#include "nsContentList.h"
#include "nsMappedAttributes.h"

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsIDOMHTMLTableElement.h"
#include "nsIDOMHTMLTableSectionElem.h"
#include "nsIDOMHTMLTableCellElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsDOMError.h"
#include "nsMappedAttributes.h"
#include "nsGenericHTMLElement.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLTableSectionElem.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsMappedAttributes.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"

Просмотреть файл

@ -50,7 +50,7 @@
#include "nsIFormControl.h"
#include "nsIForm.h"
#include "nsIFormSubmission.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"

Просмотреть файл

@ -35,7 +35,7 @@
*
* ***** END LICENSE BLOCK ***** */
#include "nsIDOMHTMLTitleElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsGenericHTMLElement.h"
#include "nsStyleConsts.h"
#include "nsPresContext.h"

Просмотреть файл

@ -41,7 +41,7 @@
#include "nsIDocument.h"
#include "nsRange.h"
#include "nsIDOMAttr.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMMutationEvent.h"
#include "nsMutationEvent.h"
#include "nsBindingManager.h"

Просмотреть файл

@ -49,7 +49,7 @@
class nsIContent;
class nsIDocument;
class nsPIDOMEventTarget;
class nsIDOMEventReceiver;
class nsIDOMNodeList;
class nsXBLBinding;
class nsIXBLDocumentInfo;
@ -57,8 +57,8 @@ class nsIURI;
class nsIAtom;
#define NS_IXBLSERVICE_IID \
{ 0xefda61b3, 0x5d04, 0x43b0, \
{ 0x98, 0x0c, 0x32, 0x62, 0x72, 0xc8, 0x5c, 0x68 } }
{ 0x7157b300, 0xf49b, 0x4e7d, \
{ 0xac, 0x3a, 0xef, 0x8f, 0x20, 0x69, 0x6e, 0xb1 } }
class nsIXBLService : public nsISupports
{
@ -82,7 +82,7 @@ public:
PRBool aForceSyncLoad, nsIXBLDocumentInfo** aResult) = 0;
// Hooks up the global key event handlers to the document root.
NS_IMETHOD AttachGlobalKeyHandler(nsPIDOMEventTarget* aTarget)=0;
NS_IMETHOD AttachGlobalKeyHandler(nsIDOMEventReceiver* aElement)=0;
};

Просмотреть файл

@ -45,7 +45,7 @@
#include "nsHashtable.h"
#include "nsIURI.h"
#include "nsIURL.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIChannel.h"
#include "nsXPIDLString.h"
#include "nsReadableUtils.h"
@ -815,8 +815,8 @@ nsXBLBinding::UnhookEventHandlers()
nsXBLPrototypeHandler* handlerChain = mPrototypeBinding->GetPrototypeHandlers();
if (handlerChain) {
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(mBoundElement);
nsCOMPtr<nsIDOM3EventTarget> target = do_QueryInterface(piTarget);
nsCOMPtr<nsIDOMEventReceiver> receiver = do_QueryInterface(mBoundElement);
nsCOMPtr<nsIDOM3EventTarget> target = do_QueryInterface(receiver);
nsCOMPtr<nsIDOMEventGroup> systemEventGroup;
nsXBLPrototypeHandler* curr;
@ -844,7 +844,7 @@ nsXBLBinding::UnhookEventHandlers()
nsIDOMEventGroup* eventGroup = nsnull;
if (curr->GetType() & (NS_HANDLER_TYPE_XBL_COMMAND | NS_HANDLER_TYPE_SYSTEM)) {
if (!systemEventGroup)
piTarget->GetSystemEventGroup(getter_AddRefs(systemEventGroup));
receiver->GetSystemEventGroup(getter_AddRefs(systemEventGroup));
eventGroup = systemEventGroup;
}
@ -873,7 +873,7 @@ nsXBLBinding::UnhookEventHandlers()
nsIDOMEventGroup* eventGroup = nsnull;
if (handler->GetType() & (NS_HANDLER_TYPE_XBL_COMMAND | NS_HANDLER_TYPE_SYSTEM)) {
if (!systemEventGroup)
piTarget->GetSystemEventGroup(getter_AddRefs(systemEventGroup));
receiver->GetSystemEventGroup(getter_AddRefs(systemEventGroup));
eventGroup = systemEventGroup;
}

Просмотреть файл

@ -40,8 +40,7 @@
#include "nsIAtom.h"
#include "nsIContent.h"
#include "nsIDOMEventGroup.h"
#include "nsIDOMEventListener.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMMouseEvent.h"
#include "nsIDOMText.h"
@ -81,9 +80,9 @@ nsXBLEventHandler::HandleEvent(nsIDOMEvent* aEvent)
nsCOMPtr<nsIDOMEventTarget> target;
aEvent->GetCurrentTarget(getter_AddRefs(target));
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(target);
nsCOMPtr<nsIDOMEventReceiver> receiver = do_QueryInterface(target);
mProtoHandler->ExecuteHandler(piTarget, aEvent);
mProtoHandler->ExecuteHandler(receiver, aEvent);
return NS_OK;
}
@ -135,7 +134,7 @@ nsXBLKeyEventHandler::HandleEvent(nsIDOMEvent* aEvent)
nsCOMPtr<nsIDOMEventTarget> target;
aEvent->GetCurrentTarget(getter_AddRefs(target));
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(target);
nsCOMPtr<nsIDOMEventReceiver> receiver = do_QueryInterface(target);
nsCOMPtr<nsIDOMKeyEvent> key(do_QueryInterface(aEvent));
@ -154,7 +153,7 @@ nsXBLKeyEventHandler::HandleEvent(nsIDOMEvent* aEvent)
(hasAllowUntrustedAttr && handler->AllowUntrustedEvents()) ||
(!hasAllowUntrustedAttr && !mIsBoundToChrome)) &&
handler->KeyEventMatched(key)) {
handler->ExecuteHandler(piTarget, aEvent);
handler->ExecuteHandler(receiver, aEvent);
}
}

Просмотреть файл

@ -46,7 +46,7 @@
class nsIAtom;
class nsIContent;
class nsIDOM3EventTarget;
class nsPIDOMEventTarget;
class nsIDOMEventReceiver;
class nsXBLPrototypeHandler;
class nsXBLEventHandler : public nsIDOMEventListener

Просмотреть файл

@ -43,7 +43,7 @@
#include "nsINameSpaceManager.h"
#include "nsIURI.h"
#include "nsIURL.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIChannel.h"
#include "nsXPIDLString.h"
#include "nsReadableUtils.h"

Просмотреть файл

@ -60,7 +60,7 @@
#include "nsIDOMText.h"
#include "nsIFocusController.h"
#include "nsIEventListenerManager.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMEventListener.h"
#include "nsIPrivateDOMEvent.h"
#include "nsIDOMNSEvent.h"
@ -212,7 +212,7 @@ nsXBLPrototypeHandler::InitAccessKeys()
}
nsresult
nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
nsXBLPrototypeHandler::ExecuteHandler(nsIDOMEventReceiver* aReceiver,
nsIDOMEvent* aEvent)
{
nsresult rv = NS_ERROR_FAILURE;
@ -273,14 +273,14 @@ nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
nsCOMPtr<nsIController> controller;
nsCOMPtr<nsIFocusController> focusController;
nsCOMPtr<nsPIWindowRoot> windowRoot(do_QueryInterface(aTarget));
nsCOMPtr<nsPIWindowRoot> windowRoot(do_QueryInterface(aReceiver));
if (windowRoot) {
windowRoot->GetFocusController(getter_AddRefs(focusController));
}
else {
nsCOMPtr<nsPIDOMWindow> privateWindow(do_QueryInterface(aTarget));
nsCOMPtr<nsPIDOMWindow> privateWindow(do_QueryInterface(aReceiver));
if (!privateWindow) {
nsCOMPtr<nsIContent> elt(do_QueryInterface(aTarget));
nsCOMPtr<nsIContent> elt(do_QueryInterface(aReceiver));
nsCOMPtr<nsIDocument> doc;
// XXXbz sXBL/XBL2 issue -- this should be the "scope doc" or
// something... whatever we use when wrapping DOM nodes
@ -290,7 +290,7 @@ nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
doc = elt->GetOwnerDoc();
if (!doc)
doc = do_QueryInterface(aTarget);
doc = do_QueryInterface(aReceiver);
if (!doc)
return NS_ERROR_FAILURE;
@ -307,7 +307,7 @@ nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
if (focusController)
focusController->GetControllerForCommand(command.get(), getter_AddRefs(controller));
else
controller = GetController(aTarget); // We're attached to the receiver possibly.
controller = GetController(aReceiver); // We're attached to the receiver possibly.
nsAutoString type;
mEventName->ToString(type);
@ -418,7 +418,7 @@ nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
// Compile the handler and bind it to the element.
nsCOMPtr<nsIScriptGlobalObject> boundGlobal;
nsCOMPtr<nsPIWindowRoot> winRoot(do_QueryInterface(aTarget));
nsCOMPtr<nsPIWindowRoot> winRoot(do_QueryInterface(aReceiver));
nsCOMPtr<nsIDOMWindowInternal> focusedWin;
if (winRoot) {
@ -441,13 +441,13 @@ nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
boundGlobal = do_QueryInterface(piWin->GetPrivateRoot());
}
else boundGlobal = do_QueryInterface(aTarget);
else boundGlobal = do_QueryInterface(aReceiver);
if (!boundGlobal) {
nsCOMPtr<nsIDocument> boundDocument(do_QueryInterface(aTarget));
nsCOMPtr<nsIDocument> boundDocument(do_QueryInterface(aReceiver));
if (!boundDocument) {
// We must be an element.
nsCOMPtr<nsIContent> content(do_QueryInterface(aTarget));
nsCOMPtr<nsIContent> content(do_QueryInterface(aReceiver));
if (!content)
return NS_OK;
boundDocument = content->GetOwnerDoc();
@ -472,7 +472,7 @@ nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget* aTarget,
if (winRoot) {
scriptTarget = boundGlobal;
} else {
scriptTarget = aTarget;
scriptTarget = aReceiver;
}
// XXX - apparently we should not be using the global as the scope - what
// should we use? See bug 339649, which is trying to find out!
@ -522,30 +522,30 @@ nsXBLPrototypeHandler::GetEventName()
}
already_AddRefed<nsIController>
nsXBLPrototypeHandler::GetController(nsPIDOMEventTarget* aTarget)
nsXBLPrototypeHandler::GetController(nsIDOMEventReceiver* aReceiver)
{
// XXX Fix this so there's a generic interface that describes controllers,
// This code should have no special knowledge of what objects might have controllers.
nsCOMPtr<nsIControllers> controllers;
nsCOMPtr<nsIDOMXULElement> xulElement(do_QueryInterface(aTarget));
nsCOMPtr<nsIDOMXULElement> xulElement(do_QueryInterface(aReceiver));
if (xulElement)
xulElement->GetControllers(getter_AddRefs(controllers));
if (!controllers) {
nsCOMPtr<nsIDOMNSHTMLTextAreaElement> htmlTextArea(do_QueryInterface(aTarget));
nsCOMPtr<nsIDOMNSHTMLTextAreaElement> htmlTextArea(do_QueryInterface(aReceiver));
if (htmlTextArea)
htmlTextArea->GetControllers(getter_AddRefs(controllers));
}
if (!controllers) {
nsCOMPtr<nsIDOMNSHTMLInputElement> htmlInputElement(do_QueryInterface(aTarget));
nsCOMPtr<nsIDOMNSHTMLInputElement> htmlInputElement(do_QueryInterface(aReceiver));
if (htmlInputElement)
htmlInputElement->GetControllers(getter_AddRefs(controllers));
}
if (!controllers) {
nsCOMPtr<nsIDOMWindowInternal> domWindow(do_QueryInterface(aTarget));
nsCOMPtr<nsIDOMWindowInternal> domWindow(do_QueryInterface(aReceiver));
if (domWindow)
domWindow->GetControllers(getter_AddRefs(controllers));
}

Просмотреть файл

@ -52,7 +52,7 @@ class nsIContent;
class nsIDOMUIEvent;
class nsIDOMKeyEvent;
class nsIDOMMouseEvent;
class nsPIDOMEventTarget;
class nsIDOMEventReceiver;
class nsIDOM3EventTarget;
class nsXBLPrototypeBinding;
@ -121,7 +121,7 @@ public:
nsXBLPrototypeHandler* GetNextHandler() { return mNextHandler; }
void SetNextHandler(nsXBLPrototypeHandler* aHandler) { mNextHandler = aHandler; }
nsresult ExecuteHandler(nsPIDOMEventTarget* aTarget, nsIDOMEvent* aEvent);
nsresult ExecuteHandler(nsIDOMEventReceiver* aReceiver, nsIDOMEvent* aEvent);
already_AddRefed<nsIAtom> GetEventName();
void SetEventName(nsIAtom* aName) { mEventName = aName; }
@ -157,7 +157,7 @@ public:
static PRUint32 gRefCnt;
protected:
already_AddRefed<nsIController> GetController(nsPIDOMEventTarget* aTarget);
already_AddRefed<nsIController> GetController(nsIDOMEventReceiver* aReceiver);
inline PRInt32 GetMatchingKeyCode(const nsAString& aKeyName);
void ConstructPrototype(nsIContent* aKeyElement,

Просмотреть файл

@ -429,8 +429,8 @@ nsXBLStreamListener::Load(nsIDOMEvent* aEvent)
nsXBLBindingRequest::Destroy(mXBLService->mPool, req);
}
nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(mBindingDocument));
target->RemoveEventListener(NS_LITERAL_STRING("load"), (nsIDOMLoadListener*)this, PR_FALSE);
nsCOMPtr<nsIDOMEventReceiver> rec(do_QueryInterface(mBindingDocument));
rec->RemoveEventListener(NS_LITERAL_STRING("load"), (nsIDOMLoadListener*)this, PR_FALSE);
mBindingRequests.Clear();
mDocument = nsnull;
@ -707,34 +707,34 @@ nsXBLService::GetXBLDocumentInfo(nsIURI* aURI, nsIContent* aBoundElement)
// then extra work needs to be done to hook it up to the document (XXX WHY??)
//
NS_IMETHODIMP
nsXBLService::AttachGlobalKeyHandler(nsPIDOMEventTarget* aTarget)
nsXBLService::AttachGlobalKeyHandler(nsIDOMEventReceiver* aReceiver)
{
// check if the receiver is a content node (not a document), and hook
// it to the document if that is the case.
nsCOMPtr<nsPIDOMEventTarget> piTarget = aTarget;
nsCOMPtr<nsIContent> contentNode(do_QueryInterface(aTarget));
nsCOMPtr<nsIDOMEventReceiver> rec = aReceiver;
nsCOMPtr<nsIContent> contentNode(do_QueryInterface(aReceiver));
if (contentNode) {
// Only attach if we're really in a document
nsCOMPtr<nsIDocument> doc = contentNode->GetCurrentDoc();
if (doc)
piTarget = do_QueryInterface(doc); // We're a XUL keyset. Attach to our document.
rec = do_QueryInterface(doc); // We're a XUL keyset. Attach to our document.
}
if (!piTarget)
if (!rec)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMElement> elt(do_QueryInterface(contentNode));
// Create the key handler
nsXBLWindowKeyHandler* handler;
NS_NewXBLWindowKeyHandler(elt, piTarget, &handler); // This addRef's
NS_NewXBLWindowKeyHandler(elt, rec, &handler); // This addRef's
if (!handler)
return NS_ERROR_FAILURE;
// listen to these events
nsCOMPtr<nsIDOMEventGroup> systemGroup;
piTarget->GetSystemEventGroup(getter_AddRefs(systemGroup));
nsCOMPtr<nsIDOM3EventTarget> target = do_QueryInterface(piTarget);
rec->GetSystemEventGroup(getter_AddRefs(systemGroup));
nsCOMPtr<nsIDOM3EventTarget> target = do_QueryInterface(rec);
target->AddGroupedEventListener(NS_LITERAL_STRING("keydown"), handler,
PR_FALSE, systemGroup);
@ -1146,10 +1146,8 @@ nsXBLService::FetchBindingDocument(nsIContent* aBoundElement, nsIDocument* aBoun
nsXBLStreamListener* xblListener = new nsXBLStreamListener(this, listener, aBoundDocument, doc);
NS_ENSURE_TRUE(xblListener,NS_ERROR_OUT_OF_MEMORY);
nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(doc));
target->AddEventListener(NS_LITERAL_STRING("load"),
NS_STATIC_CAST(nsIDOMLoadListener*, xblListener),
PR_FALSE);
nsCOMPtr<nsIDOMEventReceiver> rec(do_QueryInterface(doc));
rec->AddEventListener(NS_LITERAL_STRING("load"), (nsIDOMLoadListener*)xblListener, PR_FALSE);
// Add ourselves to the list of loading docs.
nsBindingManager *bindingManager;

Просмотреть файл

@ -81,7 +81,7 @@ class nsXBLService : public nsIXBLService,
PRBool aForceSyncLoad, nsIXBLDocumentInfo** aResult);
// Used by XUL key bindings and for window XBL.
NS_IMETHOD AttachGlobalKeyHandler(nsPIDOMEventTarget* aTarget);
NS_IMETHOD AttachGlobalKeyHandler(nsIDOMEventReceiver* aElement);
NS_DECL_NSIOBSERVER

Просмотреть файл

@ -44,7 +44,7 @@
#include "nsIAtom.h"
#include "nsIDOMNSUIEvent.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMNSEvent.h"
#include "nsXBLService.h"
#include "nsIServiceManager.h"
@ -175,9 +175,8 @@ nsXBLSpecialDocInfo::GetAllHandlers(const char* aType,
nsXBLSpecialDocInfo* nsXBLWindowKeyHandler::sXBLSpecialDocInfo = nsnull;
PRUint32 nsXBLWindowKeyHandler::sRefCnt = 0;
nsXBLWindowKeyHandler::nsXBLWindowKeyHandler(nsIDOMElement* aElement,
nsPIDOMEventTarget* aTarget)
: mTarget(aTarget),
nsXBLWindowKeyHandler::nsXBLWindowKeyHandler(nsIDOMElement* aElement, nsIDOMEventReceiver* aReceiver)
: mReceiver(aReceiver),
mHandler(nsnull),
mUserHandler(nsnull)
{
@ -356,7 +355,7 @@ nsXBLWindowKeyHandler::WalkHandlers(nsIDOMEvent* aKeyEvent, nsIAtom* aEventType)
// get the DOM window we're attached to
nsCOMPtr<nsIControllers> controllers;
nsCOMPtr<nsPIWindowRoot> root = do_QueryInterface(mTarget);
nsCOMPtr<nsPIWindowRoot> root = do_QueryInterface(mReceiver);
if (root) {
nsCOMPtr<nsIFocusController> fc;
root->GetFocusController(getter_AddRefs(fc));
@ -432,7 +431,7 @@ nsXBLWindowKeyHandler::ShutDown()
PRBool
nsXBLWindowKeyHandler::IsEditor()
{
nsCOMPtr<nsPIWindowRoot> windowRoot(do_QueryInterface(mTarget));
nsCOMPtr<nsPIWindowRoot> windowRoot(do_QueryInterface(mReceiver));
NS_ENSURE_TRUE(windowRoot, PR_FALSE);
nsCOMPtr<nsIFocusController> focusController;
windowRoot->GetFocusController(getter_AddRefs(focusController));
@ -535,15 +534,15 @@ nsXBLWindowKeyHandler::WalkHandlersInternal(nsIDOMEvent* aEvent,
}
}
nsCOMPtr<nsPIDOMEventTarget> piTarget;
nsCOMPtr<nsIDOMEventReceiver> rec;
nsCOMPtr<nsIDOMElement> element = GetElement();
if (element) {
piTarget = do_QueryInterface(commandElt);
rec = do_QueryInterface(commandElt);
} else {
piTarget = mTarget;
rec = mReceiver;
}
rv = currHandler->ExecuteHandler(piTarget, aEvent);
rv = currHandler->ExecuteHandler(rec, aEvent);
if (NS_SUCCEEDED(rv)) {
return NS_OK;
}
@ -564,10 +563,9 @@ nsXBLWindowKeyHandler::GetElement()
///////////////////////////////////////////////////////////////////////////////////
nsresult
NS_NewXBLWindowKeyHandler(nsIDOMElement* aElement, nsPIDOMEventTarget* aTarget,
nsXBLWindowKeyHandler** aResult)
NS_NewXBLWindowKeyHandler(nsIDOMElement* aElement, nsIDOMEventReceiver* aReceiver, nsXBLWindowKeyHandler** aResult)
{
*aResult = new nsXBLWindowKeyHandler(aElement, aTarget);
*aResult = new nsXBLWindowKeyHandler(aElement, aReceiver);
if (!*aResult)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(*aResult);

Просмотреть файл

@ -45,8 +45,7 @@
class nsIAtom;
class nsIDOMElement;
class nsIDOMEventTarget;
class nsPIDOMEventTarget;
class nsIDOMEventReceiver;
class nsIXBLDocumentInfo;
class nsXBLSpecialDocInfo;
class nsXBLPrototypeHandler;
@ -54,7 +53,7 @@ class nsXBLPrototypeHandler;
class nsXBLWindowKeyHandler : public nsIDOMKeyListener
{
public:
nsXBLWindowKeyHandler(nsIDOMElement* aElement, nsPIDOMEventTarget* aTarget);
nsXBLWindowKeyHandler(nsIDOMElement* aElement, nsIDOMEventReceiver* aReceiver);
virtual ~nsXBLWindowKeyHandler();
// nsIDOMetc.
@ -96,7 +95,7 @@ protected:
already_AddRefed<nsIDOMElement> GetElement();
// Using weak pointer to the DOM Element.
nsWeakPtr mWeakPtrForElement;
nsPIDOMEventTarget* mTarget; // weak ref
nsIDOMEventReceiver* mReceiver; // weak ref
// these are not owning references; the prototype handlers are owned
// by the prototype bindings which are owned by the docinfo.
@ -110,7 +109,7 @@ protected:
nsresult
NS_NewXBLWindowKeyHandler(nsIDOMElement* aElement,
nsPIDOMEventTarget* aTarget,
nsIDOMEventReceiver* aReceiver,
nsXBLWindowKeyHandler** aResult);
#endif

Просмотреть файл

@ -77,7 +77,7 @@
#include "nsIDOMContextMenuListener.h"
#include "nsIDOMDragListener.h"
#include "nsIDOMEventListener.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMXULCommandDispatcher.h"
#include "nsIDOMXULElement.h"
@ -523,11 +523,11 @@ nsXULElement::GetEventListenerManagerForAttr(nsIEventListenerManager** aManager,
if ((!root || root == this) && !mNodeInfo->Equals(nsGkAtoms::overlay)) {
nsPIDOMWindow *window = doc->GetInnerWindow();
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(window);
if (!piTarget)
nsCOMPtr<nsIDOMEventReceiver> receiver = do_QueryInterface(window);
if (!receiver)
return NS_ERROR_UNEXPECTED;
nsresult rv = piTarget->GetListenerManager(PR_TRUE, aManager);
nsresult rv = receiver->GetListenerManager(PR_TRUE, aManager);
if (NS_SUCCEEDED(rv)) {
NS_ADDREF(*aTarget = window);
}

Просмотреть файл

@ -57,7 +57,7 @@
#include "nsIControllers.h"
#include "nsICSSParser.h"
#include "nsIDOMElement.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMXULElement.h"
#include "nsIDOMXULMultSelectCntrlEl.h"

Просмотреть файл

@ -1686,8 +1686,8 @@ nsXULDocument::AddElementToDocumentPost(nsIContent* aElement)
// Create our XUL key listener and hook it up.
nsCOMPtr<nsIXBLService> xblService(do_GetService("@mozilla.org/xbl;1"));
if (xblService) {
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryInterface(aElement));
xblService->AttachGlobalKeyHandler(piTarget);
nsCOMPtr<nsIDOMEventReceiver> rec(do_QueryInterface(aElement));
xblService->AttachGlobalKeyHandler(rec);
}
}

Просмотреть файл

@ -49,7 +49,7 @@
#include "nsElementMap.h"
#include "nsForwardReference.h"
#include "nsIContent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMXULCommandDispatcher.h"
#include "nsIDOMXULDocument.h"
#include "nsISupportsArray.h"

Просмотреть файл

@ -45,6 +45,7 @@ include $(DEPTH)/config/autoconf.mk
MODULE = dom
EXPORTS = \
nsIDOMEventReceiver.h \
nsIDOMFocusListener.h \
nsIDOMFormListener.h \
nsIDOMKeyListener.h \

Просмотреть файл

@ -0,0 +1,74 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* 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 nsIDOMEventReceiver_h__
#define nsIDOMEventReceiver_h__
#include "nsIDOMEventTarget.h"
class nsIDOMEventListener;
class nsIEventListenerManager;
class nsIDOMEvent;
class nsIDOMEventGroup;
/*
* DOM event source class. Object that allow event registration and
* distribution from themselves implement this interface.
*/
/* 025957f3-7b19-452b-89a1-9be652d8d6db */
#define NS_IDOMEVENTRECEIVER_IID \
{ 0x025957f3, 0x7b19, 0x452b, \
{ 0x89, 0xa1, 0x9b, 0xe6, 0x52, 0xd8, 0xd6, 0xdb } }
class nsIDOMEventReceiver : public nsIDOMEventTarget
{
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IDOMEVENTRECEIVER_IID)
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID) = 0;
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID) = 0;
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult) = 0;
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIDOMEventReceiver, NS_IDOMEVENTRECEIVER_IID)
#endif // nsIDOMEventReceiver_h__

Просмотреть файл

@ -168,7 +168,7 @@
// Event related includes
#include "nsIEventListenerManager.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMNSEventTarget.h"
// CSS related includes
@ -6706,15 +6706,18 @@ nsEventReceiverSH::RegisterCompileHandler(nsIXPConnectWrappedNative *wrapper,
nsIScriptContext *script_cx = nsJSUtils::GetStaticScriptContext(cx, obj);
NS_ENSURE_TRUE(script_cx, NS_ERROR_UNEXPECTED);
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryWrappedNative(wrapper));
if (!piTarget) {
nsCOMPtr<nsIDOMEventReceiver> receiver(do_QueryWrappedNative(wrapper));
if (!receiver) {
// Doesn't do events
NS_WARNING("Doesn't QI to nsPIDOMEventTarget?");
#ifdef DEBUG
nsCOMPtr<nsIAttribute> attr = do_QueryWrappedNative(wrapper);
NS_WARN_IF_FALSE(attr, "Non-attr doesn't QI to nsIDOMEventReceiver?");
#endif
return NS_OK;
}
nsCOMPtr<nsIEventListenerManager> manager;
piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
receiver->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
NS_ENSURE_TRUE(manager, NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIAtom> atom(do_GetAtom(nsDependentJSString(id)));
@ -6725,12 +6728,12 @@ nsEventReceiverSH::RegisterCompileHandler(nsIXPConnectWrappedNative *wrapper,
JSObject *scope = GetGlobalJSObject(cx, obj);
if (compile) {
rv = manager->CompileScriptEventListener(script_cx, scope, piTarget, atom,
rv = manager->CompileScriptEventListener(script_cx, scope, receiver, atom,
did_define);
} else if (remove) {
rv = manager->RemoveScriptEventListener(atom);
} else {
rv = manager->RegisterScriptEventListener(script_cx, scope, piTarget,
rv = manager->RegisterScriptEventListener(script_cx, scope, receiver,
atom);
}

Просмотреть файл

@ -698,6 +698,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsGlobalWindow)
NS_INTERFACE_MAP_ENTRY(nsIDOMJSWindow)
NS_INTERFACE_MAP_ENTRY(nsIScriptGlobalObject)
NS_INTERFACE_MAP_ENTRY(nsIScriptObjectPrincipal)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventReceiver)
NS_INTERFACE_MAP_ENTRY(nsPIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY(nsIDOM3EventTarget)
@ -1292,9 +1293,9 @@ nsGlobalWindow::SetNewDocument(nsIDocument* aDocument,
if (internal == NS_STATIC_CAST(nsIDOMWindowInternal *, this)) {
nsCOMPtr<nsIXBLService> xblService = do_GetService("@mozilla.org/xbl;1");
if (xblService) {
nsCOMPtr<nsPIDOMEventTarget> piTarget =
nsCOMPtr<nsIDOMEventReceiver> rec =
do_QueryInterface(mChromeEventHandler);
xblService->AttachGlobalKeyHandler(piTarget);
xblService->AttachGlobalKeyHandler(rec);
}
}
}
@ -5566,7 +5567,12 @@ nsGlobalWindow::AddEventListener(const nsAString& aType,
return manager->AddEventListenerByType(aListener, aType, flags, nsnull);
}
nsresult
//*****************************************************************************
// nsGlobalWindow::nsIDOMEventReceiver
//*****************************************************************************
NS_IMETHODIMP
nsGlobalWindow::AddEventListenerByIID(nsIDOMEventListener* aListener,
const nsIID& aIID)
{
@ -5579,7 +5585,7 @@ nsGlobalWindow::AddEventListenerByIID(nsIDOMEventListener* aListener,
return NS_ERROR_FAILURE;
}
nsresult
NS_IMETHODIMP
nsGlobalWindow::RemoveEventListenerByIID(nsIDOMEventListener* aListener,
const nsIID& aIID)
{
@ -5594,7 +5600,7 @@ nsGlobalWindow::RemoveEventListenerByIID(nsIDOMEventListener* aListener,
return NS_ERROR_FAILURE;
}
nsresult
NS_IMETHODIMP
nsGlobalWindow::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
@ -5613,7 +5619,7 @@ nsGlobalWindow::GetListenerManager(PRBool aCreateIfNotFound,
mListenerManager = do_CreateInstance(kEventListenerManagerCID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
mListenerManager->SetListenerTarget(
NS_STATIC_CAST(nsPIDOMEventTarget*, this));
NS_STATIC_CAST(nsIDOMEventReceiver*, this));
}
NS_ADDREF(*aResult = mListenerManager);
@ -5621,7 +5627,7 @@ nsGlobalWindow::GetListenerManager(PRBool aCreateIfNotFound,
return NS_OK;
}
nsresult
NS_IMETHODIMP
nsGlobalWindow::GetSystemEventGroup(nsIDOMEventGroup **aGroup)
{
nsCOMPtr<nsIEventListenerManager> manager;

Просмотреть файл

@ -61,7 +61,7 @@
#include "nsIDocShellTreeItem.h"
#include "nsIDOMClientInformation.h"
#include "nsIDOMViewCSS.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMNSEventTarget.h"
#include "nsIDOMNavigator.h"
@ -216,7 +216,7 @@ class nsGlobalWindow : public nsPIDOMWindow,
public nsIScriptGlobalObject,
public nsIDOMJSWindow,
public nsIScriptObjectPrincipal,
public nsIDOMEventTarget,
public nsIDOMEventReceiver,
public nsPIDOMEventTarget,
public nsIDOM3EventTarget,
public nsIDOMNSEventTarget,
@ -278,6 +278,15 @@ public:
// nsIDOMNSEventTarget
NS_DECL_NSIDOMNSEVENTTARGET
// nsIDOMEventReceiver
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup);
// nsPIDOMWindow
virtual NS_HIDDEN_(nsPIDOMWindow*) GetPrivateRoot();
virtual NS_HIDDEN_(nsresult) Activate();
@ -312,13 +321,6 @@ public:
nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual NS_HIDDEN_(nsresult) GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual NS_HIDDEN_(nsresult) AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual NS_HIDDEN_(nsresult) RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual NS_HIDDEN_(nsresult) GetSystemEventGroup(nsIDOMEventGroup** aGroup);
virtual NS_HIDDEN_(void) SetDocShell(nsIDocShell* aDocShell);
virtual NS_HIDDEN_(nsresult) SetNewDocument(nsIDocument *aDocument,

Просмотреть файл

@ -67,10 +67,10 @@ nsWindowRoot::nsWindowRoot(nsIDOMWindow* aWindow)
nsFocusController::Create(getter_AddRefs(mFocusController));
nsCOMPtr<nsIDOMFocusListener> focusListener(do_QueryInterface(mFocusController));
mRefCnt.incr(NS_STATIC_CAST(nsIDOMEventTarget*, this));
mRefCnt.incr(NS_STATIC_CAST(nsIDOMEventReceiver*, this));
AddEventListener(NS_LITERAL_STRING("focus"), focusListener, PR_TRUE);
AddEventListener(NS_LITERAL_STRING("blur"), focusListener, PR_TRUE);
mRefCnt.decr(NS_STATIC_CAST(nsIDOMEventTarget*, this));
mRefCnt.decr(NS_STATIC_CAST(nsIDOMEventReceiver*, this));
}
nsWindowRoot::~nsWindowRoot()
@ -83,7 +83,8 @@ nsWindowRoot::~nsWindowRoot()
NS_IMPL_CYCLE_COLLECTION_2(nsWindowRoot, mListenerManager, mFocusController)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsWindowRoot)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMEventReceiver)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventReceiver)
NS_INTERFACE_MAP_ENTRY(nsPIDOMEventTarget)
NS_INTERFACE_MAP_ENTRY(nsPIWindowRoot)
NS_INTERFACE_MAP_ENTRY(nsIDOMEventTarget)
@ -183,7 +184,7 @@ nsWindowRoot::AddEventListener(const nsAString& aType,
return manager->AddEventListenerByType(aListener, aType, flags, nsnull);
}
nsresult
NS_IMETHODIMP
nsWindowRoot::AddEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> manager;
@ -195,7 +196,7 @@ nsWindowRoot::AddEventListenerByIID(nsIDOMEventListener *aListener, const nsIID&
return NS_ERROR_FAILURE;
}
nsresult
NS_IMETHODIMP
nsWindowRoot::RemoveEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID)
{
nsCOMPtr<nsIEventListenerManager> manager;
@ -207,7 +208,7 @@ nsWindowRoot::RemoveEventListenerByIID(nsIDOMEventListener *aListener, const nsI
return NS_ERROR_FAILURE;
}
nsresult
NS_IMETHODIMP
nsWindowRoot::GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult)
{
@ -220,7 +221,7 @@ nsWindowRoot::GetListenerManager(PRBool aCreateIfNotFound,
mListenerManager = do_CreateInstance(kEventListenerManagerCID, &rv);
if (NS_FAILED(rv)) return rv;
mListenerManager->SetListenerTarget(
NS_STATIC_CAST(nsPIDOMEventTarget*, this));
NS_STATIC_CAST(nsIDOMEventReceiver*, this));
}
*aResult = mListenerManager;
@ -228,7 +229,7 @@ nsWindowRoot::GetListenerManager(PRBool aCreateIfNotFound,
return NS_OK;
}
nsresult
NS_IMETHODIMP
nsWindowRoot::GetSystemEventGroup(nsIDOMEventGroup **aGroup)
{
nsCOMPtr<nsIEventListenerManager> manager;

Просмотреть файл

@ -47,7 +47,7 @@ class nsIDOMEvent;
class nsEventChainPreVisitor;
class nsEventChainPostVisitor;
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMNSEventTarget.h"
#include "nsIEventListenerManager.h"
@ -56,7 +56,7 @@ class nsEventChainPostVisitor;
#include "nsIDOMEventTarget.h"
#include "nsCycleCollectionParticipant.h"
class nsWindowRoot : public nsIDOMEventTarget,
class nsWindowRoot : public nsIDOMEventReceiver,
public nsIDOM3EventTarget,
public nsIDOMNSEventTarget,
public nsPIWindowRoot
@ -76,18 +76,18 @@ public:
nsIDOMEvent* aDOMEvent,
nsPresContext* aPresContext,
nsEventStatus* aEventStatus);
virtual nsresult GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
virtual nsresult AddEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult RemoveEventListenerByIID(nsIDOMEventListener *aListener,
const nsIID& aIID);
virtual nsresult GetSystemEventGroup(nsIDOMEventGroup** aGroup);
// nsIDOMEventReceiver
NS_IMETHOD AddEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID);
NS_IMETHOD RemoveEventListenerByIID(nsIDOMEventListener *aListener, const nsIID& aIID);
NS_IMETHOD GetListenerManager(PRBool aCreateIfNotFound,
nsIEventListenerManager** aResult);
NS_IMETHOD GetSystemEventGroup(nsIDOMEventGroup** aGroup);
// nsPIWindowRoot
NS_IMETHOD GetFocusController(nsIFocusController** aResult);
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsWindowRoot, nsIDOMEventTarget)
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsWindowRoot, nsIDOMEventReceiver)
protected:
// Members

Просмотреть файл

@ -43,8 +43,7 @@
#include "nsIDOMHTMLDocument.h"
#include "nsIDOMHTMLElement.h"
#include "nsIDOMNSHTMLElement.h"
#include "nsIDOMEventTarget.h"
#include "nsPIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIEventListenerManager.h"
#include "nsIPrefBranch.h"
#include "nsIPrefService.h"
@ -322,9 +321,9 @@ nsEditor::InstallEventListeners()
mCompositionListenerP && mDragListenerP,
NS_ERROR_NOT_INITIALIZED);
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
if (!piTarget) {
if (!erP) {
RemoveEventListeners();
return NS_ERROR_FAILURE;
}
@ -333,9 +332,9 @@ nsEditor::InstallEventListeners()
// register the event listeners with the listener manager
nsCOMPtr<nsIDOMEventGroup> sysGroup;
piTarget->GetSystemEventGroup(getter_AddRefs(sysGroup));
erP->GetSystemEventGroup(getter_AddRefs(sysGroup));
nsCOMPtr<nsIEventListenerManager> elmP;
piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(elmP));
erP->GetListenerManager(PR_TRUE, getter_AddRefs(elmP));
if (sysGroup && elmP)
{
@ -348,20 +347,20 @@ nsEditor::InstallEventListeners()
"failed to register key listener in system group");
}
rv |= piTarget->AddEventListenerByIID(mMouseListenerP,
NS_GET_IID(nsIDOMMouseListener));
rv |= erP->AddEventListenerByIID(mMouseListenerP,
NS_GET_IID(nsIDOMMouseListener));
rv |= piTarget->AddEventListenerByIID(mFocusListenerP,
NS_GET_IID(nsIDOMFocusListener));
rv |= erP->AddEventListenerByIID(mFocusListenerP,
NS_GET_IID(nsIDOMFocusListener));
rv |= piTarget->AddEventListenerByIID(mTextListenerP,
NS_GET_IID(nsIDOMTextListener));
rv |= erP->AddEventListenerByIID(mTextListenerP,
NS_GET_IID(nsIDOMTextListener));
rv |= piTarget->AddEventListenerByIID(mCompositionListenerP,
NS_GET_IID(nsIDOMCompositionListener));
rv |= erP->AddEventListenerByIID(mCompositionListenerP,
NS_GET_IID(nsIDOMCompositionListener));
rv |= piTarget->AddEventListenerByIID(mDragListenerP,
NS_GET_IID(nsIDOMDragListener));
rv |= erP->AddEventListenerByIID(mDragListenerP,
NS_GET_IID(nsIDOMDragListener));
if (NS_FAILED(rv))
{
@ -381,18 +380,18 @@ nsEditor::RemoveEventListeners()
return;
}
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
if (piTarget)
if (erP)
{
// unregister the event listeners with the DOM event reveiver
if (mKeyListenerP)
{
nsCOMPtr<nsIDOMEventGroup> sysGroup;
piTarget->GetSystemEventGroup(getter_AddRefs(sysGroup));
erP->GetSystemEventGroup(getter_AddRefs(sysGroup));
nsCOMPtr<nsIEventListenerManager> elmP;
piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(elmP));
erP->GetListenerManager(PR_TRUE, getter_AddRefs(elmP));
if (sysGroup && elmP)
{
elmP->RemoveEventListenerByType(mKeyListenerP,
@ -405,32 +404,32 @@ nsEditor::RemoveEventListeners()
if (mMouseListenerP)
{
piTarget->RemoveEventListenerByIID(mMouseListenerP,
NS_GET_IID(nsIDOMMouseListener));
erP->RemoveEventListenerByIID(mMouseListenerP,
NS_GET_IID(nsIDOMMouseListener));
}
if (mFocusListenerP)
{
piTarget->RemoveEventListenerByIID(mFocusListenerP,
NS_GET_IID(nsIDOMFocusListener));
erP->RemoveEventListenerByIID(mFocusListenerP,
NS_GET_IID(nsIDOMFocusListener));
}
if (mTextListenerP)
{
piTarget->RemoveEventListenerByIID(mTextListenerP,
NS_GET_IID(nsIDOMTextListener));
erP->RemoveEventListenerByIID(mTextListenerP,
NS_GET_IID(nsIDOMTextListener));
}
if (mCompositionListenerP)
{
piTarget->RemoveEventListenerByIID(mCompositionListenerP,
NS_GET_IID(nsIDOMCompositionListener));
erP->RemoveEventListenerByIID(mCompositionListenerP,
NS_GET_IID(nsIDOMCompositionListener));
}
if (mDragListenerP)
{
piTarget->RemoveEventListenerByIID(mDragListenerP,
NS_GET_IID(nsIDOMDragListener));
erP->RemoveEventListenerByIID(mDragListenerP,
NS_GET_IID(nsIDOMDragListener));
}
}
}
@ -5209,14 +5208,14 @@ nsEditor::HandleInlineSpellCheck(PRInt32 action,
aEndOffset) : NS_OK;
}
already_AddRefed<nsPIDOMEventTarget>
nsEditor::GetPIDOMEventTarget()
already_AddRefed<nsIDOMEventReceiver>
nsEditor::GetDOMEventReceiver()
{
nsPIDOMEventTarget* piTarget = mEventTarget;
if (piTarget)
nsIDOMEventReceiver *erp = mDOMEventReceiver;
if (erp)
{
NS_ADDREF(piTarget);
return piTarget;
NS_ADDREF(erp);
return erp;
}
nsIDOMElement *rootElement = GetRoot();
@ -5228,9 +5227,9 @@ nsEditor::GetPIDOMEventTarget()
if (content && content->IsNativeAnonymous())
{
mEventTarget = do_QueryInterface(content->GetParent());
piTarget = mEventTarget;
NS_IF_ADDREF(piTarget);
mDOMEventReceiver = do_QueryInterface(content->GetParent());
erp = mDOMEventReceiver;
NS_IF_ADDREF(erp);
}
else
{
@ -5239,7 +5238,7 @@ nsEditor::GetPIDOMEventTarget()
// ourselves, if it exists.
if (mDocWeak)
{
CallQueryReferent(mDocWeak.get(), &piTarget);
CallQueryReferent(mDocWeak.get(), &erp);
}
else
{
@ -5247,7 +5246,7 @@ nsEditor::GetPIDOMEventTarget()
}
}
return piTarget;
return erp;
}
nsIDOMElement *

Просмотреть файл

@ -63,7 +63,6 @@
#include "nsSelectionState.h"
#include "nsIEditorSpellCheck.h"
#include "nsIInlineSpellChecker.h"
#include "nsPIDOMEventTarget.h"
class nsIDOMCharacterData;
class nsIDOMRange;
@ -84,7 +83,7 @@ class AddStyleSheetTxn;
class RemoveStyleSheetTxn;
class nsIFile;
class nsISelectionController;
class nsIDOMEventTarget;
class nsIDOMEventReceiver;
#define kMOZEditorBogusNodeAttr NS_LITERAL_STRING("_moz_editor_bogus_node")
#define kMOZEditorBogusNodeValue NS_LITERAL_STRING("TRUE")
@ -575,7 +574,7 @@ public:
nsIDOMNode *aEndNode,
PRInt32 aEndOffset);
already_AddRefed<nsPIDOMEventTarget> GetPIDOMEventTarget();
already_AddRefed<nsIDOMEventReceiver> GetDOMEventReceiver();
// Fast non-refcounting editor root element accessor
nsIDOMElement *GetRoot();
@ -635,7 +634,7 @@ protected:
PRInt8 mDocDirtyState; // -1 = not initialized
nsWeakPtr mDocWeak; // weak reference to the nsIDOMDocument
// The form field as an event receiver
nsCOMPtr<nsPIDOMEventTarget> mEventTarget;
nsCOMPtr<nsIDOMEventReceiver> mDOMEventReceiver;
nsString* mPhonetic;

Просмотреть файл

@ -57,6 +57,7 @@
#include "nsIDOMNodeList.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIPrefBranch.h"
#include "nsIPrefService.h"
@ -402,11 +403,11 @@ nsHTMLEditor::GrabberClicked()
mMouseMotionListenerP = new ResizerMouseMotionListener(this);
if (!mMouseMotionListenerP) {return NS_ERROR_NULL_POINTER;}
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
NS_ENSURE_TRUE(piTarget, NS_ERROR_FAILURE);
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
NS_ENSURE_TRUE(erP, NS_ERROR_FAILURE);
res = piTarget->AddEventListenerByIID(mMouseMotionListenerP,
NS_GET_IID(nsIDOMMouseMotionListener));
res = erP->AddEventListenerByIID(mMouseMotionListenerP,
NS_GET_IID(nsIDOMMouseMotionListener));
NS_ASSERTION(NS_SUCCEEDED(res),
"failed to register mouse motion listener");
}
@ -431,14 +432,13 @@ nsHTMLEditor::EndMoving()
DeleteRefToAnonymousNode(mPositioningShadow, rootContent, ps);
mPositioningShadow = nsnull;
}
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
if (piTarget && mMouseMotionListenerP) {
if (erP && mMouseMotionListenerP) {
#ifdef DEBUG
nsresult res =
#endif
piTarget->RemoveEventListenerByIID(mMouseMotionListenerP,
NS_GET_IID(nsIDOMMouseMotionListener));
erP->RemoveEventListenerByIID(mMouseMotionListenerP, NS_GET_IID(nsIDOMMouseMotionListener));
NS_ASSERTION(NS_SUCCEEDED(res), "failed to remove mouse motion listener");
}
mMouseMotionListenerP = nsnull;

Просмотреть файл

@ -51,7 +51,7 @@
#include "nsIDOMDocument.h"
#include "nsIDOMAttr.h"
#include "nsIDocument.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMNSEvent.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMKeyListener.h"

Просмотреть файл

@ -58,7 +58,7 @@
#include "nsIDOMDocument.h"
#include "nsIDOMAttr.h"
#include "nsIDocument.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMKeyListener.h"
@ -369,10 +369,9 @@ nsHTMLEditor::RemoveEventListeners()
return;
}
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(piTarget);
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
if (piTarget && target)
if (erP)
{
// Both mMouseMotionListenerP and mResizeEventListenerP can be
// registerd with other targets than the DOM event receiver that
@ -385,17 +384,17 @@ nsHTMLEditor::RemoveEventListeners()
{
// mMouseMotionListenerP might be registerd either by IID or
// name, unregister by both.
piTarget->RemoveEventListenerByIID(mMouseMotionListenerP,
NS_GET_IID(nsIDOMMouseMotionListener));
erP->RemoveEventListenerByIID(mMouseMotionListenerP,
NS_GET_IID(nsIDOMMouseMotionListener));
target->RemoveEventListener(NS_LITERAL_STRING("mousemove"),
mMouseMotionListenerP, PR_TRUE);
erP->RemoveEventListener(NS_LITERAL_STRING("mousemove"),
mMouseMotionListenerP, PR_TRUE);
}
if (mResizeEventListenerP)
{
target->RemoveEventListener(NS_LITERAL_STRING("resize"),
mResizeEventListenerP, PR_FALSE);
erP->RemoveEventListener(NS_LITERAL_STRING("resize"),
mResizeEventListenerP, PR_FALSE);
}
}

Просмотреть файл

@ -40,7 +40,7 @@
#include "nsIDOMEventTarget.h"
#include "nsIDOMNSHTMLElement.h"
#include "nsPIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMText.h"
#include "nsIDOMCSSValue.h"
@ -479,14 +479,12 @@ nsHTMLEditor::HideResizers(void)
// don't forget to remove the listeners !
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(piTarget);
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
nsresult res;
if (target && mMouseMotionListenerP)
if (erP && mMouseMotionListenerP)
{
res = target->RemoveEventListener(NS_LITERAL_STRING("mousemove"),
mMouseMotionListenerP, PR_TRUE);
res = erP->RemoveEventListener(NS_LITERAL_STRING("mousemove"), mMouseMotionListenerP, PR_TRUE);
NS_ASSERTION(NS_SUCCEEDED(res), "failed to remove mouse motion listener");
}
mMouseMotionListenerP = nsnull;
@ -495,7 +493,7 @@ nsHTMLEditor::HideResizers(void)
GetDocument(getter_AddRefs(domDoc));
nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc);
if (!doc) { return NS_ERROR_NULL_POINTER; }
target = do_QueryInterface(doc->GetWindow());
nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(doc->GetWindow());
if (!target) { return NS_ERROR_NULL_POINTER; }
if (mResizeEventListenerP) {
@ -614,12 +612,11 @@ nsHTMLEditor::StartResizing(nsIDOMElement *aHandle)
return NS_ERROR_OUT_OF_MEMORY;
}
nsCOMPtr<nsPIDOMEventTarget> piTarget = GetPIDOMEventTarget();
nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(piTarget);
NS_ENSURE_TRUE(target, NS_ERROR_FAILURE);
nsCOMPtr<nsIDOMEventReceiver> erP = GetDOMEventReceiver();
NS_ENSURE_TRUE(erP, NS_ERROR_FAILURE);
result = target->AddEventListener(NS_LITERAL_STRING("mousemove"),
mMouseMotionListenerP, PR_TRUE);
result = erP->AddEventListener(NS_LITERAL_STRING("mousemove"),
mMouseMotionListenerP, PR_TRUE);
NS_ASSERTION(NS_SUCCEEDED(result),
"failed to register mouse motion listener");
}

Просмотреть файл

@ -42,7 +42,7 @@
#include "nsIDocument.h"
#include "nsIContent.h"
#include "nsIFormControl.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMNSEvent.h"
#include "nsIDOMMouseEvent.h"
#include "nsISelection.h"

Просмотреть файл

@ -47,7 +47,7 @@
#include "nsIDOMNodeList.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOM3EventTarget.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMMouseListener.h"

Просмотреть файл

@ -647,8 +647,8 @@ EmbedPrivate::Destroy(void)
// detach our event listeners and release the event receiver
DetachListeners();
if (mEventTarget)
mEventTarget = nsnull;
if (mEventReceiver)
mEventReceiver = nsnull;
// destroy our child window
mWindow->ReleaseChildren();
@ -993,7 +993,7 @@ EmbedPrivate::ContentStateChange(void)
GetListener();
if (!mEventTarget)
if (!mEventReceiver)
return;
AttachListeners();
@ -1118,7 +1118,7 @@ EmbedPrivate::ChildFocusOut(void)
void
EmbedPrivate::GetListener(void)
{
if (mEventTarget)
if (mEventReceiver)
return;
nsCOMPtr<nsPIDOMWindow> piWin;
@ -1127,7 +1127,7 @@ EmbedPrivate::GetListener(void)
if (!piWin)
return;
mEventTarget = do_QueryInterface(piWin->GetChromeEventHandler());
mEventReceiver = do_QueryInterface(piWin->GetChromeEventHandler());
}
// attach key and mouse event listeners
@ -1135,7 +1135,7 @@ EmbedPrivate::GetListener(void)
void
EmbedPrivate::AttachListeners(void)
{
if (!mEventTarget || mListenersAttached)
if (!mEventReceiver || mListenersAttached)
return;
nsIDOMEventListener *eventListener =
@ -1144,7 +1144,7 @@ EmbedPrivate::AttachListeners(void)
// add the key listener
nsresult rv;
rv = mEventTarget->AddEventListenerByIID(
rv = mEventReceiver->AddEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMKeyListener));
if (NS_FAILED(rv)) {
@ -1152,7 +1152,7 @@ EmbedPrivate::AttachListeners(void)
return;
}
rv = mEventTarget->AddEventListenerByIID(
rv = mEventReceiver->AddEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMMouseListener));
if (NS_FAILED(rv)) {
@ -1160,7 +1160,7 @@ EmbedPrivate::AttachListeners(void)
return;
}
rv = mEventTarget->AddEventListenerByIID(
rv = mEventReceiver->AddEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMUIListener));
if (NS_FAILED(rv)) {
@ -1168,23 +1168,17 @@ EmbedPrivate::AttachListeners(void)
return;
}
rv = mEventTarget->AddEventListenerByIID(
rv = mEventReceiver->AddEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMMouseMotionListener));
if (NS_FAILED(rv)) {
NS_WARNING("Failed to add Mouse Motion listener\n");
return;
}
nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(mEventTarget));
if (!target) {
return;
}
rv = target->AddEventListener(NS_LITERAL_STRING("focus"), eventListener, PR_TRUE);
rv = target->AddEventListener(NS_LITERAL_STRING("blur"), eventListener, PR_TRUE);
rv = target->AddEventListener(NS_LITERAL_STRING("DOMLinkAdded"), eventListener, PR_TRUE);
rv = target->AddEventListener(NS_LITERAL_STRING("load"), eventListener, PR_TRUE);
rv = mEventReceiver->AddEventListener(NS_LITERAL_STRING("focus"), eventListener, PR_TRUE);
rv = mEventReceiver->AddEventListener(NS_LITERAL_STRING("blur"), eventListener, PR_TRUE);
rv = mEventReceiver->AddEventListener(NS_LITERAL_STRING("DOMLinkAdded"), eventListener, PR_TRUE);
rv = mEventReceiver->AddEventListener(NS_LITERAL_STRING("load"), eventListener, PR_TRUE);
if (NS_FAILED(rv)) {
NS_WARNING("Failed to add Mouse Motion listener\n");
return;
@ -1196,7 +1190,7 @@ EmbedPrivate::AttachListeners(void)
void
EmbedPrivate::DetachListeners(void)
{
if (!mListenersAttached || !mEventTarget)
if (!mListenersAttached || !mEventReceiver)
return;
nsIDOMEventListener *eventListener =
@ -1204,7 +1198,7 @@ EmbedPrivate::DetachListeners(void)
NS_STATIC_CAST(nsIDOMKeyListener *, mEventListener));
nsresult rv;
rv = mEventTarget->RemoveEventListenerByIID(
rv = mEventReceiver->RemoveEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMKeyListener));
if (NS_FAILED(rv)) {
@ -1213,7 +1207,7 @@ EmbedPrivate::DetachListeners(void)
}
rv =
mEventTarget->RemoveEventListenerByIID(
mEventReceiver->RemoveEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMMouseListener));
if (NS_FAILED(rv)) {
@ -1221,7 +1215,7 @@ EmbedPrivate::DetachListeners(void)
return;
}
rv = mEventTarget->RemoveEventListenerByIID(
rv = mEventReceiver->RemoveEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMUIListener));
if (NS_FAILED(rv)) {
@ -1229,23 +1223,17 @@ EmbedPrivate::DetachListeners(void)
return;
}
rv = mEventTarget->RemoveEventListenerByIID(
rv = mEventReceiver->RemoveEventListenerByIID(
eventListener,
NS_GET_IID(nsIDOMMouseMotionListener));
if (NS_FAILED(rv)) {
NS_WARNING("Failed to remove Mouse Motion listener\n");
return;
}
nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(mEventTarget));
if (!target) {
return;
}
rv = target->RemoveEventListener(NS_LITERAL_STRING("focus"), eventListener, PR_TRUE);
rv = target->RemoveEventListener(NS_LITERAL_STRING("blur"), eventListener, PR_TRUE);
rv = target->RemoveEventListener(NS_LITERAL_STRING("DOMLinkAdded"), eventListener, PR_TRUE);
rv = target->RemoveEventListener(NS_LITERAL_STRING("load"), eventListener, PR_TRUE);
rv = mEventReceiver->RemoveEventListener(NS_LITERAL_STRING("focus"), eventListener, PR_TRUE);
rv = mEventReceiver->RemoveEventListener(NS_LITERAL_STRING("blur"), eventListener, PR_TRUE);
rv = mEventReceiver->RemoveEventListener(NS_LITERAL_STRING("DOMLinkAdded"), eventListener, PR_TRUE);
rv = mEventReceiver->RemoveEventListener(NS_LITERAL_STRING("load"), eventListener, PR_TRUE);
mListenersAttached = PR_FALSE;
}

Просмотреть файл

@ -54,7 +54,7 @@
// object.
#include "nsIWebBrowserChrome.h"
#include "nsIAppShell.h"
#include "nsPIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsVoidArray.h"
// app component registration
@ -190,7 +190,8 @@ class EmbedPrivate {
nsCOMPtr<nsIWebNavigation> mNavigation;
nsCOMPtr<nsISHistory> mSessionHistory;
nsCOMPtr<nsPIDOMEventTarget> mEventTarget;
// our event receiver
nsCOMPtr<nsIDOMEventReceiver> mEventReceiver;
// the currently loaded uri
nsString mURI;

Просмотреть файл

@ -71,7 +71,7 @@
#include "nsIDOMEvent.h"
#include "nsIDOMMouseEvent.h"
#include "nsIDOMNSUIEvent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMNamedNodeMap.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLTextAreaElement.h"
@ -98,16 +98,15 @@
#include "nsPresContext.h"
#include "nsIViewManager.h"
#include "nsIView.h"
#include "nsPIDOMEventTarget.h"
//
// GetEventReceiver
//
// A helper routine that navigates the tricky path from a |nsWebBrowser| to
// a |nsPIDOMEventTarget| via the window root and chrome event handler.
// a |nsIDOMEventReceiver| via the window root and chrome event handler.
//
static nsresult
GetPIDOMEventTarget( nsWebBrowser* inBrowser, nsPIDOMEventTarget** aTarget)
GetEventReceiver ( nsWebBrowser* inBrowser, nsIDOMEventReceiver** outEventRcvr )
{
nsCOMPtr<nsIDOMWindow> domWindow;
inBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));
@ -117,11 +116,11 @@ GetPIDOMEventTarget( nsWebBrowser* inBrowser, nsPIDOMEventTarget** aTarget)
NS_ENSURE_TRUE(domWindowPrivate, NS_ERROR_FAILURE);
nsPIDOMWindow *rootWindow = domWindowPrivate->GetPrivateRoot();
NS_ENSURE_TRUE(rootWindow, NS_ERROR_FAILURE);
nsCOMPtr<nsPIDOMEventTarget> piTarget =
nsCOMPtr<nsIDOMEventReceiver> rcvr =
do_QueryInterface(rootWindow->GetChromeEventHandler());
NS_ENSURE_TRUE(piTarget, NS_ERROR_FAILURE);
*aTarget = piTarget;
NS_IF_ADDREF(*aTarget);
NS_ENSURE_TRUE(rcvr, NS_ERROR_FAILURE);
*outEventRcvr = rcvr;
NS_IF_ADDREF(*outEventRcvr);
return NS_OK;
}
@ -906,10 +905,10 @@ nsDocShellTreeOwner::AddChromeListeners()
mChromeDragHandler = do_CreateInstance("@mozilla.org:/content/content-area-dragdrop;1", &rv);
NS_ASSERTION(mChromeDragHandler, "Couldn't create the chrome drag handler");
if ( mChromeDragHandler ) {
nsCOMPtr<nsPIDOMEventTarget> piTarget;
GetPIDOMEventTarget(mWebBrowser, getter_AddRefs(piTarget));
nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(piTarget));
mChromeDragHandler->HookupTo(target, NS_STATIC_CAST(nsIWebNavigation*, mWebBrowser));
nsCOMPtr<nsIDOMEventReceiver> rcvr;
GetEventReceiver(mWebBrowser, getter_AddRefs(rcvr));
nsCOMPtr<nsIDOMEventTarget> rcvrTarget(do_QueryInterface(rcvr));
mChromeDragHandler->HookupTo(rcvrTarget, NS_STATIC_CAST(nsIWebNavigation*, mWebBrowser));
}
}
@ -1116,8 +1115,8 @@ ChromeTooltipListener::~ChromeTooltipListener()
NS_IMETHODIMP
ChromeTooltipListener::AddChromeListeners()
{
if (!mEventTarget)
GetPIDOMEventTarget(mWebBrowser, getter_AddRefs(mEventTarget));
if ( !mEventReceiver )
GetEventReceiver(mWebBrowser, getter_AddRefs(mEventReceiver));
// Register the appropriate events for tooltips, but only if
// the embedding chrome cares.
@ -1144,11 +1143,11 @@ ChromeTooltipListener::AddChromeListeners()
NS_IMETHODIMP
ChromeTooltipListener::AddTooltipListener()
{
if (mEventTarget) {
if (mEventReceiver) {
nsIDOMMouseListener *pListener = NS_STATIC_CAST(nsIDOMMouseListener *, this);
nsresult rv = mEventTarget->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseListener));
nsresult rv2 = mEventTarget->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseMotionListener));
nsresult rv3 = mEventTarget->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMKeyListener));
nsresult rv = mEventReceiver->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseListener));
nsresult rv2 = mEventReceiver->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseMotionListener));
nsresult rv3 = mEventReceiver->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMKeyListener));
// if all 3 succeed, we're a go!
if (NS_SUCCEEDED(rv) && NS_SUCCEEDED(rv2) && NS_SUCCEEDED(rv3))
@ -1172,7 +1171,7 @@ ChromeTooltipListener::RemoveChromeListeners ( )
if ( mTooltipListenerInstalled )
RemoveTooltipListener();
mEventTarget = nsnull;
mEventReceiver = nsnull;
// it really doesn't matter if these fail...
return NS_OK;
@ -1189,11 +1188,11 @@ ChromeTooltipListener::RemoveChromeListeners ( )
NS_IMETHODIMP
ChromeTooltipListener::RemoveTooltipListener()
{
if (mEventTarget) {
if (mEventReceiver) {
nsIDOMMouseListener *pListener = NS_STATIC_CAST(nsIDOMMouseListener *, this);
nsresult rv = mEventTarget->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseListener));
nsresult rv2 = mEventTarget->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseMotionListener));
nsresult rv3 = mEventTarget->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMKeyListener));
nsresult rv = mEventReceiver->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseListener));
nsresult rv2 = mEventReceiver->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMMouseMotionListener));
nsresult rv3 = mEventReceiver->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMKeyListener));
if (NS_SUCCEEDED(rv) && NS_SUCCEEDED(rv2) && NS_SUCCEEDED(rv3))
mTooltipListenerInstalled = PR_FALSE;
}
@ -1569,9 +1568,9 @@ ChromeContextMenuListener::~ChromeContextMenuListener()
NS_IMETHODIMP
ChromeContextMenuListener::AddContextMenuListener()
{
if (mEventTarget) {
if (mEventReceiver) {
nsIDOMContextMenuListener *pListener = NS_STATIC_CAST(nsIDOMContextMenuListener *, this);
nsresult rv = mEventTarget->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMContextMenuListener));
nsresult rv = mEventReceiver->AddEventListenerByIID(pListener, NS_GET_IID(nsIDOMContextMenuListener));
if (NS_SUCCEEDED(rv))
mContextMenuListenerInstalled = PR_TRUE;
}
@ -1588,9 +1587,9 @@ ChromeContextMenuListener::AddContextMenuListener()
NS_IMETHODIMP
ChromeContextMenuListener::RemoveContextMenuListener()
{
if (mEventTarget) {
if (mEventReceiver) {
nsIDOMContextMenuListener *pListener = NS_STATIC_CAST(nsIDOMContextMenuListener *, this);
nsresult rv = mEventTarget->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMContextMenuListener));
nsresult rv = mEventReceiver->RemoveEventListenerByIID(pListener, NS_GET_IID(nsIDOMContextMenuListener));
if (NS_SUCCEEDED(rv))
mContextMenuListenerInstalled = PR_FALSE;
}
@ -1608,8 +1607,8 @@ ChromeContextMenuListener::RemoveContextMenuListener()
NS_IMETHODIMP
ChromeContextMenuListener::AddChromeListeners()
{
if (!mEventTarget)
GetPIDOMEventTarget(mWebBrowser, getter_AddRefs(mEventTarget));
if ( !mEventReceiver )
GetEventReceiver(mWebBrowser, getter_AddRefs(mEventReceiver));
// Register the appropriate events for context menus, but only if
// the embedding chrome cares.
@ -1636,7 +1635,7 @@ ChromeContextMenuListener::RemoveChromeListeners()
if ( mContextMenuListenerInstalled )
RemoveContextMenuListener();
mEventTarget = nsnull;
mEventReceiver = nsnull;
// it really doesn't matter if these fail...
return NS_OK;

Просмотреть файл

@ -52,7 +52,7 @@
#include "nsIWebBrowserChrome.h"
#include "nsIDOMMouseListener.h"
#include "nsIDOMDocument.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIEmbeddingSiteWindow.h"
#include "nsIWebProgressListener.h"
#include "nsWeakReference.h"
@ -66,7 +66,7 @@
#include "nsITooltipTextProvider.h"
#include "nsCTooltipTextProvider.h"
#include "nsIDragDropHandler.h"
#include "nsPIDOMEventTarget.h"
#include "nsCommandHandler.h"
class nsWebBrowser;
@ -228,7 +228,7 @@ private:
NS_IMETHOD HideTooltip ( ) ;
nsWebBrowser* mWebBrowser;
nsCOMPtr<nsPIDOMEventTarget> mEventTarget;
nsCOMPtr<nsIDOMEventReceiver> mEventReceiver;
nsCOMPtr<nsITooltipTextProvider> mTooltipTextProvider;
// This must be a strong ref in order to make sure we can hide the tooltip
@ -295,7 +295,7 @@ private:
PRPackedBool mContextMenuListenerInstalled;
nsWebBrowser* mWebBrowser;
nsCOMPtr<nsPIDOMEventTarget> mEventTarget;
nsCOMPtr<nsIDOMEventReceiver> mEventReceiver;
nsCOMPtr<nsIWebBrowserChrome> mWebBrowserChrome;
}; // class ChromeContextMenuListener

Просмотреть файл

@ -49,7 +49,7 @@
#include "nsIAtomService.h"
#include "nsIEventListenerManager.h"
#include "nsIScriptTimeoutHandler.h"
#include "nsPIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIArray.h"
#include "jscntxt.h"
#include "nsPIDOMWindow.h"
@ -303,11 +303,11 @@ static PyObject *PyAddScriptEventListener(PyObject *self, PyObject *args)
return NULL;
// The receiver, to get the manager.
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryInterface(target));
if (!piTarget) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIDOMEventReceiver> receiver(do_QueryInterface(target));
if (!receiver) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIEventListenerManager> manager;
piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
receiver->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
if (!manager) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
// avoid do_GetAtom - its not part of the XPCOM glue.
@ -374,11 +374,11 @@ static PyObject *PyRegisterScriptEventListener(PyObject *self, PyObject *args)
target = win->GetCurrentInnerWindow();
}
// The receiver, to get the manager.
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryInterface(target));
if (!piTarget) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIDOMEventReceiver> receiver(do_QueryInterface(target));
if (!receiver) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIEventListenerManager> manager;
piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
receiver->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
if (!manager) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsresult rv;
@ -445,11 +445,11 @@ static PyObject *PyCompileScriptEventListener(PyObject *self, PyObject *args)
target = win->GetCurrentInnerWindow();
}
// The receiver, to get the manager.
nsCOMPtr<nsPIDOMEventTarget> piTarget(do_QueryInterface(target));
if (!piTarget) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIDOMEventReceiver> receiver(do_QueryInterface(target));
if (!receiver) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIEventListenerManager> manager;
piTarget->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
receiver->GetListenerManager(PR_TRUE, getter_AddRefs(manager));
if (!manager) return PyXPCOM_BuildPyException(NS_ERROR_UNEXPECTED);
nsresult rv;

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsPyContext.h"
#include "nsICategoryManager.h"
#include "nsIScriptContext.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
extern void init_nsdom();

Просмотреть файл

@ -73,8 +73,7 @@
#include "nsIDOMDocument.h"
#include "nsIDOMDocumentRange.h"
#include "nsIDOMElement.h"
#include "nsIDOMEventTarget.h"
#include "nsPIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMNode.h"
#include "nsIDOMNodeList.h"
@ -623,13 +622,11 @@ mozInlineSpellChecker::RegisterEventListeners()
nsresult rv = editor->GetDocument(getter_AddRefs(doc));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(doc, &rv);
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(doc, &rv);
NS_ENSURE_SUCCESS(rv, rv);
piTarget->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMMouseListener*, this),
NS_GET_IID(nsIDOMMouseListener));
piTarget->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMKeyListener*, this),
NS_GET_IID(nsIDOMKeyListener));
eventReceiver->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMMouseListener*, this), NS_GET_IID(nsIDOMMouseListener));
eventReceiver->AddEventListenerByIID(NS_STATIC_CAST(nsIDOMKeyListener*, this), NS_GET_IID(nsIDOMKeyListener));
return NS_OK;
}
@ -648,13 +645,11 @@ mozInlineSpellChecker::UnregisterEventListeners()
editor->GetDocument(getter_AddRefs(doc));
NS_ENSURE_TRUE(doc, NS_ERROR_NULL_POINTER);
nsCOMPtr<nsPIDOMEventTarget> piTarget = do_QueryInterface(doc);
NS_ENSURE_TRUE(piTarget, NS_ERROR_NULL_POINTER);
nsCOMPtr<nsIDOMEventReceiver> eventReceiver = do_QueryInterface(doc);
NS_ENSURE_TRUE(eventReceiver, NS_ERROR_NULL_POINTER);
piTarget->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMMouseListener*, this),
NS_GET_IID(nsIDOMMouseListener));
piTarget->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMKeyListener*, this),
NS_GET_IID(nsIDOMKeyListener));
eventReceiver->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMMouseListener*, this), NS_GET_IID(nsIDOMMouseListener));
eventReceiver->RemoveEventListenerByIID(NS_STATIC_CAST(nsIDOMKeyListener*, this), NS_GET_IID(nsIDOMKeyListener));
return NS_OK;
}

Просмотреть файл

@ -175,7 +175,7 @@ static const char sPrintOptionsContractID[] = "@mozilla.org/gfx/printset
#include "nsIDocument.h"
//focus
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsIDOMFocusListener.h"
#include "nsISelectionController.h"
@ -750,13 +750,17 @@ DocumentViewerImpl::InitPresentationStuff(PRBool aDoInitialReflow)
// mFocusListener is a strong reference
mFocusListener = focusListener;
if (mDocument) {
rv = mDocument->AddEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
// get the DOM event receiver
nsCOMPtr<nsIDOMEventReceiver> erP(do_QueryInterface(mDocument));
NS_ASSERTION(erP, "No event receiver in document!");
if (erP) {
rv = erP->AddEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to register focus listener");
if (mOldFocusListener) {
rv = mDocument->RemoveEventListenerByIID(mOldFocusListener,
NS_GET_IID(nsIDOMFocusListener));
rv = erP->RemoveEventListenerByIID(mOldFocusListener,
NS_GET_IID(nsIDOMFocusListener));
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to remove focus listener");
}
}
@ -1349,9 +1353,15 @@ DocumentViewerImpl::Open(nsISupports *aState, nsISHEntry *aSHEntry)
SyncParentSubDocMap();
if (mFocusListener && mDocument) {
mDocument->AddEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
if (mFocusListener) {
// get the DOM event receiver
nsCOMPtr<nsIDOMEventReceiver> erP(do_QueryInterface(mDocument));
NS_ASSERTION(erP, "No event receiver in document!");
if (erP) {
erP->AddEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
}
}
// XXX re-enable image animations once that works correctly
@ -1405,9 +1415,15 @@ DocumentViewerImpl::Close(nsISHEntry *aSHEntry)
mDocument->Destroy();
}
if (mFocusListener && mDocument) {
mDocument->RemoveEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
if (mFocusListener) {
// get the DOM event receiver
nsCOMPtr<nsIDOMEventReceiver> erP(do_QueryInterface(mDocument));
NS_ASSERTION(erP, "No event receiver in document!");
if (erP) {
erP->RemoveEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
}
}
return NS_OK;
@ -1741,9 +1757,13 @@ DocumentViewerImpl::SetDOMDocument(nsIDOMDocument *aDocument)
mPresShell->BeginObservingDocument();
// Register the focus listener on the new document
if (mDocument) {
rv = mDocument->AddEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
nsCOMPtr<nsIDOMEventReceiver> erP = do_QueryInterface(mDocument, &rv);
NS_ASSERTION(erP, "No event receiver in document!");
if (erP) {
rv = erP->AddEventListenerByIID(mFocusListener,
NS_GET_IID(nsIDOMFocusListener));
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to register focus listener");
}
}

Просмотреть файл

@ -39,7 +39,7 @@
#include "nsCOMPtr.h"
#include "nsReadableUtils.h"
#include "nsComboboxControlFrame.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMEventReceiver.h"
#include "nsFrameManager.h"
#include "nsFormControlFrame.h"
#include "nsGfxButtonControlFrame.h"
@ -1035,11 +1035,14 @@ nsComboboxControlFrame::CreateAnonymousContent(nsTArray<nsIContent*>& aElements)
// make someone to listen to the button. If its pressed by someone like Accessibility
// then open or close the combo box.
mButtonListener = new nsComboButtonListener(this);
if (!mButtonListener)
return NS_ERROR_OUT_OF_MEMORY;
mButtonContent->AddEventListenerByIID(mButtonListener,
NS_GET_IID(nsIDOMMouseListener));
nsCOMPtr<nsIDOMEventReceiver> eventReceiver(do_QueryInterface(mButtonContent));
if (eventReceiver) {
mButtonListener = new nsComboButtonListener(this);
if (!mButtonListener)
return NS_ERROR_OUT_OF_MEMORY;
eventReceiver->AddEventListenerByIID(mButtonListener,
NS_GET_IID(nsIDOMMouseListener));
}
mButtonContent->SetAttr(kNameSpaceID_None, nsGkAtoms::type,
NS_LITERAL_STRING("button"), PR_FALSE);

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше