mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Bug 659350 part 3. Add nsITouchEventReceiver for elements. r=smaug
This commit is contained in:
parent
65b18775af
commit
621f69c2c1
@ -2149,6 +2149,17 @@ nsNodeSelectorTearoff::QuerySelectorAll(const nsAString& aSelector,
|
||||
return nsGenericElement::doQuerySelectorAll(mNode, aSelector, aReturn);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_1(nsTouchEventReceiverTearoff, mElement)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsTouchEventReceiverTearoff)
|
||||
NS_INTERFACE_MAP_ENTRY(nsITouchEventReceiver)
|
||||
NS_INTERFACE_MAP_END_AGGREGATED(mElement)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsTouchEventReceiverTearoff)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsTouchEventReceiverTearoff)
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
nsGenericElement::nsDOMSlots::nsDOMSlots()
|
||||
: nsINode::nsSlots(),
|
||||
@ -4265,6 +4276,8 @@ NS_INTERFACE_MAP_BEGIN(nsGenericElement)
|
||||
new nsNodeSelectorTearoff(this))
|
||||
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsIDOMXPathNSResolver,
|
||||
new nsNode3Tearoff(this))
|
||||
NS_INTERFACE_MAP_ENTRY_TEAROFF(nsITouchEventReceiver,
|
||||
new nsTouchEventReceiverTearoff(this))
|
||||
// nsNodeSH::PreCreate() depends on the identity pointer being the
|
||||
// same as nsINode (which nsIContent inherits), so if you change the
|
||||
// below line, make sure nsNodeSH::PreCreate() still does the right
|
||||
|
@ -64,6 +64,7 @@
|
||||
#include "nsIDOMDOMStringMap.h"
|
||||
#include "nsContentList.h"
|
||||
#include "nsDOMClassInfoID.h" // DOMCI_DATA
|
||||
#include "nsIDOMTouchEvent.h"
|
||||
|
||||
#ifdef MOZ_SMIL
|
||||
#include "nsISMILAttr.h"
|
||||
@ -199,8 +200,6 @@ private:
|
||||
nsCOMPtr<nsINode> mNode;
|
||||
};
|
||||
|
||||
#define NS_EVENT_TEAROFF_CACHE_SIZE 4
|
||||
|
||||
/**
|
||||
* A tearoff class for nsGenericElement to implement NodeSelector
|
||||
*/
|
||||
@ -226,6 +225,7 @@ private:
|
||||
|
||||
// Forward declare to allow being a friend
|
||||
class nsNSElementTearoff;
|
||||
class nsTouchEventReceiverTearoff;
|
||||
|
||||
/**
|
||||
* A generic base class for DOM elements, implementing many nsIContent,
|
||||
@ -238,6 +238,7 @@ public:
|
||||
virtual ~nsGenericElement();
|
||||
|
||||
friend class nsNSElementTearoff;
|
||||
friend class nsTouchEventReceiverTearoff;
|
||||
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
|
||||
@ -1057,6 +1058,26 @@ private:
|
||||
nsRefPtr<nsGenericElement> mContent;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tearoff class to implement nsITouchEventReceiver
|
||||
*/
|
||||
class nsTouchEventReceiverTearoff : public nsITouchEventReceiver
|
||||
{
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
|
||||
NS_DECL_NSITOUCHEVENTRECEIVER
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(nsTouchEventReceiverTearoff)
|
||||
|
||||
nsTouchEventReceiverTearoff(nsGenericElement *aElement) : mElement(aElement)
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
nsRefPtr<nsGenericElement> mElement;
|
||||
};
|
||||
|
||||
#define NS_ELEMENT_INTERFACE_TABLE_TO_MAP_SEGUE \
|
||||
rv = nsGenericElement::QueryInterface(aIID, aInstancePtr); \
|
||||
if (NS_SUCCEEDED(rv)) \
|
||||
|
@ -35,7 +35,8 @@ function HTML_TAG(aTagName, aImplClass) {
|
||||
"nsIDOMEventTarget",
|
||||
"nsIDOMNSHTMLElement",
|
||||
"nsIDOMElementCSSInlineStyle",
|
||||
"nsIDOMNodeSelector" ];
|
||||
"nsIDOMNodeSelector",
|
||||
"nsITouchEventReceiver" ];
|
||||
|
||||
// Some interfaces don't appear in classinfo because other interfaces that
|
||||
// inherit from them do.
|
||||
|
@ -2210,7 +2210,9 @@ nsDOMClassInfo::RegisterExternalClasses()
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMElementCSSInlineStyle) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSElement) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector) \
|
||||
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver, \
|
||||
nsDOMTouchEvent::PrefEnabled())
|
||||
|
||||
#define DOM_CLASSINFO_EVENT_MAP_ENTRIES \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEvent) \
|
||||
@ -2384,6 +2386,8 @@ nsDOMClassInfo::Init()
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSElement)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector)
|
||||
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver,
|
||||
nsDOMTouchEvent::PrefEnabled())
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(Attr, nsIDOMAttr)
|
||||
@ -2915,6 +2919,8 @@ nsDOMClassInfo::Init()
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSElement)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMElementCSSInlineStyle)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector)
|
||||
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver,
|
||||
nsDOMTouchEvent::PrefEnabled())
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(XULCommandDispatcher, nsIDOMXULCommandDispatcher)
|
||||
@ -3019,11 +3025,13 @@ nsDOMClassInfo::Init()
|
||||
DOM_CLASSINFO_EVENT_MAP_ENTRIES
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
#define DOM_CLASSINFO_SVG_ELEMENT_MAP_ENTRIES \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGElement) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSElement) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector)
|
||||
#define DOM_CLASSINFO_SVG_ELEMENT_MAP_ENTRIES \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGElement) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSElement) \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector) \
|
||||
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver, \
|
||||
nsDOMTouchEvent::PrefEnabled())
|
||||
|
||||
#define DOM_CLASSINFO_SVG_GRAPHIC_ELEMENT_MAP_ENTRIES \
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGLocatable) \
|
||||
@ -3958,6 +3966,8 @@ nsDOMClassInfo::Init()
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSElement)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector)
|
||||
DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver,
|
||||
nsDOMTouchEvent::PrefEnabled())
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(WebGLRenderingContext, nsIDOMWebGLRenderingContext)
|
||||
|
Loading…
Reference in New Issue
Block a user