mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Fix for bug 377037 - remove acc doc from arguments of nsIAccessibleEvent object, r=aaronlev
This commit is contained in:
parent
c3d12295aa
commit
6bb9ecf421
@ -41,27 +41,33 @@
|
||||
#include "nsIAccessNode.h"
|
||||
#include "nsIServiceManager.h"
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsAccessibleEventData, nsIAccessibleEvent)
|
||||
NS_IMPL_ISUPPORTS1(nsAccEvent, nsIAccessibleEvent)
|
||||
|
||||
nsAccessibleEventData::nsAccessibleEventData(PRUint32 aEventType, nsIAccessible *aAccessible,
|
||||
nsIAccessibleDocument *aDocAccessible,
|
||||
void *aEventData):
|
||||
mEventType(aEventType), mAccessible(aAccessible), mDocAccessible(aDocAccessible),
|
||||
mEventData(aEventData)
|
||||
nsAccEvent::nsAccEvent(PRUint32 aEventType, nsIAccessible *aAccessible,
|
||||
void *aEventData):
|
||||
mEventType(aEventType), mAccessible(aAccessible), mEventData(aEventData)
|
||||
{
|
||||
}
|
||||
|
||||
nsAccessibleEventData::nsAccessibleEventData(PRUint32 aEventType, nsIDOMNode *aDOMNode,
|
||||
nsIAccessibleDocument *aDocAccessible,
|
||||
void *aEventData):
|
||||
mEventType(aEventType), mDOMNode(aDOMNode), mDocAccessible(aDocAccessible),
|
||||
mEventData(aEventData)
|
||||
nsAccEvent::nsAccEvent(PRUint32 aEventType, nsIDOMNode *aDOMNode,
|
||||
void *aEventData):
|
||||
mEventType(aEventType), mDOMNode(aDOMNode), mEventData(aEventData)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessibleEventData::GetAccessible(nsIAccessible **aAccessible)
|
||||
NS_IMETHODIMP
|
||||
nsAccEvent::GetEventType(PRUint32 *aEventType)
|
||||
{
|
||||
*aEventType = mEventType;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccEvent::GetAccessible(nsIAccessible **aAccessible)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAccessible);
|
||||
*aAccessible = nsnull;
|
||||
|
||||
if (!mAccessible) {
|
||||
NS_ENSURE_TRUE(mDOMNode, NS_ERROR_FAILURE);
|
||||
nsCOMPtr<nsIAccessibilityService> accService =
|
||||
@ -72,17 +78,39 @@ NS_IMETHODIMP nsAccessibleEventData::GetAccessible(nsIAccessible **aAccessible)
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
NS_ADDREF(*aAccessible = mAccessible);
|
||||
NS_IF_ADDREF(*aAccessible = mAccessible);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAccessibleEventData::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
NS_IMETHODIMP
|
||||
nsAccEvent::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDOMNode);
|
||||
*aDOMNode = nsnull;
|
||||
|
||||
if (!mDOMNode) {
|
||||
nsCOMPtr<nsIAccessNode> accessNode(do_QueryInterface(mAccessible));
|
||||
NS_ENSURE_TRUE(accessNode, NS_ERROR_FAILURE);
|
||||
accessNode->GetDOMNode(getter_AddRefs(mDOMNode));
|
||||
}
|
||||
NS_ADDREF(*aDOMNode = mDOMNode);
|
||||
|
||||
NS_IF_ADDREF(*aDOMNode = mDOMNode);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccEvent::GetAccessibleDocument(nsIAccessibleDocument **aDocAccessible)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDocAccessible);
|
||||
*aDocAccessible = nsnull;
|
||||
|
||||
if (!mDocAccessible) {
|
||||
nsCOMPtr<nsIAccessNode> accessNode(do_QueryInterface(mAccessible));
|
||||
NS_ENSURE_TRUE(accessNode, NS_ERROR_FAILURE);
|
||||
accessNode->GetAccessibleDocument(getter_AddRefs(mDocAccessible));
|
||||
}
|
||||
|
||||
NS_IF_ADDREF(*aDocAccessible = mDocAccessible);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -46,34 +46,24 @@
|
||||
#include "nsIAccessibleDocument.h"
|
||||
#include "nsIDOMNode.h"
|
||||
|
||||
class nsAccessibleEventData: public nsIAccessibleEvent
|
||||
class nsAccEvent: public nsIAccessibleEvent
|
||||
{
|
||||
public:
|
||||
// Initialize with an nsIAccessible
|
||||
nsAccessibleEventData(PRUint32 aEventType, nsIAccessible *aAccessible,
|
||||
nsIAccessibleDocument *aDocAccessible,
|
||||
void *aEventData);
|
||||
// Initialize with an nsIDOMNode
|
||||
nsAccessibleEventData(PRUint32 aEventType, nsIDOMNode *aDOMNode,
|
||||
nsIAccessibleDocument *aDocAccessible,
|
||||
void *aEventData);
|
||||
virtual ~nsAccessibleEventData() {};
|
||||
public:
|
||||
// Initialize with an nsIAccessible
|
||||
nsAccEvent(PRUint32 aEventType, nsIAccessible *aAccessible, void *aEventData);
|
||||
// Initialize with an nsIDOMNode
|
||||
nsAccEvent(PRUint32 aEventType, nsIDOMNode *aDOMNode, void *aEventData);
|
||||
virtual ~nsAccEvent() {};
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIACCESSIBLEEVENT
|
||||
|
||||
//nsIAccessibleEvent
|
||||
NS_IMETHOD GetEventType(PRUint32 *aEventType) {*aEventType = mEventType; return NS_OK;}
|
||||
NS_IMETHOD GetAccessible(nsIAccessible **aAccessible);
|
||||
NS_IMETHOD GetAccessibleDocument(nsIAccessibleDocument **aDocAccessible)
|
||||
{NS_ADDREF(*aDocAccessible = mDocAccessible); return NS_OK;}
|
||||
NS_IMETHOD GetDOMNode(nsIDOMNode **aDOMNode);
|
||||
|
||||
private:
|
||||
PRUint32 mEventType;
|
||||
nsCOMPtr<nsIAccessible> mAccessible;
|
||||
nsCOMPtr<nsIDOMNode> mDOMNode;
|
||||
nsCOMPtr<nsIAccessibleDocument> mDocAccessible;
|
||||
void *mEventData;
|
||||
private:
|
||||
PRUint32 mEventType;
|
||||
nsCOMPtr<nsIAccessible> mAccessible;
|
||||
nsCOMPtr<nsIDOMNode> mDOMNode;
|
||||
nsCOMPtr<nsIAccessibleDocument> mDocAccessible;
|
||||
void *mEventData;
|
||||
};
|
||||
|
||||
// XXX todo: We might want to use XPCOM interfaces instead of structs
|
||||
|
@ -1111,8 +1111,7 @@ nsresult nsDocAccessible::FireDelayedToolkitEvent(PRUint32 aEvent,
|
||||
// XXX Add related data for ATK support.
|
||||
// For example, state change event should provide what state has changed,
|
||||
// as well as the old and new value.
|
||||
nsCOMPtr<nsIAccessibleEvent> event =
|
||||
new nsAccessibleEventData(aEvent, aDOMNode, this, aData);
|
||||
nsCOMPtr<nsIAccessibleEvent> event = new nsAccEvent(aEvent, aDOMNode, aData);
|
||||
NS_ENSURE_TRUE(event, NS_ERROR_OUT_OF_MEMORY);
|
||||
mEventsToFire.AppendObject(event);
|
||||
if (!isTimerStarted) {
|
||||
@ -1431,7 +1430,8 @@ NS_IMETHODIMP nsDocAccessible::FireToolkitEvent(PRUint32 aEvent, nsIAccessible*
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIAccessibleEvent> accEvent = new nsAccessibleEventData(aEvent, aAccessible, this, aData);
|
||||
nsCOMPtr<nsIAccessibleEvent> accEvent = new nsAccEvent(aEvent, aAccessible,
|
||||
aData);
|
||||
NS_ENSURE_TRUE(accEvent, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
return obsService->NotifyObservers(accEvent, NS_ACCESSIBLE_EVENT_TOPIC, nsnull);
|
||||
|
Loading…
Reference in New Issue
Block a user