OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014, Google Inc. All rights reserved. | 2 * Copyright (C) 2014, Google 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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 focusedNode = focusedDocument; | 171 focusedNode = focusedDocument; |
172 | 172 |
173 // If it's an image map, get the focused link within the image map. | 173 // If it's an image map, get the focused link within the image map. |
174 if (isHTMLAreaElement(focusedNode)) | 174 if (isHTMLAreaElement(focusedNode)) |
175 return focusedImageMapUIElement(toHTMLAreaElement(focusedNode)); | 175 return focusedImageMapUIElement(toHTMLAreaElement(focusedNode)); |
176 | 176 |
177 // See if there's a page popup, for example a calendar picker. | 177 // See if there's a page popup, for example a calendar picker. |
178 Element* adjustedFocusedElement = focusedDocument->adjustedFocusedElement(); | 178 Element* adjustedFocusedElement = focusedDocument->adjustedFocusedElement(); |
179 if (isHTMLInputElement(adjustedFocusedElement)) { | 179 if (isHTMLInputElement(adjustedFocusedElement)) { |
180 if (AXObject* axPopup = toHTMLInputElement(adjustedFocusedElement)->popu
pRootAXObject()) { | 180 if (AXObject* axPopup = toHTMLInputElement(adjustedFocusedElement)->popu
pRootAXObject()) { |
181 if (Element* focusedElementInPopup = axPopup->document()->focusedEle
ment()) | 181 if (Element* focusedElementInPopup = axPopup->getDocument()->focused
Element()) |
182 focusedNode = focusedElementInPopup; | 182 focusedNode = focusedElementInPopup; |
183 } | 183 } |
184 | 184 |
185 } | 185 } |
186 | 186 |
187 AXObject* obj = getOrCreate(focusedNode); | 187 AXObject* obj = getOrCreate(focusedNode); |
188 if (!obj) | 188 if (!obj) |
189 return 0; | 189 return 0; |
190 | 190 |
191 if (obj->shouldFocusActiveDescendant()) { | 191 if (obj->shouldFocusActiveDescendant()) { |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 continue; | 674 continue; |
675 | 675 |
676 if (obj->isDetached()) | 676 if (obj->isDetached()) |
677 continue; | 677 continue; |
678 | 678 |
679 #if ENABLE(ASSERT) | 679 #if ENABLE(ASSERT) |
680 // Make sure none of the layout views are in the process of being layed
out. | 680 // Make sure none of the layout views are in the process of being layed
out. |
681 // Notifications should only be sent after the layoutObject has finished | 681 // Notifications should only be sent after the layoutObject has finished |
682 if (obj->isAXLayoutObject()) { | 682 if (obj->isAXLayoutObject()) { |
683 AXLayoutObject* layoutObj = toAXLayoutObject(obj); | 683 AXLayoutObject* layoutObj = toAXLayoutObject(obj); |
684 LayoutObject* layoutObject = layoutObj->layoutObject(); | 684 LayoutObject* layoutObject = layoutObj->getLayoutObject(); |
685 if (layoutObject && layoutObject->view()) | 685 if (layoutObject && layoutObject->view()) |
686 ASSERT(!layoutObject->view()->layoutState()); | 686 ASSERT(!layoutObject->view()->layoutState()); |
687 } | 687 } |
688 #endif | 688 #endif |
689 | 689 |
690 AXNotification notification = m_notificationsToPost[i].second; | 690 AXNotification notification = m_notificationsToPost[i].second; |
691 postPlatformNotification(obj, notification); | 691 postPlatformNotification(obj, notification); |
692 | 692 |
693 if (notification == AXChildrenChanged && obj->parentObjectIfExists() &&
obj->lastKnownIsIgnoredValue() != obj->accessibilityIsIgnored()) | 693 if (notification == AXChildrenChanged && obj->parentObjectIfExists() &&
obj->lastKnownIsIgnoredValue() != obj->accessibilityIsIgnored()) |
694 childrenChanged(obj->parentObject()); | 694 childrenChanged(obj->parentObject()); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 if (idsChanged) | 772 if (idsChanged) |
773 m_ariaOwnerToIdsMapping.set(owner->axObjectID(), newIds); | 773 m_ariaOwnerToIdsMapping.set(owner->axObjectID(), newIds); |
774 | 774 |
775 // | 775 // |
776 // Now figure out the ids that actually correspond to children that exist an
d | 776 // Now figure out the ids that actually correspond to children that exist an
d |
777 // that we can legally own (not cyclical, not already owned, etc.) and updat
e | 777 // that we can legally own (not cyclical, not already owned, etc.) and updat
e |
778 // the maps and |ownedChildren| based on that. | 778 // the maps and |ownedChildren| based on that. |
779 // | 779 // |
780 | 780 |
781 // Figure out the children that are owned by this object and are in the tree
. | 781 // Figure out the children that are owned by this object and are in the tree
. |
782 TreeScope& scope = owner->node()->treeScope(); | 782 TreeScope& scope = owner->getNode()->treeScope(); |
783 Vector<AXID> newChildAXIDs; | 783 Vector<AXID> newChildAXIDs; |
784 for (const String& idName : idVector) { | 784 for (const String& idName : idVector) { |
785 Element* element = scope.getElementById(AtomicString(idName)); | 785 Element* element = scope.getElementById(AtomicString(idName)); |
786 if (!element) | 786 if (!element) |
787 continue; | 787 continue; |
788 | 788 |
789 AXObject* child = getOrCreate(element); | 789 AXObject* child = getOrCreate(element); |
790 if (!child) | 790 if (!child) |
791 continue; | 791 continue; |
792 | 792 |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1138 return false; | 1138 return false; |
1139 | 1139 |
1140 if (!node->isElementNode()) | 1140 if (!node->isElementNode()) |
1141 return false; | 1141 return false; |
1142 | 1142 |
1143 return equalIgnoringCase(toElement(node)->getAttribute(aria_hiddenAttr), "fa
lse"); | 1143 return equalIgnoringCase(toElement(node)->getAttribute(aria_hiddenAttr), "fa
lse"); |
1144 } | 1144 } |
1145 | 1145 |
1146 void AXObjectCacheImpl::postPlatformNotification(AXObject* obj, AXNotification n
otification) | 1146 void AXObjectCacheImpl::postPlatformNotification(AXObject* obj, AXNotification n
otification) |
1147 { | 1147 { |
1148 if (!obj || !obj->document() || !obj->documentFrameView() || !obj->documentF
rameView()->frame().page()) | 1148 if (!obj || !obj->getDocument() || !obj->documentFrameView() || !obj->docume
ntFrameView()->frame().page()) |
1149 return; | 1149 return; |
1150 | 1150 |
1151 ChromeClient& client = obj->document()->axObjectCacheOwner().page()->chromeC
lient(); | 1151 ChromeClient& client = obj->getDocument()->axObjectCacheOwner().page()->chro
meClient(); |
1152 | 1152 |
1153 if (notification == AXActiveDescendantChanged | 1153 if (notification == AXActiveDescendantChanged |
1154 && obj->document()->focusedElement() | 1154 && obj->getDocument()->focusedElement() |
1155 && obj->node() == obj->document()->focusedElement()) { | 1155 && obj->getNode() == obj->getDocument()->focusedElement()) { |
1156 // Calling handleFocusedUIElementChanged will focus the new active | 1156 // Calling handleFocusedUIElementChanged will focus the new active |
1157 // descendant and send the AXFocusedUIElementChanged notification. | 1157 // descendant and send the AXFocusedUIElementChanged notification. |
1158 handleFocusedUIElementChanged(0, obj->document()->focusedElement()); | 1158 handleFocusedUIElementChanged(0, obj->getDocument()->focusedElement()); |
1159 } | 1159 } |
1160 | 1160 |
1161 client.postAccessibilityNotification(obj, notification); | 1161 client.postAccessibilityNotification(obj, notification); |
1162 } | 1162 } |
1163 | 1163 |
1164 void AXObjectCacheImpl::handleFocusedUIElementChanged(Node* oldFocusedNode, Node
* newFocusedNode) | 1164 void AXObjectCacheImpl::handleFocusedUIElementChanged(Node* oldFocusedNode, Node
* newFocusedNode) |
1165 { | 1165 { |
1166 if (!newFocusedNode) | 1166 if (!newFocusedNode) |
1167 return; | 1167 return; |
1168 | 1168 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1298 visitor->trace(m_nodeObjectMapping); | 1298 visitor->trace(m_nodeObjectMapping); |
1299 #endif | 1299 #endif |
1300 | 1300 |
1301 visitor->trace(m_objects); | 1301 visitor->trace(m_objects); |
1302 visitor->trace(m_notificationsToPost); | 1302 visitor->trace(m_notificationsToPost); |
1303 | 1303 |
1304 AXObjectCache::trace(visitor); | 1304 AXObjectCache::trace(visitor); |
1305 } | 1305 } |
1306 | 1306 |
1307 } // namespace blink | 1307 } // namespace blink |
OLD | NEW |