bug 641838 - decomtaminate accessible relations r=surkov sr=neil

This commit is contained in:
Trevor Saunders
2011-08-09 18:44:00 -07:00
parent 42b0e10174
commit 3347c04425
45 changed files with 868 additions and 1376 deletions

View File

@@ -38,12 +38,13 @@
#include "nsHTMLFormControlAccessible.h"
#include "Relation.h"
#include "States.h"
#include "nsAccessibilityAtoms.h"
#include "nsAccUtils.h"
#include "nsRelUtils.h"
#include "nsTextEquivUtils.h"
#include "nsIAccessibleRelation.h"
#include "nsIDOMDocument.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMNSHTMLElement.h"
@@ -615,24 +616,17 @@ nsHTMLGroupboxAccessible::GetNameInternal(nsAString& aName)
return NS_OK;
}
NS_IMETHODIMP
nsHTMLGroupboxAccessible::GetRelationByType(PRUint32 aRelationType,
nsIAccessibleRelation **aRelation)
Relation
nsHTMLGroupboxAccessible::RelationByType(PRUint32 aType)
{
nsresult rv = nsHyperTextAccessibleWrap::GetRelationByType(aRelationType,
aRelation);
NS_ENSURE_SUCCESS(rv, rv);
if (aRelationType == nsIAccessibleRelation::RELATION_LABELLED_BY) {
Relation rel = nsHyperTextAccessibleWrap::RelationByType(aType);
// No override for label, so use <legend> for this <fieldset>
return nsRelUtils::
AddTargetFromContent(aRelationType, aRelation, GetLegend());
}
if (aType == nsIAccessibleRelation::RELATION_LABELLED_BY)
rel.AppendTarget(GetLegend());
return NS_OK;
return rel;
}
////////////////////////////////////////////////////////////////////////////////
// nsHTMLLegendAccessible
////////////////////////////////////////////////////////////////////////////////
@@ -643,35 +637,18 @@ nsHTMLLegendAccessible::
{
}
NS_IMETHODIMP
nsHTMLLegendAccessible::GetRelationByType(PRUint32 aRelationType,
nsIAccessibleRelation **aRelation)
Relation
nsHTMLLegendAccessible::RelationByType(PRUint32 aType)
{
nsresult rv = nsHyperTextAccessibleWrap::
GetRelationByType(aRelationType, aRelation);
NS_ENSURE_SUCCESS(rv, rv);
Relation rel = nsHyperTextAccessibleWrap::RelationByType(aType);
if (aType != nsIAccessibleRelation::RELATION_LABEL_FOR)
return rel;
if (aRelationType == nsIAccessibleRelation::RELATION_LABEL_FOR) {
// Look for groupbox parent
nsAccessible* groupbox = Parent();
nsAccessible* groupbox = Parent();
if (groupbox && groupbox->Role() == nsIAccessibleRole::ROLE_GROUPING)
rel.AppendTarget(groupbox);
if (groupbox && groupbox->Role() == nsIAccessibleRole::ROLE_GROUPING) {
// XXX: if group box exposes more than one relation of the given type
// then we fail.
nsCOMPtr<nsIAccessible> testLabelAccessible =
nsRelUtils::GetRelatedAccessible(groupbox,
nsIAccessibleRelation::RELATION_LABELLED_BY);
if (testLabelAccessible == this) {
// We're the first child of the parent groupbox, see
// nsHTMLGroupboxAccessible::GetRelationByType().
return nsRelUtils::
AddTarget(aRelationType, aRelation, groupbox);
}
}
}
return NS_OK;
return rel;
}
PRUint32