Bug 1491210 - stop using nsIDOMXULLabeledControlElement, r=jamie

This commit is contained in:
Alexander Surkov 2018-09-19 09:06:31 +08:00
parent 14d863897b
commit ed5f3a33f3
3 changed files with 21 additions and 30 deletions

View File

@ -10,7 +10,6 @@
#include "Accessible-inl.h"
#include "AccIterator.h"
#include "nsCoreUtils.h"
#include "nsIDOMXULLabeledControlEl.h"
#include "mozilla/dom/Text.h"
using namespace mozilla;
@ -307,20 +306,17 @@ nsTextEquivUtils::AppendFromDOMNode(nsIContent *aContent, nsAString *aString)
if (aContent->IsXULElement()) {
nsAutoString textEquivalent;
nsCOMPtr<nsIDOMXULLabeledControlElement> labeledEl =
do_QueryInterface(aContent);
if (labeledEl) {
labeledEl->GetLabel(textEquivalent);
if (aContent->NodeInfo()->Equals(nsGkAtoms::label, kNameSpaceID_XUL)) {
aContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::value,
textEquivalent);
} else {
if (aContent->NodeInfo()->Equals(nsGkAtoms::label,
kNameSpaceID_XUL))
aContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::value,
textEquivalent);
aContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::label,
textEquivalent);
}
if (textEquivalent.IsEmpty())
aContent->AsElement()->GetAttr(kNameSpaceID_None,
nsGkAtoms::tooltiptext, textEquivalent);
if (textEquivalent.IsEmpty()) {
aContent->AsElement()->GetAttr(kNameSpaceID_None,
nsGkAtoms::tooltiptext, textEquivalent);
}
AppendString(aString, textEquivalent);

View File

@ -804,20 +804,15 @@ Accessible::XULElmName(DocAccessible* aDocument,
*/
// CASE #1 (via label attribute) -- great majority of the cases
nsCOMPtr<nsIDOMXULLabeledControlElement> labeledEl = do_QueryInterface(aElm);
if (labeledEl) {
labeledEl->GetLabel(aName);
nsCOMPtr<nsIDOMXULSelectControlItemElement> itemEl = do_QueryInterface(aElm);
if (itemEl) {
itemEl->GetLabel(aName);
} else {
nsCOMPtr<nsIDOMXULSelectControlItemElement> itemEl = do_QueryInterface(aElm);
if (itemEl) {
itemEl->GetLabel(aName);
} else {
nsCOMPtr<nsIDOMXULSelectControlElement> select = do_QueryInterface(aElm);
// Use label if this is not a select control element which
// uses label attribute to indicate which option is selected
if (!select && aElm->IsElement()) {
aElm->AsElement()->GetAttribute(NS_LITERAL_STRING("label"), aName);
}
// Use @label if this is not a select control element, which uses label
// attribute to indicate, which option is selected.
nsCOMPtr<nsIDOMXULSelectControlElement> select = do_QueryInterface(aElm);
if (!select) {
aElm->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::label, aName);
}
}

View File

@ -72,10 +72,10 @@
//////////////////////////////////////////////////////////////////////////
// Name for nsIDOMXULLabeledControlElement.
// Name from @label attribute.
// Gets the name from @label attribute.
testName("btn_nsIDOMXULLabeledControlElement", "labeled element");
testName("btn_labelattr", "labeled element");
//////////////////////////////////////////////////////////////////////////
@ -271,8 +271,8 @@
<button id="btn_labelledby_mixed_menulist"
aria-labelledby="labelledby_mixed_menulist"/>
<!-- nsIDOMXULLabeledControlElement -->
<button id="btn_nsIDOMXULLabeledControlElement"
<!-- @label -->
<button id="btn_labelattr"
label="labeled element"/>
<!-- nsIDOMXULSelectControlItemElement -->