Relation HTMLGroupboxAccessible::RelationByType(RelationType aType) const { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); // No override for label, so use <legend> for this <fieldset> if (aType == RelationType::LABELLED_BY) rel.AppendTarget(mDoc, GetLegend()); return rel; }
Relation XULGroupboxAccessible::RelationByType(RelationType aType) { Relation rel = AccessibleWrap::RelationByType(aType); if (aType != RelationType::LABELLED_BY) return rel; // The label for xul:groupbox is generated from xul:label that is // inside the anonymous content of the xul:caption. // The xul:label has an accessible object but the xul:caption does not uint32_t childCount = ChildCount(); for (uint32_t childIdx = 0; childIdx < childCount; childIdx++) { Accessible* childAcc = GetChildAt(childIdx); if (childAcc->Role() == roles::LABEL) { // Ensure that it's our label Relation reverseRel = childAcc->RelationByType(RelationType::LABEL_FOR); Accessible* testGroupbox = nullptr; while ((testGroupbox = reverseRel.Next())) if (testGroupbox == this) { // The <label> points back to this groupbox rel.AppendTarget(childAcc); } } } return rel; }
Relation nsXULGroupboxAccessible::RelationByType(PRUint32 aType) { Relation rel = nsAccessibleWrap::RelationByType(aType); if (aType != nsIAccessibleRelation::RELATION_LABELLED_BY) return rel; // The label for xul:groupbox is generated from xul:label that is // inside the anonymous content of the xul:caption. // The xul:label has an accessible object but the xul:caption does not PRInt32 childCount = GetChildCount(); for (PRInt32 childIdx = 0; childIdx < childCount; childIdx++) { nsAccessible *childAcc = GetChildAt(childIdx); if (childAcc->Role() == nsIAccessibleRole::ROLE_LABEL) { // Ensure that it's our label Relation reverseRel = childAcc->RelationByType(nsIAccessibleRelation::RELATION_LABEL_FOR); nsAccessible* testGroupbox = nsnull; while ((testGroupbox = reverseRel.Next())) if (testGroupbox == this) { // The <label> points back to this groupbox rel.AppendTarget(childAcc); } } } return rel; }
Relation nsHTMLTableAccessible::RelationByType(PRUint32 aType) { Relation rel = nsAccessibleWrap::RelationByType(aType); if (aType == nsIAccessibleRelation::RELATION_LABELLED_BY) rel.AppendTarget(Caption()); return rel; }
Relation HTMLFigureAccessible::RelationByType(uint32_t aType) { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); if (aType == nsIAccessibleRelation::RELATION_LABELLED_BY) rel.AppendTarget(mDoc, Caption()); return rel; }
Relation HTMLTableAccessible::RelationByType(RelationType aType) { Relation rel = AccessibleWrap::RelationByType(aType); if (aType == RelationType::LABELLED_BY) rel.AppendTarget(Caption()); return rel; }
Relation nsHTMLCaptionAccessible::RelationByType(PRUint32 aType) { Relation rel = nsHyperTextAccessible::RelationByType(aType); if (aType == nsIAccessibleRelation::RELATION_LABEL_FOR) rel.AppendTarget(Parent()); return rel; }
Relation HTMLFigureAccessible::RelationByType(RelationType aType) { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); if (aType == RelationType::LABELLED_BY) rel.AppendTarget(mDoc, Caption()); return rel; }
Relation HTMLLabelAccessible::RelationByType(RelationType aType) const { Relation rel = AccessibleWrap::RelationByType(aType); if (aType == RelationType::LABEL_FOR) { dom::HTMLLabelElement* label = dom::HTMLLabelElement::FromNode(mContent); rel.AppendTarget(mDoc, label->GetControl()); } return rel; }
Relation HTMLCaptionAccessible::RelationByType(RelationType aType) { Relation rel = HyperTextAccessible::RelationByType(aType); if (aType == RelationType::LABEL_FOR) rel.AppendTarget(Parent()); return rel; }
Relation HTMLGroupboxAccessible::RelationByType(uint32_t aType) { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); // No override for label, so use <legend> for this <fieldset> if (aType == nsIAccessibleRelation::RELATION_LABELLED_BY) rel.AppendTarget(mDoc, GetLegend()); return rel; }
Relation HTMLLegendAccessible::RelationByType(RelationType aType) const { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); if (aType != RelationType::LABEL_FOR) return rel; Accessible* groupbox = Parent(); if (groupbox && groupbox->Role() == roles::GROUPING) rel.AppendTarget(groupbox); return rel; }
Relation HTMLLabelAccessible::RelationByType(uint32_t aType) { Relation rel = AccessibleWrap::RelationByType(aType); if (aType == nsIAccessibleRelation::RELATION_LABEL_FOR) { nsRefPtr<dom::HTMLLabelElement> label = dom::HTMLLabelElement::FromContent(mContent); rel.AppendTarget(mDoc, label->GetControl()); } return rel; }
Relation HTMLFigcaptionAccessible::RelationByType(RelationType aType) const { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); if (aType != RelationType::LABEL_FOR) return rel; Accessible* figure = Parent(); if (figure && figure->GetContent()->NodeInfo()->Equals( nsGkAtoms::figure, mContent->GetNameSpaceID())) { rel.AppendTarget(figure); } return rel; }
Relation HTMLLegendAccessible::RelationByType(uint32_t aType) { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); if (aType != nsIAccessibleRelation::RELATION_LABEL_FOR) return rel; Accessible* groupbox = Parent(); if (groupbox && groupbox->Role() == roles::GROUPING) rel.AppendTarget(groupbox); return rel; }
Relation nsHTMLLegendAccessible::RelationByType(PRUint32 aType) { Relation rel = nsHyperTextAccessibleWrap::RelationByType(aType); if (aType != nsIAccessibleRelation::RELATION_LABEL_FOR) return rel; nsAccessible* groupbox = Parent(); if (groupbox && groupbox->Role() == nsIAccessibleRole::ROLE_GROUPING) rel.AppendTarget(groupbox); return rel; }
Relation nsXULTextAccessible::RelationByType(PRUint32 aType) { Relation rel = nsHyperTextAccessibleWrap::RelationByType(aType); if (aType == nsIAccessibleRelation::RELATION_LABEL_FOR) { // Caption is the label for groupbox nsIContent *parent = mContent->GetParent(); if (parent && parent->Tag() == nsGkAtoms::caption) { nsAccessible* parent = Parent(); if (parent && parent->Role() == roles::GROUPING) rel.AppendTarget(parent); } } return rel; }
Relation XULLabelAccessible::RelationByType(RelationType aType) { Relation rel = HyperTextAccessibleWrap::RelationByType(aType); if (aType == RelationType::LABEL_FOR) { // Caption is the label for groupbox nsIContent* parent = mContent->GetFlattenedTreeParent(); if (parent && parent->Tag() == nsGkAtoms::caption) { Accessible* parent = Parent(); if (parent && parent->Role() == roles::GROUPING) rel.AppendTarget(parent); } } return rel; }
Relation XULTabpanelAccessible::RelationByType(RelationType aType) const { Relation rel = AccessibleWrap::RelationByType(aType); if (aType != RelationType::LABELLED_BY) return rel; // Expose 'LABELLED_BY' relation on tabpanel accessible for tab accessible. if (!mContent->GetParent()) return rel; nsCOMPtr<nsIDOMXULRelatedElement> tabpanelsElm = mContent->GetParent()->AsElement()->AsXULRelated(); if (!tabpanelsElm) return rel; RefPtr<mozilla::dom::Element> tabElement; tabpanelsElm->GetRelatedElement(GetNode(), getter_AddRefs(tabElement)); if (!tabElement) return rel; rel.AppendTarget(mDoc, tabElement); return rel; }
// nsIAccessible Relation XULTabAccessible::RelationByType(uint32_t aType) { Relation rel = AccessibleWrap::RelationByType(aType); if (aType != nsIAccessibleRelation::RELATION_LABEL_FOR) return rel; // Expose 'LABEL_FOR' relation on tab accessible for tabpanel accessible. nsCOMPtr<nsIDOMXULRelatedElement> tabsElm = do_QueryInterface(mContent->GetParent()); if (!tabsElm) return rel; nsCOMPtr<nsIDOMNode> domNode(DOMNode()); nsCOMPtr<nsIDOMNode> tabpanelNode; tabsElm->GetRelatedElement(domNode, getter_AddRefs(tabpanelNode)); if (!tabpanelNode) return rel; nsCOMPtr<nsIContent> tabpanelContent(do_QueryInterface(tabpanelNode)); rel.AppendTarget(mDoc, tabpanelContent); return rel; }
Relation XULTabpanelAccessible::RelationByType(RelationType aType) { Relation rel = AccessibleWrap::RelationByType(aType); if (aType != RelationType::LABELLED_BY) return rel; // Expose 'LABELLED_BY' relation on tabpanel accessible for tab accessible. nsCOMPtr<nsIDOMXULRelatedElement> tabpanelsElm = do_QueryInterface(mContent->GetParent()); if (!tabpanelsElm) return rel; nsCOMPtr<nsIDOMNode> domNode(do_QueryInterface(GetNode())); nsCOMPtr<nsIDOMNode> tabNode; tabpanelsElm->GetRelatedElement(domNode, getter_AddRefs(tabNode)); if (!tabNode) return rel; nsCOMPtr<nsIContent> tabContent(do_QueryInterface(tabNode)); rel.AppendTarget(mDoc, tabContent); return rel; }