diff options
author | Steve Block <steveblock@google.com> | 2011-05-25 19:08:45 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-06-08 13:51:31 +0100 |
commit | 2bde8e466a4451c7319e3a072d118917957d6554 (patch) | |
tree | 28f4a1b869a513e565c7760d0e6a06e7cf1fe95a /Source/WebCore/accessibility/AccessibilityRenderObject.cpp | |
parent | 6939c99b71d9372d14a0c74a772108052e8c48c8 (diff) | |
download | external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.zip external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.gz external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.bz2 |
Merge WebKit at r82507: Initial merge by git
Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e
Diffstat (limited to 'Source/WebCore/accessibility/AccessibilityRenderObject.cpp')
-rw-r--r-- | Source/WebCore/accessibility/AccessibilityRenderObject.cpp | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp index a626950..9b54a69 100644 --- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityRenderObject.cpp @@ -495,7 +495,7 @@ bool AccessibilityRenderObject::isPasswordField() const if (ariaRoleAttribute() != UnknownRole) return false; - InputElement* inputElement = toInputElement(static_cast<Element*>(m_renderer->node())); + InputElement* inputElement = m_renderer->node()->toInputElement(); if (!inputElement) return false; @@ -585,10 +585,10 @@ bool AccessibilityRenderObject::isPressed() const bool AccessibilityRenderObject::isIndeterminate() const { ASSERT(m_renderer); - if (!m_renderer->node() || !m_renderer->node()->isElementNode()) + if (!m_renderer->node()) return false; - InputElement* inputElement = toInputElement(static_cast<Element*>(m_renderer->node())); + InputElement* inputElement = m_renderer->node()->toInputElement(); if (!inputElement) return false; @@ -598,8 +598,8 @@ bool AccessibilityRenderObject::isIndeterminate() const bool AccessibilityRenderObject::isNativeCheckboxOrRadio() const { Node* elementNode = node(); - if (elementNode && elementNode->isElementNode()) { - InputElement* input = toInputElement(static_cast<Element*>(elementNode)); + if (elementNode) { + InputElement* input = elementNode->toInputElement(); if (input) return input->isCheckbox() || input->isRadioButton(); } @@ -610,11 +610,11 @@ bool AccessibilityRenderObject::isNativeCheckboxOrRadio() const bool AccessibilityRenderObject::isChecked() const { ASSERT(m_renderer); - if (!m_renderer->node() || !m_renderer->node()->isElementNode()) + if (!m_renderer->node()) return false; // First test for native checkedness semantics - InputElement* inputElement = toInputElement(static_cast<Element*>(m_renderer->node())); + InputElement* inputElement = m_renderer->node()->toInputElement(); if (inputElement) return inputElement->isChecked(); @@ -661,10 +661,10 @@ bool AccessibilityRenderObject::isReadOnly() const return true; HTMLElement* body = document->body(); - if (body && body->isContentEditable()) + if (body && body->rendererIsEditable()) return false; - return !document->inDesignMode(); + return !document->rendererIsEditable(); } if (m_renderer->isBoxModelObject()) { @@ -675,7 +675,7 @@ bool AccessibilityRenderObject::isReadOnly() const return static_cast<HTMLTextAreaElement*>(box->node())->readOnly(); } - return !m_renderer->node() || !m_renderer->node()->isContentEditable(); + return !m_renderer->node() || !m_renderer->node()->rendererIsEditable(); } bool AccessibilityRenderObject::isOffScreen() const @@ -1829,7 +1829,7 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const return false; // Anything that is content editable should not be ignored. - // However, one cannot just call node->isContentEditable() since that will ask if its parents + // However, one cannot just call node->rendererIsEditable() since that will ask if its parents // are also editable. Only the top level content editable region should be exposed. if (node && node->isElementNode()) { Element* element = static_cast<Element*>(node); @@ -1838,6 +1838,10 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const return false; } + // List items play an important role in defining the structure of lists. They should not be ignored. + if (roleValue() == ListItemRole) + return false; + // if this element has aria attributes on it, it should not be ignored. if (supportsARIAAttributes()) return false; @@ -2401,8 +2405,8 @@ VisiblePositionRange AccessibilityRenderObject::visiblePositionRange() const if (!node) return VisiblePositionRange(); - VisiblePosition startPos = firstDeepEditingPositionForNode(node); - VisiblePosition endPos = lastDeepEditingPositionForNode(node); + VisiblePosition startPos = firstPositionInOrBeforeNode(node); + VisiblePosition endPos = lastPositionInOrAfterNode(node); // the VisiblePositions are equal for nodes like buttons, so adjust for that // FIXME: Really? [button, 0] and [button, 1] are distinct (before and after the button) @@ -3083,9 +3087,24 @@ AccessibilityRole AccessibilityRenderObject::determineAccessibilityRole() #if PLATFORM(GTK) if (m_renderer->isHR()) return SplitterRole; + + if (node && node->hasTagName(pTag)) + return ParagraphRole; + + if (node && node->hasTagName(labelTag)) + return LabelRole; + + if (node && node->hasTagName(divTag)) + return DivRole; + + if (node && node->hasTagName(formTag)) + return FormRole; +#else + if (node && node->hasTagName(labelTag)) + return GroupRole; #endif - if (m_renderer->isBlockFlow() || (node && node->hasTagName(labelTag))) + if (m_renderer->isBlockFlow()) return GroupRole; // If the element does not have role, but it has ARIA attributes, accessibility should fallback to exposing it as a group. |