Bug 664058: Remove AddEventListenerByIID/RemoveEventListenerByIID from nsFileControlFrame. r=smaug

This commit is contained in:
Jonas Sicking 2011-06-29 11:07:57 -07:00
parent 118b05fb6e
commit 12fc18f115
2 changed files with 21 additions and 40 deletions

View File

@ -54,7 +54,6 @@
#include "nsIDOMElement.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIDOMMouseListener.h"
#include "nsIPresShell.h"
#include "nsXPCOM.h"
#include "nsISupportsPrimitives.h"
@ -391,7 +390,7 @@ PRBool ShouldProcessMouseClick(nsIDOMEvent* aMouseEvent)
// only allow the left button
nsCOMPtr<nsIDOMMouseEvent> mouseEvent = do_QueryInterface(aMouseEvent);
nsCOMPtr<nsIDOMNSUIEvent> uiEvent = do_QueryInterface(aMouseEvent);
NS_ENSURE_STATE(uiEvent);
NS_ENSURE_TRUE(mouseEvent && uiEvent, PR_FALSE);
PRBool defaultPrevented = PR_FALSE;
uiEvent->GetPreventDefault(&defaultPrevented);
if (defaultPrevented) {
@ -415,7 +414,7 @@ PRBool ShouldProcessMouseClick(nsIDOMEvent* aMouseEvent)
* This is called when our capture button is clicked
*/
NS_IMETHODIMP
nsFileControlFrame::CaptureMouseListener::MouseClick(nsIDOMEvent* aMouseEvent)
nsFileControlFrame::CaptureMouseListener::HandleEvent(nsIDOMEvent* aMouseEvent)
{
nsresult rv;
@ -502,30 +501,26 @@ nsFileControlFrame::CaptureMouseListener::MouseClick(nsIDOMEvent* aMouseEvent)
return NS_OK;
}
/**
* This is called when our browse button is clicked
*/
NS_IMETHODIMP
nsFileControlFrame::BrowseMouseListener::MouseClick(nsIDOMEvent* aMouseEvent)
{
NS_ASSERTION(mFrame, "We should have been unregistered");
if (!ShouldProcessMouseClick(aMouseEvent))
return NS_OK;
nsHTMLInputElement* input =
nsHTMLInputElement::FromContent(mFrame->GetContent());
return input ? input->FireAsyncClickHandler() : NS_OK;
}
/**
* This is called when we receive any registered events on the control.
* We've only registered for drop, dragover and click events, and click events
* already call MouseClick() for us. Here, we handle file drops.
* We've only registered for drop, dragover and click events.
*/
NS_IMETHODIMP
nsFileControlFrame::BrowseMouseListener::HandleEvent(nsIDOMEvent* aEvent)
{
NS_ASSERTION(mFrame, "We should have been unregistered");
nsAutoString eventType;
aEvent->GetType(eventType);
if (eventType.EqualsLiteral("click")) {
if (!ShouldProcessMouseClick(aEvent))
return NS_OK;
nsHTMLInputElement* input =
nsHTMLInputElement::FromContent(mFrame->GetContent());
return input ? input->FireAsyncClickHandler() : NS_OK;
}
nsCOMPtr<nsIDOMNSUIEvent> uiEvent = do_QueryInterface(aEvent);
NS_ENSURE_STATE(uiEvent);
PRBool defaultPrevented = PR_FALSE;
@ -539,8 +534,6 @@ nsFileControlFrame::BrowseMouseListener::HandleEvent(nsIDOMEvent* aEvent)
return NS_OK;
}
nsAutoString eventType;
aEvent->GetType(eventType);
if (eventType.EqualsLiteral("dragover")) {
// Prevent default if we can accept this drag data
aEvent->PreventDefault();
@ -838,6 +831,5 @@ nsFileControlFrame::ParseAcceptAttribute(AcceptAttrCallback aCallback,
////////////////////////////////////////////////////////////
// Mouse listener implementation
NS_IMPL_ISUPPORTS2(nsFileControlFrame::MouseListener,
nsIDOMMouseListener,
NS_IMPL_ISUPPORTS1(nsFileControlFrame::MouseListener,
nsIDOMEventListener)

View File

@ -40,7 +40,7 @@
#include "nsBlockFrame.h"
#include "nsIFormControlFrame.h"
#include "nsIDOMMouseListener.h"
#include "nsIDOMEventListener.h"
#include "nsIAnonymousContentCreator.h"
#include "nsICapturePicker.h"
#include "nsCOMPtr.h"
@ -112,7 +112,7 @@ protected:
class MouseListener;
friend class MouseListener;
class MouseListener : public nsIDOMMouseListener {
class MouseListener : public nsIDOMEventListener {
public:
NS_DECL_ISUPPORTS
@ -123,16 +123,6 @@ protected:
void ForgetFrame() {
mFrame = nsnull;
}
// We just want to capture the click events on our browse button
// and textfield.
NS_IMETHOD MouseDown(nsIDOMEvent* aMouseEvent) { return NS_OK; }
NS_IMETHOD MouseUp(nsIDOMEvent* aMouseEvent) { return NS_OK; }
NS_IMETHOD MouseClick(nsIDOMEvent* aMouseEvent) = 0;
NS_IMETHOD MouseDblClick(nsIDOMEvent* aMouseEvent) { return NS_OK; }
NS_IMETHOD MouseOver(nsIDOMEvent* aMouseEvent) { return NS_OK; }
NS_IMETHOD MouseOut(nsIDOMEvent* aMouseEvent) { return NS_OK; }
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent) { return NS_OK; }
protected:
nsFileControlFrame* mFrame;
@ -163,17 +153,16 @@ protected:
public:
CaptureMouseListener(nsFileControlFrame* aFrame) : MouseListener(aFrame),
mMode(0) {};
NS_IMETHOD MouseClick(nsIDOMEvent* aMouseEvent);
NS_DECL_NSIDOMEVENTLISTENER
PRUint32 mMode;
};
class BrowseMouseListener: public MouseListener {
public:
BrowseMouseListener(nsFileControlFrame* aFrame) : MouseListener(aFrame) {};
NS_IMETHOD MouseClick(nsIDOMEvent* aMouseEvent);
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
NS_DECL_NSIDOMEVENTLISTENER
static PRBool IsValidDropData(nsIDOMDragEvent* aEvent);
static PRBool IsValidDropData(nsIDOMDragEvent* aEvent);
};
virtual PRBool IsFrameOfType(PRUint32 aFlags) const