Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(412)

Unified Diff: Source/core/accessibility/AXNodeObject.cpp

Issue 189963007: Use isHTML*Element() helpers more in the accessibility code (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/accessibility/AXMediaControls.cpp ('k') | Source/core/accessibility/AXObjectCache.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/accessibility/AXNodeObject.cpp
diff --git a/Source/core/accessibility/AXNodeObject.cpp b/Source/core/accessibility/AXNodeObject.cpp
index edd8bb8f1e19461189d2a129925fd33f77096a82..283a5a9623ff5922d834514869ea53b612c8dd94 100644
--- a/Source/core/accessibility/AXNodeObject.cpp
+++ b/Source/core/accessibility/AXNodeObject.cpp
@@ -38,6 +38,7 @@
#include "core/html/HTMLLabelElement.h"
#include "core/html/HTMLLegendElement.h"
#include "core/html/HTMLSelectElement.h"
+#include "core/html/HTMLTextAreaElement.h"
#include "core/rendering/RenderObject.h"
#include "platform/UserGestureIndicator.h"
#include "wtf/text/StringBuilder.h"
@@ -76,8 +77,8 @@ static String accessibleNameForNode(Node* node)
if (node->isTextNode())
return toText(node)->data();
- if (node->hasTagName(inputTag))
- return toHTMLInputElement(node)->value();
+ if (isHTMLInputElement(*node))
+ return toHTMLInputElement(*node).value();
if (node->isHTMLElement()) {
const AtomicString& alt = toHTMLElement(node)->getAttribute(altAttr);
@@ -186,28 +187,28 @@ AccessibilityRole AXNodeObject::determineAccessibilityRole()
return StaticTextRole;
if (node()->hasTagName(buttonTag))
return buttonRoleType();
- if (node()->hasTagName(inputTag)) {
- HTMLInputElement* input = toHTMLInputElement(node());
- if (input->isCheckbox())
+ if (isHTMLInputElement(*node())) {
+ HTMLInputElement& input = toHTMLInputElement(*node());
+ if (input.isCheckbox())
return CheckBoxRole;
- if (input->isRadioButton())
+ if (input.isRadioButton())
return RadioButtonRole;
- if (input->isTextButton())
+ if (input.isTextButton())
return buttonRoleType();
- if (input->isRangeControl())
+ if (input.isRangeControl())
return SliderRole;
- const AtomicString& type = input->getAttribute(typeAttr);
+ const AtomicString& type = input.getAttribute(typeAttr);
if (equalIgnoringCase(type, "color"))
return ColorWellRole;
return TextFieldRole;
}
- if (node()->hasTagName(selectTag)) {
- HTMLSelectElement* selectElement = toHTMLSelectElement(node());
- return selectElement->multiple() ? ListBoxRole : PopUpButtonRole;
+ if (isHTMLSelectElement(*node())) {
+ HTMLSelectElement& selectElement = toHTMLSelectElement(*node());
+ return selectElement.multiple() ? ListBoxRole : PopUpButtonRole;
}
- if (node()->hasTagName(textareaTag))
+ if (isHTMLTextAreaElement(*node()))
return TextAreaRole;
if (headingLevel())
return HeadingRole;
@@ -506,11 +507,8 @@ bool AXNodeObject::isImageButton() const
bool AXNodeObject::isInputImage() const
{
Node* node = this->node();
- if (!node)
- return false;
-
- if (roleValue() == ButtonRole && node->hasTagName(inputTag))
- return toHTMLInputElement(node)->isImageButton();
+ if (roleValue() == ButtonRole && isHTMLInputElement(node))
+ return toHTMLInputElement(*node).isImageButton();
return false;
}
@@ -538,13 +536,13 @@ bool AXNodeObject::isMultiSelectable() const
if (equalIgnoringCase(ariaMultiSelectable, "false"))
return false;
- return node() && node()->hasTagName(selectTag) && toHTMLSelectElement(node())->multiple();
+ return isHTMLSelectElement(node()) && toHTMLSelectElement(*node()).multiple();
}
bool AXNodeObject::isNativeCheckboxOrRadio() const
{
Node* node = this->node();
- if (!node || !node->hasTagName(inputTag))
+ if (!isHTMLInputElement(node))
return false;
HTMLInputElement* input = toHTMLInputElement(node);
@@ -563,8 +561,8 @@ bool AXNodeObject::isNativeImage() const
if (node->hasTagName(appletTag) || node->hasTagName(embedTag) || node->hasTagName(objectTag))
return true;
- if (node->hasTagName(inputTag))
- return toHTMLInputElement(node)->isImageButton();
+ if (isHTMLInputElement(*node))
+ return toHTMLInputElement(*node).isImageButton();
return false;
}
@@ -575,10 +573,10 @@ bool AXNodeObject::isNativeTextControl() const
if (!node)
return false;
- if (node->hasTagName(textareaTag))
+ if (isHTMLTextAreaElement(*node))
return true;
- if (node->hasTagName(inputTag)) {
+ if (isHTMLInputElement(*node)) {
HTMLInputElement* input = toHTMLInputElement(node);
return input->isText() || input->isNumberField();
}
@@ -603,7 +601,7 @@ bool AXNodeObject::isNonNativeTextControl() const
bool AXNodeObject::isPasswordField() const
{
Node* node = this->node();
- if (!node || !node->hasTagName(inputTag))
+ if (!isHTMLInputElement(node))
return false;
if (ariaRoleAttribute() != UnknownRole)
@@ -629,8 +627,8 @@ bool AXNodeObject::isChecked() const
return false;
// First test for native checkedness semantics
- if (node->hasTagName(inputTag))
- return toHTMLInputElement(node)->shouldAppearChecked();
+ if (isHTMLInputElement(*node))
+ return toHTMLInputElement(*node).shouldAppearChecked();
// Else, if this is an ARIA checkbox or radio, respect the aria-checked attribute
AccessibilityRole ariaRole = ariaRoleAttribute();
@@ -673,7 +671,7 @@ bool AXNodeObject::isEnabled() const
bool AXNodeObject::isIndeterminate() const
{
Node* node = this->node();
- if (!node || !node->hasTagName(inputTag))
+ if (!isHTMLInputElement(node))
return false;
return toHTMLInputElement(node)->shouldAppearIndeterminate();
@@ -704,13 +702,13 @@ bool AXNodeObject::isReadOnly() const
if (!node)
return true;
- if (node->hasTagName(textareaTag))
- return toHTMLFormControlElement(node)->isReadOnly();
+ if (isHTMLTextAreaElement(*node))
+ return toHTMLTextAreaElement(*node).isReadOnly();
- if (node->hasTagName(inputTag)) {
- HTMLInputElement* input = toHTMLInputElement(node);
- if (input->isTextField())
- return input->isReadOnly();
+ if (isHTMLInputElement(*node)) {
+ HTMLInputElement& input = toHTMLInputElement(*node);
+ if (input.isTextField())
+ return input.isReadOnly();
}
return !node->rendererIsEditable();
@@ -881,8 +879,8 @@ String AXNodeObject::text() const
if (!node)
return String();
- if (isNativeTextControl() && (node->hasTagName(textareaTag) || node->hasTagName(inputTag)))
- return toHTMLTextFormControlElement(node)->value();
+ if (isNativeTextControl() && (isHTMLTextAreaElement(*node) || isHTMLInputElement(*node)))
+ return toHTMLTextFormControlElement(*node).value();
if (!node->isElementNode())
return String();
@@ -922,7 +920,7 @@ void AXNodeObject::colorValue(int& r, int& g, int& b) const
if (!isColorWell())
return;
- if (!node() || !node()->hasTagName(inputTag))
+ if (!isHTMLInputElement(node()))
return;
HTMLInputElement* input = toHTMLInputElement(node());
@@ -952,10 +950,10 @@ float AXNodeObject::valueForRange() const
if (hasAttribute(aria_valuenowAttr))
return getAttribute(aria_valuenowAttr).toFloat();
- if (node() && node()->hasTagName(inputTag)) {
- HTMLInputElement* input = toHTMLInputElement(node());
- if (input->isRangeControl())
- return input->valueAsNumber();
+ if (isHTMLInputElement(node())) {
+ HTMLInputElement& input = toHTMLInputElement(*node());
+ if (input.isRangeControl())
+ return input.valueAsNumber();
}
return 0.0;
@@ -966,10 +964,10 @@ float AXNodeObject::maxValueForRange() const
if (hasAttribute(aria_valuemaxAttr))
return getAttribute(aria_valuemaxAttr).toFloat();
- if (node() && node()->hasTagName(inputTag)) {
- HTMLInputElement* input = toHTMLInputElement(node());
- if (input->isRangeControl())
- return input->maximum();
+ if (isHTMLInputElement(node())) {
+ HTMLInputElement& input = toHTMLInputElement(*node());
+ if (input.isRangeControl())
+ return input.maximum();
}
return 0.0;
@@ -980,10 +978,10 @@ float AXNodeObject::minValueForRange() const
if (hasAttribute(aria_valueminAttr))
return getAttribute(aria_valueminAttr).toFloat();
- if (node() && node()->hasTagName(inputTag)) {
- HTMLInputElement* input = toHTMLInputElement(node());
- if (input->isRangeControl())
- return input->minimum();
+ if (isHTMLInputElement(node())) {
+ HTMLInputElement& input = toHTMLInputElement(*node());
+ if (input.isRangeControl())
+ return input.minimum();
}
return 0.0;
@@ -1010,17 +1008,17 @@ String AXNodeObject::stringValue() const
if (node->isTextNode())
return textUnderElement();
- if (node->hasTagName(selectTag)) {
- HTMLSelectElement* selectElement = toHTMLSelectElement(node);
- int selectedIndex = selectElement->selectedIndex();
- const Vector<HTMLElement*> listItems = selectElement->listItems();
+ if (isHTMLSelectElement(*node)) {
+ HTMLSelectElement& selectElement = toHTMLSelectElement(*node);
+ int selectedIndex = selectElement.selectedIndex();
+ const Vector<HTMLElement*> listItems = selectElement.listItems();
if (selectedIndex >= 0 && static_cast<size_t>(selectedIndex) < listItems.size()) {
const AtomicString& overriddenDescription = listItems[selectedIndex]->fastGetAttribute(aria_labelAttr);
if (!overriddenDescription.isNull())
return overriddenDescription;
}
- if (!selectElement->multiple())
- return selectElement->value();
+ if (!selectElement.multiple())
+ return selectElement.value();
return String();
}
@@ -1164,27 +1162,27 @@ String AXNodeObject::title() const
if (!node)
return String();
- bool isInputTag = node->hasTagName(inputTag);
- if (isInputTag) {
- HTMLInputElement* input = toHTMLInputElement(node);
- if (input->isTextButton())
- return input->valueWithDefault();
+ bool isInputElement = isHTMLInputElement(*node);
+ if (isInputElement) {
+ HTMLInputElement& input = toHTMLInputElement(*node);
+ if (input.isTextButton())
+ return input.valueWithDefault();
}
- if (isInputTag || AXObject::isARIAInput(ariaRoleAttribute()) || isControl()) {
+ if (isInputElement || AXObject::isARIAInput(ariaRoleAttribute()) || isControl()) {
HTMLLabelElement* label = labelForElement(toElement(node));
if (label && !exposesTitleUIElement())
return label->innerText();
}
// If this node isn't rendered, there's no inner text we can extract from a select element.
- if (!isAXRenderObject() && node->hasTagName(selectTag))
+ if (!isAXRenderObject() && isHTMLSelectElement(*node))
return String();
switch (roleValue()) {
case PopUpButtonRole:
// Native popup buttons should not use their button children's text as a title. That value is retrieved through stringValue().
- if (node->hasTagName(selectTag))
+ if (isHTMLSelectElement(*node))
return String();
case ButtonRole:
case ToggleButtonRole:
@@ -1398,10 +1396,10 @@ Element* AXNodeObject::actionElement() const
if (!node)
return 0;
- if (node->hasTagName(inputTag)) {
- HTMLInputElement* input = toHTMLInputElement(node);
- if (!input->isDisabledFormControl() && (isCheckboxOrRadio() || input->isTextButton()))
- return input;
+ if (isHTMLInputElement(*node)) {
+ HTMLInputElement& input = toHTMLInputElement(*node);
+ if (!input.isDisabledFormControl() && (isCheckboxOrRadio() || input.isTextButton()))
+ return &input;
} else if (node->hasTagName(buttonTag)) {
return toElement(node);
}
@@ -1764,11 +1762,10 @@ void AXNodeObject::visibleText(Vector<AccessibilityText>& textOrder) const
if (!node)
return;
- bool isInputTag = node->hasTagName(inputTag);
- if (isInputTag) {
- HTMLInputElement* input = toHTMLInputElement(node);
- if (input->isTextButton()) {
- textOrder.append(AccessibilityText(input->valueWithDefault(), VisibleText));
+ if (isHTMLInputElement(*node)) {
+ HTMLInputElement& input = toHTMLInputElement(*node);
+ if (input.isTextButton()) {
+ textOrder.append(AccessibilityText(input.valueWithDefault(), VisibleText));
return;
}
}
« no previous file with comments | « Source/core/accessibility/AXMediaControls.cpp ('k') | Source/core/accessibility/AXObjectCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698