mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-08 16:03:21 +00:00
Bug 1455676 part 2. Remove nsIDOMNode usage from accessible/. r=surkov
This commit is contained in:
parent
89366855ba
commit
4ef13b9076
@ -199,7 +199,6 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
DocAccessible* doc = aEvent->Document();
|
||||
Accessible* acc = aEvent->GetAccessible();
|
||||
nsINode* node = acc->GetNode();
|
||||
nsIDOMNode* domNode = node ? node->AsDOMNode() : nullptr;
|
||||
bool fromUser = aEvent->IsFromUserInput();
|
||||
uint32_t type = aEvent->GetEventType();
|
||||
uint32_t eventGroup = aEvent->GetEventGroups();
|
||||
@ -210,7 +209,7 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
bool extra = false;
|
||||
uint32_t state = nsAccUtils::To32States(sc->GetState(), &extra);
|
||||
xpEvent = new xpcAccStateChangeEvent(type, ToXPC(acc), ToXPCDocument(doc),
|
||||
domNode, fromUser,
|
||||
node, fromUser,
|
||||
state, extra, sc->IsStateEnabled());
|
||||
return xpEvent.forget();
|
||||
}
|
||||
@ -220,7 +219,7 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
nsString text;
|
||||
tc->GetModifiedText(text);
|
||||
xpEvent = new xpcAccTextChangeEvent(type, ToXPC(acc), ToXPCDocument(doc),
|
||||
domNode, fromUser,
|
||||
node, fromUser,
|
||||
tc->GetStartOffset(), tc->GetLength(),
|
||||
tc->IsTextInserted(), text);
|
||||
return xpEvent.forget();
|
||||
@ -229,7 +228,7 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
if (eventGroup & (1 << AccEvent::eHideEvent)) {
|
||||
AccHideEvent* hideEvent = downcast_accEvent(aEvent);
|
||||
xpEvent = new xpcAccHideEvent(type, ToXPC(acc), ToXPCDocument(doc),
|
||||
domNode, fromUser,
|
||||
node, fromUser,
|
||||
ToXPC(hideEvent->TargetParent()),
|
||||
ToXPC(hideEvent->TargetNextSibling()),
|
||||
ToXPC(hideEvent->TargetPrevSibling()));
|
||||
@ -239,7 +238,7 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
if (eventGroup & (1 << AccEvent::eCaretMoveEvent)) {
|
||||
AccCaretMoveEvent* cm = downcast_accEvent(aEvent);
|
||||
xpEvent = new xpcAccCaretMoveEvent(type, ToXPC(acc), ToXPCDocument(doc),
|
||||
domNode, fromUser,
|
||||
node, fromUser,
|
||||
cm->GetCaretOffset());
|
||||
return xpEvent.forget();
|
||||
}
|
||||
@ -248,7 +247,7 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
AccVCChangeEvent* vcc = downcast_accEvent(aEvent);
|
||||
xpEvent = new xpcAccVirtualCursorChangeEvent(type,
|
||||
ToXPC(acc), ToXPCDocument(doc),
|
||||
domNode, fromUser,
|
||||
node, fromUser,
|
||||
ToXPC(vcc->OldAccessible()),
|
||||
vcc->OldStartOffset(),
|
||||
vcc->OldEndOffset(),
|
||||
@ -262,12 +261,12 @@ a11y::MakeXPCEvent(AccEvent* aEvent)
|
||||
oac->GetAttribute()->ToString(attribute);
|
||||
xpEvent = new xpcAccObjectAttributeChangedEvent(type,
|
||||
ToXPC(acc),
|
||||
ToXPCDocument(doc), domNode,
|
||||
ToXPCDocument(doc), node,
|
||||
fromUser,
|
||||
attribute);
|
||||
return xpEvent.forget();
|
||||
}
|
||||
|
||||
xpEvent = new xpcAccEvent(type, ToXPC(acc), ToXPCDocument(doc), domNode, fromUser);
|
||||
xpEvent = new xpcAccEvent(type, ToXPC(acc), ToXPCDocument(doc), node, fromUser);
|
||||
return xpEvent.forget();
|
||||
}
|
||||
|
@ -1661,17 +1661,16 @@ nsAccessibilityService::RemoveNativeRootAccessible(Accessible* aAccessible)
|
||||
}
|
||||
|
||||
bool
|
||||
nsAccessibilityService::HasAccessible(nsIDOMNode* aDOMNode)
|
||||
nsAccessibilityService::HasAccessible(nsINode* aDOMNode)
|
||||
{
|
||||
nsCOMPtr<nsINode> node(do_QueryInterface(aDOMNode));
|
||||
if (!node)
|
||||
if (!aDOMNode)
|
||||
return false;
|
||||
|
||||
DocAccessible* document = GetDocAccessible(node->OwnerDoc());
|
||||
DocAccessible* document = GetDocAccessible(aDOMNode->OwnerDoc());
|
||||
if (!document)
|
||||
return false;
|
||||
|
||||
return document->HasAccessible(node);
|
||||
return document->HasAccessible(aDOMNode);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -121,7 +121,7 @@ public:
|
||||
Accessible* AddNativeRootAccessible(void* aAtkAccessible);
|
||||
void RemoveNativeRootAccessible(Accessible* aRootAccessible);
|
||||
|
||||
bool HasAccessible(nsIDOMNode* aDOMNode);
|
||||
bool HasAccessible(nsINode* aDOMNode);
|
||||
|
||||
/**
|
||||
* Get a string equivalent for an accessible role value.
|
||||
|
@ -5,12 +5,13 @@
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMNode;
|
||||
interface nsIAccessible;
|
||||
interface nsIWeakReference;
|
||||
interface nsIPresShell;
|
||||
interface nsIAccessiblePivot;
|
||||
|
||||
webidl Node;
|
||||
|
||||
/**
|
||||
* An interface for in-process accessibility clients wishing to get an
|
||||
* nsIAccessible for a given DOM node. More documentation at:
|
||||
@ -31,7 +32,7 @@ interface nsIAccessibilityService : nsISupports
|
||||
* @param aNode The DOM node to get an accessible for.
|
||||
* @return The nsIAccessible for the given DOM node.
|
||||
*/
|
||||
nsIAccessible getAccessibleFor(in nsIDOMNode aNode);
|
||||
nsIAccessible getAccessibleFor(in Node aNode);
|
||||
|
||||
/**
|
||||
* Returns accessible role as a string.
|
||||
@ -73,7 +74,7 @@ interface nsIAccessibilityService : nsISupports
|
||||
*
|
||||
* @return cached accessible for the given DOM node if any
|
||||
*/
|
||||
nsIAccessible getAccessibleFromCache(in nsIDOMNode aNode);
|
||||
nsIAccessible getAccessibleFromCache(in Node aNode);
|
||||
|
||||
/**
|
||||
* Create a new pivot for tracking a position and traversing a subtree.
|
||||
|
@ -7,10 +7,11 @@
|
||||
#include "nsIArray.idl"
|
||||
|
||||
interface nsIPersistentProperties;
|
||||
interface nsIDOMNode;
|
||||
interface nsIAccessibleDocument;
|
||||
interface nsIAccessibleRelation;
|
||||
|
||||
webidl Node;
|
||||
|
||||
%{C++
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
@ -76,7 +77,7 @@ interface nsIAccessible : nsISupports
|
||||
/**
|
||||
* The DOM node this nsIAccessible is associated with.
|
||||
*/
|
||||
readonly attribute nsIDOMNode DOMNode;
|
||||
readonly attribute Node DOMNode;
|
||||
|
||||
/**
|
||||
* For remote accessibles the id of the related DOM node.
|
||||
|
@ -7,7 +7,8 @@
|
||||
|
||||
interface nsIAccessible;
|
||||
interface nsIAccessibleDocument;
|
||||
interface nsIDOMNode;
|
||||
|
||||
webidl Node;
|
||||
|
||||
%{C++
|
||||
#define NS_ACCESSIBLE_EVENT_TOPIC "accessible-event"
|
||||
@ -442,10 +443,10 @@ interface nsIAccessibleEvent : nsISupports
|
||||
readonly attribute nsIAccessibleDocument accessibleDocument;
|
||||
|
||||
/**
|
||||
* The nsIDOMNode associated with the event
|
||||
* The Node associated with the event
|
||||
* May return null if accessible for event has been shut down
|
||||
*/
|
||||
readonly attribute nsIDOMNode DOMNode;
|
||||
readonly attribute Node DOMNode;
|
||||
|
||||
/**
|
||||
* Returns true if the event was caused by explicit user input,
|
||||
|
@ -94,7 +94,7 @@ DocAccessibleParent::RecvShowEvent(const ShowEventData& aData,
|
||||
uint32_t type = nsIAccessibleEvent::EVENT_SHOW;
|
||||
xpcAccessibleGeneric* xpcAcc = GetXPCAccessible(target);
|
||||
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
|
||||
nsIDOMNode* node = nullptr;
|
||||
nsINode* node = nullptr;
|
||||
RefPtr<xpcAccEvent> event = new xpcAccEvent(type, xpcAcc, doc, node,
|
||||
aFromUser);
|
||||
nsCoreUtils::DispatchAccEvent(Move(event));
|
||||
@ -185,7 +185,7 @@ DocAccessibleParent::RecvHideEvent(const uint64_t& aRootID,
|
||||
ProxyAccessible* prev = root->PrevSibling();
|
||||
xpcAccessibleGeneric* xpcPrev = prev ? GetXPCAccessible(prev) : nullptr;
|
||||
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
|
||||
nsIDOMNode* node = nullptr;
|
||||
nsINode* node = nullptr;
|
||||
event = new xpcAccHideEvent(type, xpcAcc, doc, node, aFromUser, xpcParent,
|
||||
xpcNext, xpcPrev);
|
||||
}
|
||||
@ -223,7 +223,7 @@ DocAccessibleParent::RecvEvent(const uint64_t& aID, const uint32_t& aEventType)
|
||||
|
||||
xpcAccessibleGeneric* xpcAcc = GetXPCAccessible(proxy);
|
||||
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
|
||||
nsIDOMNode* node = nullptr;
|
||||
nsINode* node = nullptr;
|
||||
bool fromUser = true; // XXX fix me
|
||||
RefPtr<xpcAccEvent> event = new xpcAccEvent(aEventType, xpcAcc, doc, node,
|
||||
fromUser);
|
||||
@ -259,7 +259,7 @@ DocAccessibleParent::RecvStateChangeEvent(const uint64_t& aID,
|
||||
bool extra;
|
||||
uint32_t state = nsAccUtils::To32States(aState, &extra);
|
||||
bool fromUser = true; // XXX fix this
|
||||
nsIDOMNode* node = nullptr; // XXX can we do better?
|
||||
nsINode* node = nullptr; // XXX can we do better?
|
||||
RefPtr<xpcAccStateChangeEvent> event =
|
||||
new xpcAccStateChangeEvent(type, xpcAcc, doc, node, fromUser, state, extra,
|
||||
aEnabled);
|
||||
@ -297,7 +297,7 @@ DocAccessibleParent::RecvCaretMoveEvent(const uint64_t& aID,
|
||||
|
||||
xpcAccessibleGeneric* xpcAcc = GetXPCAccessible(proxy);
|
||||
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
|
||||
nsIDOMNode* node = nullptr;
|
||||
nsINode* node = nullptr;
|
||||
bool fromUser = true; // XXX fix me
|
||||
uint32_t type = nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED;
|
||||
RefPtr<xpcAccCaretMoveEvent> event =
|
||||
@ -335,7 +335,7 @@ DocAccessibleParent::RecvTextChangeEvent(const uint64_t& aID,
|
||||
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
|
||||
uint32_t type = aIsInsert ? nsIAccessibleEvent::EVENT_TEXT_INSERTED :
|
||||
nsIAccessibleEvent::EVENT_TEXT_REMOVED;
|
||||
nsIDOMNode* node = nullptr;
|
||||
nsINode* node = nullptr;
|
||||
RefPtr<xpcAccTextChangeEvent> event =
|
||||
new xpcAccTextChangeEvent(type, xpcAcc, doc, node, aFromUser, aStart, aLen,
|
||||
aIsInsert, aStr);
|
||||
@ -745,7 +745,7 @@ DocAccessibleParent::RecvFocusEvent(const uint64_t& aID,
|
||||
|
||||
xpcAccessibleGeneric* xpcAcc = GetXPCAccessible(proxy);
|
||||
xpcAccessibleDocument* doc = GetAccService()->GetXPCDocument(this);
|
||||
nsIDOMNode* node = nullptr;
|
||||
nsINode* node = nullptr;
|
||||
bool fromUser = true; // XXX fix me
|
||||
RefPtr<xpcAccEvent> event = new xpcAccEvent(nsIAccessibleEvent::EVENT_FOCUS,
|
||||
xpcAcc, doc, node, fromUser);
|
||||
|
@ -5,8 +5,6 @@ module.exports = {
|
||||
"plugin:mozilla/mochitest-test"
|
||||
],
|
||||
"rules": {
|
||||
"mozilla/reject-importGlobalProperties": "error",
|
||||
|
||||
// XXX These are rules that are enabled in the recommended configuration, but
|
||||
// disabled here due to failures when initially implemented. They should be
|
||||
// removed (and hence enabled) at some stage.
|
||||
|
@ -44,11 +44,28 @@ const nsIAccessibleValue = Ci.nsIAccessibleValue;
|
||||
|
||||
const nsIObserverService = Ci.nsIObserverService;
|
||||
|
||||
const nsIDOMNode = Ci.nsIDOMNode;
|
||||
const nsIDOMWindow = Ci.nsIDOMWindow;
|
||||
|
||||
const nsIPropertyElement = Ci.nsIPropertyElement;
|
||||
|
||||
// Testing "'Node' in this" doesn't do the right thing because there are cases
|
||||
// when our "this" is not the global even though we're at toplevel. In those
|
||||
// cases, the import could fail because our global is a Window and we in fact
|
||||
// have a Node all along.
|
||||
//
|
||||
// We could get the global via the (function() { return this; })() trick, but
|
||||
// that might break any time if people switch us to strict mode. So let's just
|
||||
// test the thing we care about directly: does bareword Node exist?
|
||||
let needToImportNode = false;
|
||||
try {
|
||||
Node;
|
||||
} catch (e) {
|
||||
needToImportNode = true;
|
||||
}
|
||||
if (needToImportNode) {
|
||||
Cu.importGlobalProperties(["Node"]);
|
||||
}
|
||||
|
||||
// //////////////////////////////////////////////////////////////////////////////
|
||||
// OS detect
|
||||
|
||||
@ -208,7 +225,7 @@ function getNode(aAccOrNodeOrID, aDocument) {
|
||||
if (!aAccOrNodeOrID)
|
||||
return null;
|
||||
|
||||
if (aAccOrNodeOrID instanceof nsIDOMNode)
|
||||
if (Node.isInstance(aAccOrNodeOrID))
|
||||
return aAccOrNodeOrID;
|
||||
|
||||
if (aAccOrNodeOrID instanceof nsIAccessible)
|
||||
@ -256,7 +273,7 @@ function getAccessible(aAccOrElmOrID, aInterfaces, aElmObj, aDoNotFailIf) {
|
||||
if (aAccOrElmOrID instanceof nsIAccessible) {
|
||||
try { elm = aAccOrElmOrID.DOMNode; } catch (e) { }
|
||||
|
||||
} else if (aAccOrElmOrID instanceof nsIDOMNode) {
|
||||
} else if (Node.isInstance(aAccOrElmOrID)) {
|
||||
elm = aAccOrElmOrID;
|
||||
|
||||
} else {
|
||||
@ -791,7 +808,7 @@ function prettyName(aIdentifier) {
|
||||
return msg;
|
||||
}
|
||||
|
||||
if (aIdentifier instanceof nsIDOMNode)
|
||||
if (Node.isInstance(aIdentifier))
|
||||
return "[ " + getNodePrettyName(aIdentifier) + " ]";
|
||||
|
||||
if (aIdentifier && typeof aIdentifier === "object" ) {
|
||||
@ -873,11 +890,11 @@ function setTestPluginEnabledState(aNewEnabledState, aPluginName) {
|
||||
function getNodePrettyName(aNode) {
|
||||
try {
|
||||
var tag = "";
|
||||
if (aNode.nodeType == nsIDOMNode.DOCUMENT_NODE) {
|
||||
if (aNode.nodeType == Node.DOCUMENT_NODE) {
|
||||
tag = "document";
|
||||
} else {
|
||||
tag = aNode.localName;
|
||||
if (aNode.nodeType == nsIDOMNode.ELEMENT_NODE && aNode.hasAttribute("id"))
|
||||
if (aNode.nodeType == Node.ELEMENT_NODE && aNode.hasAttribute("id"))
|
||||
tag += "@id=\"" + aNode.getAttribute("id") + "\"";
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ function waitForEvent(aEventType, aTargetOrFunc, aFunc, aContext, aArg1, aArg2)
|
||||
target != aEvent.accessible)
|
||||
return;
|
||||
|
||||
if (target instanceof nsIDOMNode &&
|
||||
if (Node.isInstance(target) &&
|
||||
target != aEvent.DOMNode)
|
||||
return;
|
||||
}
|
||||
|
@ -33,7 +33,7 @@
|
||||
var gFocusHandler = {
|
||||
handleEvent: function gFocusHandler_handleEvent(aEvent) {
|
||||
var elm = aEvent.target;
|
||||
if (elm.nodeType != nsIDOMNode.ELEMENT_NODE)
|
||||
if (elm.nodeType != Node.ELEMENT_NODE)
|
||||
return;
|
||||
|
||||
gTooltipElm.style.display = "block";
|
||||
@ -47,7 +47,7 @@
|
||||
gTooltipElm.style.display = "none";
|
||||
|
||||
var elm = aEvent.target;
|
||||
if (elm.nodeType == nsIDOMNode.ELEMENT_NODE)
|
||||
if (elm.nodeType == Node.ELEMENT_NODE)
|
||||
elm.removeAttribute("aria-describedby");
|
||||
}
|
||||
};
|
||||
|
@ -108,7 +108,7 @@ xpcAccessibilityService::GetApplicationAccessible(nsIAccessible** aAccessibleApp
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
xpcAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode,
|
||||
xpcAccessibilityService::GetAccessibleFor(nsINode *aNode,
|
||||
nsIAccessible **aAccessible)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAccessible);
|
||||
@ -117,19 +117,14 @@ xpcAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsINode> node(do_QueryInterface(aNode));
|
||||
if (!node) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
nsAccessibilityService* accService = GetAccService();
|
||||
if (!accService) {
|
||||
return NS_ERROR_SERVICE_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
DocAccessible* document = accService->GetDocAccessible(node->OwnerDoc());
|
||||
DocAccessible* document = accService->GetDocAccessible(aNode->OwnerDoc());
|
||||
if (document) {
|
||||
NS_IF_ADDREF(*aAccessible = ToXPC(document->GetAccessible(node)));
|
||||
NS_IF_ADDREF(*aAccessible = ToXPC(document->GetAccessible(aNode)));
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
@ -187,7 +182,7 @@ xpcAccessibilityService::GetStringRelationType(uint32_t aRelationType,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
xpcAccessibilityService::GetAccessibleFromCache(nsIDOMNode* aNode,
|
||||
xpcAccessibilityService::GetAccessibleFromCache(nsINode* aNode,
|
||||
nsIAccessible** aAccessible)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAccessible);
|
||||
@ -196,11 +191,6 @@ xpcAccessibilityService::GetAccessibleFromCache(nsIDOMNode* aNode,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsINode> node(do_QueryInterface(aNode));
|
||||
if (!node) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
nsAccessibilityService* accService = GetAccService();
|
||||
if (!accService) {
|
||||
return NS_ERROR_SERVICE_NOT_AVAILABLE;
|
||||
@ -212,9 +202,9 @@ xpcAccessibilityService::GetAccessibleFromCache(nsIDOMNode* aNode,
|
||||
// document accessibles are not stored in the document cache, however an
|
||||
// "unofficially" shutdown document (i.e. not from DocManager) can still
|
||||
// exist in the document cache.
|
||||
Accessible* accessible = accService->FindAccessibleInCache(node);
|
||||
Accessible* accessible = accService->FindAccessibleInCache(aNode);
|
||||
if (!accessible) {
|
||||
nsCOMPtr<nsIDocument> document(do_QueryInterface(node));
|
||||
nsCOMPtr<nsIDocument> document(do_QueryInterface(aNode));
|
||||
if (document) {
|
||||
accessible = mozilla::a11y::GetExistingDocAccessible(document);
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ xpcAccessible::GetIndexInParent(int32_t* aIndexInParent)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
xpcAccessible::GetDOMNode(nsIDOMNode** aDOMNode)
|
||||
xpcAccessible::GetDOMNode(nsINode** aDOMNode)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDOMNode);
|
||||
*aDOMNode = nullptr;
|
||||
@ -185,9 +185,8 @@ xpcAccessible::GetDOMNode(nsIDOMNode** aDOMNode)
|
||||
if (!Intl())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsINode* node = Intl()->GetNode();
|
||||
if (node)
|
||||
CallQueryInterface(node, aDOMNode);
|
||||
nsCOMPtr<nsINode> node = Intl()->GetNode();
|
||||
node.forget(aDOMNode);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ public:
|
||||
NS_IMETHOD GetChildren(nsIArray** aChildren) final;
|
||||
NS_IMETHOD GetIndexInParent(int32_t* aIndexInParent) final;
|
||||
|
||||
NS_IMETHOD GetDOMNode(nsIDOMNode** aDOMNode) final;
|
||||
NS_IMETHOD GetDOMNode(nsINode** aDOMNode) final;
|
||||
NS_IMETHOD GetId(nsAString& aID) final;
|
||||
NS_IMETHOD GetDocument(nsIAccessibleDocument** aDocument) final;
|
||||
NS_IMETHOD GetRootDocument(nsIAccessibleDocument** aRootDocument)
|
||||
|
@ -501,15 +501,11 @@ XULListboxAccessible::ContainerWidget() const
|
||||
nsCOMPtr<nsIDOMXULMenuListElement> menuListElm =
|
||||
do_QueryInterface(mContent->GetParent());
|
||||
if (menuListElm) {
|
||||
nsCOMPtr<nsIDOMNode> inputElm;
|
||||
RefPtr<mozilla::dom::Element> inputElm;
|
||||
menuListElm->GetInputField(getter_AddRefs(inputElm));
|
||||
if (inputElm) {
|
||||
nsCOMPtr<nsINode> inputNode = do_QueryInterface(inputElm);
|
||||
if (inputNode) {
|
||||
Accessible* input =
|
||||
mDoc->GetAccessible(inputNode);
|
||||
Accessible* input = mDoc->GetAccessible(inputElm);
|
||||
return input ? input->ContainerWidget() : nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -114,14 +114,12 @@ XULTabAccessible::RelationByType(RelationType aType) const
|
||||
if (!tabsElm)
|
||||
return rel;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> domNode(do_QueryInterface(GetNode()));
|
||||
nsCOMPtr<nsIDOMNode> tabpanelNode;
|
||||
tabsElm->GetRelatedElement(domNode, getter_AddRefs(tabpanelNode));
|
||||
if (!tabpanelNode)
|
||||
RefPtr<mozilla::dom::Element> tabpanelElement;
|
||||
tabsElm->GetRelatedElement(GetNode(), getter_AddRefs(tabpanelElement));
|
||||
if (!tabpanelElement)
|
||||
return rel;
|
||||
|
||||
nsCOMPtr<nsIContent> tabpanelContent(do_QueryInterface(tabpanelNode));
|
||||
rel.AppendTarget(mDoc, tabpanelContent);
|
||||
rel.AppendTarget(mDoc, tabpanelElement);
|
||||
return rel;
|
||||
}
|
||||
|
||||
@ -201,13 +199,11 @@ XULTabpanelAccessible::RelationByType(RelationType aType) const
|
||||
if (!tabpanelsElm)
|
||||
return rel;
|
||||
|
||||
nsCOMPtr<nsIDOMNode> domNode(do_QueryInterface(GetNode()));
|
||||
nsCOMPtr<nsIDOMNode> tabNode;
|
||||
tabpanelsElm->GetRelatedElement(domNode, getter_AddRefs(tabNode));
|
||||
if (!tabNode)
|
||||
RefPtr<mozilla::dom::Element> tabElement;
|
||||
tabpanelsElm->GetRelatedElement(GetNode(), getter_AddRefs(tabElement));
|
||||
if (!tabElement)
|
||||
return rel;
|
||||
|
||||
nsCOMPtr<nsIContent> tabContent(do_QueryInterface(tabNode));
|
||||
rel.AppendTarget(mDoc, tabContent);
|
||||
rel.AppendTarget(mDoc, tabElement);
|
||||
return rel;
|
||||
}
|
||||
|
@ -497,15 +497,11 @@ XULTreeAccessible::ContainerWidget() const
|
||||
nsCOMPtr<nsIDOMXULMenuListElement> menuListElm =
|
||||
do_QueryInterface(mContent->GetParent());
|
||||
if (menuListElm) {
|
||||
nsCOMPtr<nsIDOMNode> inputElm;
|
||||
RefPtr<mozilla::dom::Element> inputElm;
|
||||
menuListElm->GetInputField(getter_AddRefs(inputElm));
|
||||
if (inputElm) {
|
||||
nsCOMPtr<nsINode> inputNode = do_QueryInterface(inputElm);
|
||||
if (inputNode) {
|
||||
Accessible* input =
|
||||
mDoc->GetAccessible(inputNode);
|
||||
return input ? input->ContainerWidget() : nullptr;
|
||||
}
|
||||
Accessible* input = mDoc->GetAccessible(inputElm);
|
||||
return input ? input->ContainerWidget() : nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -368,8 +368,6 @@ nsFocusManager::GetRedirectedFocus(nsIContent* aContent)
|
||||
|
||||
#ifdef MOZ_XUL
|
||||
if (aContent->IsXULElement()) {
|
||||
nsCOMPtr<nsIDOMNode> inputField;
|
||||
|
||||
if (aContent->IsXULElement(nsGkAtoms::textbox)) {
|
||||
return aContent->OwnerDoc()->
|
||||
GetAnonymousElementByAttribute(aContent, nsGkAtoms::anonid, NS_LITERAL_STRING("input"));
|
||||
@ -377,7 +375,9 @@ nsFocusManager::GetRedirectedFocus(nsIContent* aContent)
|
||||
else {
|
||||
nsCOMPtr<nsIDOMXULMenuListElement> menulist = do_QueryInterface(aContent);
|
||||
if (menulist) {
|
||||
RefPtr<Element> inputField;
|
||||
menulist->GetInputField(getter_AddRefs(inputField));
|
||||
return inputField;
|
||||
}
|
||||
else if (aContent->IsXULElement(nsGkAtoms::scale)) {
|
||||
nsCOMPtr<nsIDocument> doc = aContent->GetComposedDoc();
|
||||
@ -392,11 +392,6 @@ nsFocusManager::GetRedirectedFocus(nsIContent* aContent)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (inputField) {
|
||||
nsCOMPtr<Element> retval = do_QueryInterface(inputField);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -4,7 +4,8 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "nsIDOMXULSelectCntrlEl.idl"
|
||||
interface nsIDOMNode;
|
||||
|
||||
webidl Element;
|
||||
|
||||
[scriptable, uuid(36c16a17-c0e9-4b35-951b-81a147314ef1)]
|
||||
interface nsIDOMXULMenuListElement : nsIDOMXULSelectControlElement {
|
||||
@ -18,6 +19,6 @@ interface nsIDOMXULMenuListElement : nsIDOMXULSelectControlElement {
|
||||
attribute DOMString image;
|
||||
|
||||
// For editable menu lists only.
|
||||
readonly attribute nsIDOMNode inputField;
|
||||
readonly attribute Element inputField;
|
||||
};
|
||||
|
||||
|
@ -5,6 +5,9 @@
|
||||
|
||||
#include "domstubs.idl"
|
||||
|
||||
webidl Element;
|
||||
webidl Node;
|
||||
|
||||
[scriptable, uuid(9fbac05a-fb27-470d-8e5f-028b2dc54ad0)]
|
||||
interface nsIDOMXULRelatedElement : nsISupports
|
||||
{
|
||||
@ -14,5 +17,5 @@ interface nsIDOMXULRelatedElement : nsISupports
|
||||
* this interface is implemented by XUL tabs and XUL tabpanels elements
|
||||
* and used to get XUL tab element by linked tab panel and vice versa.
|
||||
*/
|
||||
nsIDOMNode getRelatedElement(in nsIDOMNode aElement);
|
||||
Element getRelatedElement(in Node aElement);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user