OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 { | 220 { |
221 if (!m_explicitElementRect.isEmpty()) | 221 if (!m_explicitElementRect.isEmpty()) |
222 return m_explicitElementRect; | 222 return m_explicitElementRect; |
223 if (!m_renderer) | 223 if (!m_renderer) |
224 return LayoutRect(); | 224 return LayoutRect(); |
225 if (!m_renderer->isBox()) | 225 if (!m_renderer->isBox()) |
226 return computeElementRect(); | 226 return computeElementRect(); |
227 | 227 |
228 for (const AccessibilityObject* obj = this; obj; obj = obj->parentObject())
{ | 228 for (const AccessibilityObject* obj = this; obj; obj = obj->parentObject())
{ |
229 if (obj->isAccessibilityRenderObject()) | 229 if (obj->isAccessibilityRenderObject()) |
230 static_cast<const AccessibilityRenderObject*>(obj)->checkCachedEleme
ntRect(); | 230 toAccessibilityRenderObject(obj)->checkCachedElementRect(); |
231 } | 231 } |
232 for (const AccessibilityObject* obj = this; obj; obj = obj->parentObject())
{ | 232 for (const AccessibilityObject* obj = this; obj; obj = obj->parentObject())
{ |
233 if (obj->isAccessibilityRenderObject()) | 233 if (obj->isAccessibilityRenderObject()) |
234 static_cast<const AccessibilityRenderObject*>(obj)->updateCachedElem
entRect(); | 234 toAccessibilityRenderObject(obj)->updateCachedElementRect(); |
235 } | 235 } |
236 | 236 |
237 return m_cachedElementRect; | 237 return m_cachedElementRect; |
238 } | 238 } |
239 | 239 |
240 void AccessibilityRenderObject::setRenderer(RenderObject* renderer) | 240 void AccessibilityRenderObject::setRenderer(RenderObject* renderer) |
241 { | 241 { |
242 m_renderer = renderer; | 242 m_renderer = renderer; |
243 setNode(renderer->node()); | 243 setNode(renderer->node()); |
244 } | 244 } |
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 return String(); | 1150 return String(); |
1151 | 1151 |
1152 return plainText(rangeOfContents(node).get(), textIteratorBehavi
orForTextRange()); | 1152 return plainText(rangeOfContents(node).get(), textIteratorBehavi
orForTextRange()); |
1153 } | 1153 } |
1154 } | 1154 } |
1155 | 1155 |
1156 // Sometimes text fragments don't have Nodes associated with them (like
when | 1156 // Sometimes text fragments don't have Nodes associated with them (like
when |
1157 // CSS content is used to insert text or when a RenderCounter is used.) | 1157 // CSS content is used to insert text or when a RenderCounter is used.) |
1158 RenderText* renderTextObject = toRenderText(m_renderer); | 1158 RenderText* renderTextObject = toRenderText(m_renderer); |
1159 if (renderTextObject->isTextFragment()) | 1159 if (renderTextObject->isTextFragment()) |
1160 return String(static_cast<RenderTextFragment*>(m_renderer)->contentS
tring()); | 1160 return String(toRenderTextFragment(m_renderer)->contentString()); |
1161 else | 1161 else |
1162 return String(renderTextObject->text()); | 1162 return String(renderTextObject->text()); |
1163 } | 1163 } |
1164 | 1164 |
1165 return AccessibilityNodeObject::textUnderElement(); | 1165 return AccessibilityNodeObject::textUnderElement(); |
1166 } | 1166 } |
1167 | 1167 |
1168 // | 1168 // |
1169 // Accessibility Text - (To be deprecated). | 1169 // Accessibility Text - (To be deprecated). |
1170 // | 1170 // |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1317 | 1317 |
1318 AccessibilityObject* result = obj->document().axObjectCache()->getOrCreate(o
bj); | 1318 AccessibilityObject* result = obj->document().axObjectCache()->getOrCreate(o
bj); |
1319 result->updateChildrenIfNecessary(); | 1319 result->updateChildrenIfNecessary(); |
1320 | 1320 |
1321 // Allow the element to perform any hit-testing it might need to do to reach
non-render children. | 1321 // Allow the element to perform any hit-testing it might need to do to reach
non-render children. |
1322 result = result->elementAccessibilityHitTest(point); | 1322 result = result->elementAccessibilityHitTest(point); |
1323 | 1323 |
1324 if (result && result->accessibilityIsIgnored()) { | 1324 if (result && result->accessibilityIsIgnored()) { |
1325 // If this element is the label of a control, a hit test should return t
he control. | 1325 // If this element is the label of a control, a hit test should return t
he control. |
1326 if (result->isAccessibilityRenderObject()) { | 1326 if (result->isAccessibilityRenderObject()) { |
1327 AccessibilityObject* controlObject = static_cast<AccessibilityRender
Object*>(result)->correspondingControlForLabelElement(); | 1327 AccessibilityObject* controlObject = toAccessibilityRenderObject(res
ult)->correspondingControlForLabelElement(); |
1328 if (controlObject && !controlObject->exposesTitleUIElement()) | 1328 if (controlObject && !controlObject->exposesTitleUIElement()) |
1329 return controlObject; | 1329 return controlObject; |
1330 } | 1330 } |
1331 | 1331 |
1332 result = result->parentObjectUnignored(); | 1332 result = result->parentObjectUnignored(); |
1333 } | 1333 } |
1334 | 1334 |
1335 return result; | 1335 return result; |
1336 } | 1336 } |
1337 | 1337 |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1687 // | 1687 // |
1688 | 1688 |
1689 void AccessibilityRenderObject::handleActiveDescendantChanged() | 1689 void AccessibilityRenderObject::handleActiveDescendantChanged() |
1690 { | 1690 { |
1691 Element* element = toElement(renderer()->node()); | 1691 Element* element = toElement(renderer()->node()); |
1692 if (!element) | 1692 if (!element) |
1693 return; | 1693 return; |
1694 Document& doc = renderer()->document(); | 1694 Document& doc = renderer()->document(); |
1695 if (!doc.frame()->selection().isFocusedAndActive() || doc.focusedElement() !
= element) | 1695 if (!doc.frame()->selection().isFocusedAndActive() || doc.focusedElement() !
= element) |
1696 return; | 1696 return; |
1697 AccessibilityRenderObject* activedescendant = static_cast<AccessibilityRende
rObject*>(activeDescendant()); | 1697 AccessibilityRenderObject* activedescendant = toAccessibilityRenderObject(ac
tiveDescendant()); |
1698 | 1698 |
1699 if (activedescendant && shouldNotifyActiveDescendant()) | 1699 if (activedescendant && shouldNotifyActiveDescendant()) |
1700 doc.axObjectCache()->postNotification(m_renderer, AXObjectCache::AXActiv
eDescendantChanged, true); | 1700 doc.axObjectCache()->postNotification(m_renderer, AXObjectCache::AXActiv
eDescendantChanged, true); |
1701 } | 1701 } |
1702 | 1702 |
1703 void AccessibilityRenderObject::handleAriaExpandedChanged() | 1703 void AccessibilityRenderObject::handleAriaExpandedChanged() |
1704 { | 1704 { |
1705 // Find if a parent of this object should handle aria-expanded changes. | 1705 // Find if a parent of this object should handle aria-expanded changes. |
1706 AccessibilityObject* containerParent = this->parentObject(); | 1706 AccessibilityObject* containerParent = this->parentObject(); |
1707 while (containerParent) { | 1707 while (containerParent) { |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2190 { | 2190 { |
2191 Node* node = this->node(); | 2191 Node* node = this->node(); |
2192 if (!node || !node->hasTagName(inputTag)) | 2192 if (!node || !node->hasTagName(inputTag)) |
2193 return; | 2193 return; |
2194 | 2194 |
2195 HTMLInputElement* input = toHTMLInputElement(node); | 2195 HTMLInputElement* input = toHTMLInputElement(node); |
2196 Element* spinButtonElement = input->userAgentShadowRoot()->getElementById(Sh
adowElementNames::spinButton()); | 2196 Element* spinButtonElement = input->userAgentShadowRoot()->getElementById(Sh
adowElementNames::spinButton()); |
2197 if (!spinButtonElement || !spinButtonElement->isSpinButtonElement()) | 2197 if (!spinButtonElement || !spinButtonElement->isSpinButtonElement()) |
2198 return; | 2198 return; |
2199 | 2199 |
2200 AccessibilitySpinButton* axSpinButton = static_cast<AccessibilitySpinButton*
>(axObjectCache()->getOrCreate(SpinButtonRole)); | 2200 AccessibilitySpinButton* axSpinButton = toAccessibilitySpinButton(axObjectCa
che()->getOrCreate(SpinButtonRole)); |
2201 axSpinButton->setSpinButtonElement(toSpinButtonElement(spinButtonElement)); | 2201 axSpinButton->setSpinButtonElement(toSpinButtonElement(spinButtonElement)); |
2202 axSpinButton->setParent(this); | 2202 axSpinButton->setParent(this); |
2203 m_children.append(axSpinButton); | 2203 m_children.append(axSpinButton); |
2204 } | 2204 } |
2205 | 2205 |
2206 void AccessibilityRenderObject::addImageMapChildren() | 2206 void AccessibilityRenderObject::addImageMapChildren() |
2207 { | 2207 { |
2208 RenderBoxModelObject* cssBox = renderBoxModelObject(); | 2208 RenderBoxModelObject* cssBox = renderBoxModelObject(); |
2209 if (!cssBox || !cssBox->isRenderImage()) | 2209 if (!cssBox || !cssBox->isRenderImage()) |
2210 return; | 2210 return; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2319 // ARIA spec says that when a parent object is presentational, and it has re
quired child elements, | 2319 // ARIA spec says that when a parent object is presentational, and it has re
quired child elements, |
2320 // those child elements are also presentational. For example, <li> becomes p
resentational from <ul>. | 2320 // those child elements are also presentational. For example, <li> becomes p
resentational from <ul>. |
2321 // http://www.w3.org/WAI/PF/aria/complete#presentation | 2321 // http://www.w3.org/WAI/PF/aria/complete#presentation |
2322 if (roleValue() != ListItemRole && roleValue() != ListMarkerRole) | 2322 if (roleValue() != ListItemRole && roleValue() != ListMarkerRole) |
2323 return false; | 2323 return false; |
2324 | 2324 |
2325 AccessibilityObject* parent = parentObject(); | 2325 AccessibilityObject* parent = parentObject(); |
2326 if (!parent->isAccessibilityRenderObject()) | 2326 if (!parent->isAccessibilityRenderObject()) |
2327 return false; | 2327 return false; |
2328 | 2328 |
2329 Node* elementNode = static_cast<AccessibilityRenderObject*>(parent)->node(); | 2329 Node* elementNode = toAccessibilityRenderObject(parent)->node(); |
2330 if (!elementNode || !elementNode->isElementNode()) | 2330 if (!elementNode || !elementNode->isElementNode()) |
2331 return false; | 2331 return false; |
2332 | 2332 |
2333 QualifiedName tagName = toElement(elementNode)->tagQName(); | 2333 QualifiedName tagName = toElement(elementNode)->tagQName(); |
2334 if (tagName == ulTag || tagName == olTag || tagName == dlTag) | 2334 if (tagName == ulTag || tagName == olTag || tagName == dlTag) |
2335 return parent->roleValue() == PresentationalRole; | 2335 return parent->roleValue() == PresentationalRole; |
2336 | 2336 |
2337 return false; | 2337 return false; |
2338 } | 2338 } |
2339 | 2339 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2375 if (label && label->renderer()) { | 2375 if (label && label->renderer()) { |
2376 LayoutRect labelRect = axObjectCache()->getOrCreate(label)->elementR
ect(); | 2376 LayoutRect labelRect = axObjectCache()->getOrCreate(label)->elementR
ect(); |
2377 result.unite(labelRect); | 2377 result.unite(labelRect); |
2378 } | 2378 } |
2379 } | 2379 } |
2380 | 2380 |
2381 return result; | 2381 return result; |
2382 } | 2382 } |
2383 | 2383 |
2384 } // namespace WebCore | 2384 } // namespace WebCore |
OLD | NEW |