Changeset 251974 in webkit
- Timestamp:
- Nov 3, 2019 10:28:44 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r251973 r251974 1 2019-11-03 Andres Gonzalez <andresg_22@apple.com> 2 3 Make AXIsolatedTreeNode a subclass of AXCoreObject. 4 https://bugs.webkit.org/show_bug.cgi?id=203717 5 6 Reviewed by Chris Fleizach. 7 8 No new tests needed, no new functionality. 9 10 - AXIsolatedTreeNOde derives from AXCoreObject. 11 - AccessibilityObjectWrapper can now have a single pointer to a AXCoreObject instead of one for the live object and one for the isolated object. 12 - Simplified wrapper code by making it agnostic of the nature of the underlying AXCoreObject. 13 14 * accessibility/AXObjectCache.cpp: 15 (WebCore::AXObjectCache::characterOffsetForPoint): 16 (WebCore::AXObjectCache::characterOffsetForIndex): 17 (WebCore::AXObjectCache::createIsolatedAccessibilityTreeHierarchy): 18 (WebCore::AXObjectCache::generateIsolatedAccessibilityTree): 19 * accessibility/AXObjectCache.h: 20 * accessibility/atk/AXObjectCacheAtk.cpp: 21 (WebCore::AXObjectCache::attachWrapper): 22 * accessibility/ios/AXObjectCacheIOS.mm: 23 (WebCore::AXObjectCache::attachWrapper): 24 * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: 25 (AccessibilityUnignoredAncestor): 26 (-[WebAccessibilityTextMarker initWithData:accessibilityObject:]): 27 (-[WebAccessibilityObjectWrapper initWithAccessibilityObject:]): 28 (-[WebAccessibilityObjectWrapper _accessibilityTreeAncestor]): 29 (-[WebAccessibilityObjectWrapper _accessibilityListAncestor]): 30 (-[WebAccessibilityObjectWrapper _accessibilityArticleAncestor]): 31 (-[WebAccessibilityObjectWrapper _accessibilityLandmarkAncestor]): 32 (-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]): 33 (-[WebAccessibilityObjectWrapper _accessibilityIsInTableCell]): 34 (-[WebAccessibilityObjectWrapper _accessibilityFieldsetAncestor]): 35 (-[WebAccessibilityObjectWrapper _accessibilityFrameAncestor]): 36 (-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]): 37 (-[WebAccessibilityObjectWrapper tableCellParent]): 38 (-[WebAccessibilityObjectWrapper tableParent]): 39 (-[WebAccessibilityObjectWrapper accessibilityTitleElement]): 40 (-[WebAccessibilityObjectWrapper accessibilityDatetimeValue]): 41 (-[WebAccessibilityObjectWrapper detailParentForSummaryObject:]): 42 (-[WebAccessibilityObjectWrapper detailParentForObject:]): 43 (-[WebAccessibilityObjectWrapper treeItemParentForObject:]): 44 (AXAttributeStringSetStyle): 45 (-[WebAccessibilityObjectWrapper arrayOfTextForTextMarkers:attributed:]): 46 (-[WebAccessibilityObjectWrapper accessibilitySupportsARIAExpanded]): 47 (-[WebAccessibilityObjectWrapper accessibilityIsExpanded]): 48 * accessibility/isolatedtree/AXIsolatedTree.cpp: 49 (WebCore::AXIsolatedTree::setRoot): 50 (WebCore::AXIsolatedTree::applyPendingChanges): 51 (WebCore::AXIsolatedTree::setRootNodeID): Deleted. 52 * accessibility/isolatedtree/AXIsolatedTree.h: 53 * accessibility/isolatedtree/AXIsolatedTreeNode.cpp: 54 (WebCore::AXIsolatedTreeNode::AXIsolatedTreeNode): 55 (WebCore::AXIsolatedTreeNode::create): 56 (WebCore::AXIsolatedTreeNode::initializeAttributeData): 57 (WebCore::AXIsolatedTreeNode::appendChild): 58 (WebCore::AXIsolatedTreeNode::children): 59 (WebCore::AXIsolatedTreeNode::parentObjectUnignored const): 60 (WebCore::AXIsolatedTreeNode::accessibilityHitTest const): 61 (WebCore::AXIsolatedTreeNode::updateBackingStore): 62 (WebCore::AXIsolatedTreeNode::parentObjectInterfaceUnignored const): Deleted. 63 * accessibility/isolatedtree/AXIsolatedTreeNode.h: 64 * accessibility/mac/AXObjectCacheMac.mm: 65 (WebCore::AXObjectCache::attachWrapper): 66 (WebCore::AXObjectCache::associateIsolatedTreeNode): Deleted. 67 * accessibility/mac/WebAccessibilityObjectWrapperBase.h: 68 * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: 69 (convertToNSArray): 70 (-[WebAccessibilityObjectWrapperBase initWithAccessibilityObject:]): 71 (-[WebAccessibilityObjectWrapperBase detach]): 72 (-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]): 73 (-[WebAccessibilityObjectWrapperBase accessibilityObject]): 74 (-[WebAccessibilityObjectWrapperBase axBackingObject]): 75 (accessibilitySearchCriteriaForSearchPredicateParameterizedAttribute): 76 (-[WebAccessibilityObjectWrapperBase isolatedTreeNode]): Deleted. 77 * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: 78 (-[WebAccessibilityObjectWrapper doAXAttributedStringForTextMarkerRange:spellCheck:]): 79 (convertToVector): 80 (-[WebAccessibilityObjectWrapper childrenVectorSize]): 81 (-[WebAccessibilityObjectWrapper childrenVectorArray]): 82 (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): 83 (-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]): 84 (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): 85 * accessibility/win/AXObjectCacheWin.cpp: 86 (WebCore::AXObjectCache::attachWrapper): 87 1 88 2019-11-03 Zalan Bujtas <zalan@apple.com> 2 89 -
trunk/Source/WebCore/accessibility/AXObjectCache.cpp
r251798 r251974 2708 2708 } 2709 2709 2710 CharacterOffset AXObjectCache::characterOffsetForPoint(const IntPoint &point, A ccessibilityObject* obj)2710 CharacterOffset AXObjectCache::characterOffsetForPoint(const IntPoint &point, AXCoreObject* obj) 2711 2711 { 2712 2712 if (!obj) … … 2774 2774 } 2775 2775 2776 CharacterOffset AXObjectCache::characterOffsetForIndex(int index, const A ccessibilityObject* obj)2776 CharacterOffset AXObjectCache::characterOffsetForIndex(int index, const AXCoreObject* obj) 2777 2777 { 2778 2778 if (!obj) … … 2944 2944 2945 2945 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) 2946 Ref<AXIsolatedTreeNode> AXObjectCache::createIsolatedAccessibilityTreeHierarchy(A ccessibilityObject& object, AXID parentID, AXIsolatedTree& tree, Vector<Ref<AXIsolatedTreeNode>>& nodeChanges)2946 Ref<AXIsolatedTreeNode> AXObjectCache::createIsolatedAccessibilityTreeHierarchy(AXCoreObject& object, AXID parentID, AXIsolatedTree& tree, Vector<Ref<AXIsolatedTreeNode>>& nodeChanges) 2947 2947 { 2948 2948 auto isolatedTreeNode = AXIsolatedTreeNode::create(object); … … 2951 2951 isolatedTreeNode->setTreeIdentifier(tree.treeIdentifier()); 2952 2952 isolatedTreeNode->setParent(parentID); 2953 a ssociateIsolatedTreeNode(object, isolatedTreeNode, tree.treeIdentifier());2954 2955 for ( autochild : object.children()) {2956 auto staticChild = createIsolatedAccessibilityTreeHierarchy(*child, isolatedTreeNode-> identifier(), tree, nodeChanges);2957 isolatedTreeNode->appendChild(staticChild-> identifier());2953 attachWrapper(&isolatedTreeNode.get()); 2954 2955 for (const auto& child : object.children()) { 2956 auto staticChild = createIsolatedAccessibilityTreeHierarchy(*child, isolatedTreeNode->objectID(), tree, nodeChanges); 2957 isolatedTreeNode->appendChild(staticChild->objectID()); 2958 2958 } 2959 2959 … … 2971 2971 Vector<Ref<AXIsolatedTreeNode>> nodeChanges; 2972 2972 auto root = createIsolatedAccessibilityTreeHierarchy(*rootObject(), InvalidAXID, *tree, nodeChanges); 2973 tree->setRoot NodeID(root->identifier());2973 tree->setRoot(root); 2974 2974 tree->appendNodeChanges(nodeChanges); 2975 2975 -
trunk/Source/WebCore/accessibility/AXObjectCache.h
r251798 r251974 175 175 176 176 void detachWrapper(AccessibilityObject*, AccessibilityDetachmentType); 177 void attachWrapper(A ccessibilityObject*);177 void attachWrapper(AXCoreObject*); 178 178 void childrenChanged(Node*, Node* newChild = nullptr); 179 179 void childrenChanged(RenderObject*, RenderObject* newChild = nullptr); … … 195 195 WEBCORE_EXPORT Ref<AXIsolatedTree> generateIsolatedAccessibilityTree(); 196 196 197 void associateIsolatedTreeNode(AccessibilityObject&, AXIsolatedTreeNode&, AXIsolatedTreeID); 198 Ref<AXIsolatedTreeNode> createIsolatedAccessibilityTreeHierarchy(AccessibilityObject&, AXID, AXIsolatedTree&, Vector<Ref<AXIsolatedTreeNode>>&); 197 Ref<AXIsolatedTreeNode> createIsolatedAccessibilityTreeHierarchy(AXCoreObject&, AXID, AXIsolatedTree&, Vector<Ref<AXIsolatedTreeNode>>&); 199 198 #endif 200 199 … … 258 257 259 258 // Bounds 260 CharacterOffset characterOffsetForPoint(const IntPoint&, A ccessibilityObject*);259 CharacterOffset characterOffsetForPoint(const IntPoint&, AXCoreObject*); 261 260 IntRect absoluteCaretBoundsForCharacterOffset(const CharacterOffset&); 262 261 CharacterOffset characterOffsetForBounds(const IntRect&, bool); … … 267 266 268 267 // Index 269 CharacterOffset characterOffsetForIndex(int, const A ccessibilityObject*);268 CharacterOffset characterOffsetForIndex(int, const AXCoreObject*); 270 269 int indexForCharacterOffset(const CharacterOffset&, AccessibilityObject*); 271 270 -
trunk/Source/WebCore/accessibility/atk/AXObjectCacheAtk.cpp
r251798 r251974 62 62 } 63 63 64 void AXObjectCache::attachWrapper(AccessibilityObject* obj) 65 { 66 GRefPtr<WebKitAccessible> wrapper = adoptGRef(webkitAccessibleNew(obj)); 67 obj->setWrapper(wrapper.get()); 64 void AXObjectCache::attachWrapper(AXCoreObject* obj) 65 { 66 // FIXME: at the moment, only allow to attach AccessibilityObjects. 67 if (!is<AccessibilityObject>(obj)) 68 return; 69 AccessibilityObject* accessibilityObject = downcast<AccessibilityObject>(obj); 70 71 GRefPtr<WebKitAccessible> wrapper = adoptGRef(webkitAccessibleNew(accessibilityObject)); 72 accessibilityObject->setWrapper(wrapper.get()); 68 73 69 74 // If an object is being attached and we are not in the middle of a layout update, then 70 75 // we should report ATs by emitting the children-changed::add signal from the parent. 71 Document* document = obj->document();76 Document* document = accessibilityObject->document(); 72 77 if (!document || document->childNeedsStyleRecalc()) 73 78 return; 74 79 75 80 // Don't emit the signal when the actual object being added is not going to be exposed. 76 if ( obj->accessibilityIsIgnoredByDefault())81 if (accessibilityObject->accessibilityIsIgnoredByDefault()) 77 82 return; 78 83 … … 82 87 // and cache the state set for the child upon emission of the signal. If the object 83 88 // has not yet been rendered, this will result in a crash. 84 if (! obj->renderer())85 return; 86 87 m_deferredAttachedWrapperObjectList.add( obj);89 if (!accessibilityObject->renderer()) 90 return; 91 92 m_deferredAttachedWrapperObjectList.add(accessibilityObject); 88 93 } 89 94 -
trunk/Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm
r251798 r251974 43 43 } 44 44 45 void AXObjectCache::attachWrapper(A ccessibilityObject* obj)45 void AXObjectCache::attachWrapper(AXCoreObject* obj) 46 46 { 47 47 RetainPtr<AccessibilityObjectWrapper> wrapper = adoptNS([[WebAccessibilityObjectWrapper alloc] initWithAccessibilityObject:obj]); -
trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
r251870 r251974 124 124 { 125 125 while (wrapper && ![wrapper isAccessibilityElement]) { 126 A ccessibilityObject* object = [wrapper accessibilityObject];126 AXCoreObject* object = [wrapper accessibilityObject]; 127 127 if (!object) 128 128 break; … … 180 180 - (id)initWithData:(NSData *)data accessibilityObject:(AccessibilityObjectWrapper *)wrapper 181 181 { 182 WebCore::A ccessibilityObject* axObject = [wrapper accessibilityObject];182 WebCore::AXCoreObject* axObject = [wrapper accessibilityObject]; 183 183 if (!axObject) 184 184 return nil; … … 258 258 @implementation WebAccessibilityObjectWrapper 259 259 260 - (id)initWithAccessibilityObject:(A ccessibilityObject*)axObject260 - (id)initWithAccessibilityObject:(AXCoreObject*)axObject 261 261 { 262 262 self = [super initWithAccessibilityObject:axObject]; … … 551 551 - (AccessibilityObjectWrapper*)_accessibilityTreeAncestor 552 552 { 553 auto matchFunc = [] (const A ccessibilityObject& object) {553 auto matchFunc = [] (const AXCoreObject& object) { 554 554 AccessibilityRole role = object.roleValue(); 555 555 return role == AccessibilityRole::Tree; 556 556 }; 557 558 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, false, WTFMove(matchFunc)))557 558 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, WTFMove(matchFunc))) 559 559 return parent->wrapper(); 560 560 return nil; … … 563 563 - (AccessibilityObjectWrapper*)_accessibilityListAncestor 564 564 { 565 auto matchFunc = [] (const A ccessibilityObject& object) {565 auto matchFunc = [] (const AXCoreObject& object) { 566 566 AccessibilityRole role = object.roleValue(); 567 567 return role == AccessibilityRole::List || role == AccessibilityRole::ListBox; 568 568 }; 569 569 570 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, false, WTFMove(matchFunc)))570 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, WTFMove(matchFunc))) 571 571 return parent->wrapper(); 572 572 return nil; … … 575 575 - (AccessibilityObjectWrapper*)_accessibilityArticleAncestor 576 576 { 577 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, false, [] (const AccessibilityObject& object) {577 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, [] (const AXCoreObject& object) { 578 578 return object.roleValue() == AccessibilityRole::DocumentArticle; 579 579 })) … … 584 584 - (AccessibilityObjectWrapper*)_accessibilityLandmarkAncestor 585 585 { 586 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, false, [self] (const AccessibilityObject& object) {586 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, [self] (const AXCoreObject& object) { 587 587 return [self _accessibilityIsLandmarkRole:object.roleValue()]; 588 588 })) … … 593 593 - (AccessibilityObjectWrapper*)_accessibilityTableAncestor 594 594 { 595 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, false, [] (const AccessibilityObject& object) {595 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, [] (const AXCoreObject& object) { 596 596 return object.roleValue() == AccessibilityRole::Table; 597 597 })) … … 602 602 - (BOOL)_accessibilityIsInTableCell 603 603 { 604 return Accessibility::findAncestor<A ccessibilityObject>(*m_object, false, [] (const AccessibilityObject& object) {604 return Accessibility::findAncestor<AXCoreObject>(*m_object, false, [] (const AXCoreObject& object) { 605 605 return object.roleValue() == AccessibilityRole::Cell; 606 606 }) != nullptr; … … 609 609 - (AccessibilityObjectWrapper*)_accessibilityFieldsetAncestor 610 610 { 611 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, false, [] (const AccessibilityObject& object) {611 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, [] (const AXCoreObject& object) { 612 612 return object.isFieldset(); 613 613 })) … … 618 618 - (AccessibilityObjectWrapper*)_accessibilityFrameAncestor 619 619 { 620 auto* parent = Accessibility::findAncestor<A ccessibilityObject>(*m_object, false, [] (const AccessibilityObject& object) {620 auto* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, false, [] (const AXCoreObject& object) { 621 621 return object.isWebArea(); 622 622 }); … … 633 633 // Trait information also needs to be gathered from the parents above the object. 634 634 // The parentObject is needed instead of the unignoredParentObject, because a table might be ignored, but information still needs to be gathered from it. 635 for ( AccessibilityObject* parent = m_object->parentObject(); parent != nil; parent = parent->parentObject()) {635 for (auto* parent = m_object->parentObject(); parent != nil; parent = parent->parentObject()) { 636 636 AccessibilityRole parentRole = parent->roleValue(); 637 637 if (parentRole == AccessibilityRole::WebArea) … … 1183 1183 { 1184 1184 // Find if this element is in a table cell. 1185 if (A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, true, [] (const AccessibilityObject& object) {1185 if (AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, true, [] (const AXCoreObject& object) { 1186 1186 return object.isTableCell(); 1187 1187 })) … … 1193 1193 { 1194 1194 // Find if the parent table for the table cell. 1195 if (A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*m_object, true, [] (const AccessibilityObject& object) {1195 if (AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, true, [] (const AXCoreObject& object) { 1196 1196 return is<AccessibilityTable>(object) && downcast<AccessibilityTable>(object).isExposableThroughAccessibility(); 1197 1197 })) … … 1205 1205 return nil; 1206 1206 1207 A ccessibilityObject* titleElement = m_object->titleUIElement();1207 AXCoreObject* titleElement = m_object->titleUIElement(); 1208 1208 if (titleElement) 1209 1209 return titleElement->wrapper(); … … 1399 1399 return nil; 1400 1400 1401 if (auto* parent = Accessibility::findAncestor<A ccessibilityObject>(*m_object, true, [] (const AccessibilityObject& object) {1401 if (auto* parent = Accessibility::findAncestor<AXCoreObject>(*m_object, true, [] (const AXCoreObject& object) { 1402 1402 return object.supportsDatetimeAttribute(); 1403 1403 })) … … 1970 1970 } 1971 1971 1972 - (A ccessibilityObject*)detailParentForSummaryObject:(AccessibilityObject*)object1972 - (AXCoreObject*)detailParentForSummaryObject:(AXCoreObject*)object 1973 1973 { 1974 1974 // Use this to check if an object is the child of a summary object. 1975 1975 // And return the summary's parent, which is the expandable details object. 1976 if (const A ccessibilityObject* summary = Accessibility::findAncestor<AccessibilityObject>(*object, true, [] (const AccessibilityObject& object) {1976 if (const AXCoreObject* summary = Accessibility::findAncestor<AXCoreObject>(*object, true, [] (const AXCoreObject& object) { 1977 1977 return object.hasTagName(summaryTag); 1978 1978 })) … … 1981 1981 } 1982 1982 1983 - (A ccessibilityObject*)detailParentForObject:(AccessibilityObject*)object1983 - (AXCoreObject*)detailParentForObject:(AccessibilityObject*)object 1984 1984 { 1985 1985 // Use this to check if an object is inside a details object. 1986 if ( const AccessibilityObject* details = Accessibility::findAncestor<AccessibilityObject>(*object, true, [] (const AccessibilityObject& object) {1986 if (AXCoreObject* details = Accessibility::findAncestor<AXCoreObject>(*object, true, [] (const AXCoreObject& object) { 1987 1987 return object.hasTagName(detailsTag); 1988 1988 })) 1989 return const_cast<AccessibilityObject*>(details);1989 return details; 1990 1990 return nil; 1991 1991 } 1992 1992 1993 - (A ccessibilityObject*)treeItemParentForObject:(AccessibilityObject*)object1993 - (AXCoreObject*)treeItemParentForObject:(AXCoreObject*)object 1994 1994 { 1995 1995 // Use this to check if an object is inside a treeitem object. 1996 if (A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*object, true, [] (const AccessibilityObject& object) {1996 if (AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*object, true, [] (const AXCoreObject& object) { 1997 1997 return object.roleValue() == AccessibilityRole::TreeItem; 1998 1998 })) … … 2208 2208 // Add code context if this node is within a <code> block. 2209 2209 AccessibilityObject* axObject = renderer->document().axObjectCache()->getOrCreate(renderer); 2210 auto matchFunc = [] (const A ccessibilityObject& object) {2210 auto matchFunc = [] (const AXCoreObject& object) { 2211 2211 return object.node() && object.node()->hasTagName(codeTag); 2212 2212 }; 2213 2213 2214 if (const A ccessibilityObject* parent = Accessibility::findAncestor<AccessibilityObject>(*axObject, true, WTFMove(matchFunc)))2214 if (const AXCoreObject* parent = Accessibility::findAncestor<AXCoreObject>(*axObject, true, WTFMove(matchFunc))) 2215 2215 [attrString addAttribute:UIAccessibilityTextAttributeContext value:UIAccessibilityTextualContextSourceCode range:range]; 2216 2216 } … … 2283 2283 continue; 2284 2284 2285 String listMarkerText = m_object->listMarkerTextForNodeAndPosition(&node, VisiblePosition(it.range()->startPosition()));2285 String listMarkerText = AccessibilityObject::listMarkerTextForNodeAndPosition(&node, VisiblePosition(it.range()->startPosition())); 2286 2286 2287 2287 if (!listMarkerText.isEmpty()) … … 2292 2292 else 2293 2293 { 2294 String listMarkerText = m_object->listMarkerTextForNodeAndPosition(&node, VisiblePosition(it.range()->startPosition()));2294 String listMarkerText = AccessibilityObject::listMarkerTextForNodeAndPosition(&node, VisiblePosition(it.range()->startPosition())); 2295 2295 2296 2296 if (!listMarkerText.isEmpty()) { … … 2942 2942 // Since details element is ignored on iOS, we should expose the expanded status on its 2943 2943 // summary's accessible children. 2944 if (A ccessibilityObject* detailParent = [self detailParentForSummaryObject:m_object])2944 if (AXCoreObject* detailParent = [self detailParentForSummaryObject:m_object]) 2945 2945 return detailParent->supportsExpanded(); 2946 2946 2947 if (A ccessibilityObject* treeItemParent = [self treeItemParentForObject:m_object])2947 if (AXCoreObject* treeItemParent = [self treeItemParentForObject:m_object]) 2948 2948 return treeItemParent->supportsExpanded(); 2949 2949 … … 2958 2958 // Since details element is ignored on iOS, we should expose the expanded status on its 2959 2959 // summary's accessible children. 2960 if (A ccessibilityObject* detailParent = [self detailParentForSummaryObject:m_object])2960 if (AXCoreObject* detailParent = [self detailParentForSummaryObject:m_object]) 2961 2961 return detailParent->isExpanded(); 2962 2962 2963 if (A ccessibilityObject* treeItemParent = [self treeItemParentForObject:m_object])2963 if (AXCoreObject* treeItemParent = [self treeItemParentForObject:m_object]) 2964 2964 return treeItemParent->isExpanded(); 2965 2965 -
trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
r251171 r251974 115 115 } 116 116 117 void AXIsolatedTree::setRoot NodeID(AXID axID)117 void AXIsolatedTree::setRoot(Ref<AXIsolatedTreeNode>& root) 118 118 { 119 119 LockHolder locker { m_changeLogLock }; 120 m_pendingRootNodeID = axID; 120 m_rootNodeID = root->objectID(); 121 m_readerThreadNodeMap.add(root->objectID(), WTFMove(root)); 121 122 } 122 123 … … 151 152 // We don't clear the pending IDs beacause if the next round of updates does not modify them, then they stay the same 152 153 // value without extra bookkeeping. 153 m_rootNodeID = m_pendingRootNodeID;154 154 m_focusedNodeID = m_pendingFocusedNodeID; 155 155 156 156 for (auto& item : appendCopy) 157 m_readerThreadNodeMap.add(item-> identifier(), WTFMove(item));157 m_readerThreadNodeMap.add(item->objectID(), WTFMove(item)); 158 158 159 159 for (auto item : removeCopy) -
trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
r251171 r251974 58 58 void removeNode(AXID); 59 59 60 void setRoot NodeID(AXID);60 void setRoot(Ref<AXIsolatedTreeNode>&); 61 61 void setFocusedNodeID(AXID); 62 62 … … 79 79 Vector<AXID> m_pendingRemovals; 80 80 AXID m_pendingFocusedNodeID; 81 AXID m_pendingRootNodeID;82 81 Lock m_changeLogLock; 83 82 -
trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp
r251798 r251974 31 31 #include "AccessibilityObject.h" 32 32 33 extern "C" bool _AXUIElementRequestServicedBySecondaryAXThread(void); 34 33 35 namespace WebCore { 34 36 35 AXIsolatedTreeNode::AXIsolatedTreeNode(const A ccessibilityObject& object)36 : m_id entifier(object.axObjectID())37 AXIsolatedTreeNode::AXIsolatedTreeNode(const AXCoreObject& object) 38 : m_id(object.objectID()) 37 39 { 38 40 ASSERT(isMainThread()); … … 43 45 } 44 46 45 Ref<AXIsolatedTreeNode> AXIsolatedTreeNode::create(const A ccessibilityObject& object)47 Ref<AXIsolatedTreeNode> AXIsolatedTreeNode::create(const AXCoreObject& object) 46 48 { 47 49 return adoptRef(*new AXIsolatedTreeNode(object)); … … 50 52 AXIsolatedTreeNode::~AXIsolatedTreeNode() = default; 51 53 52 void AXIsolatedTreeNode::initializeAttributeData(const A ccessibilityObject& object)54 void AXIsolatedTreeNode::initializeAttributeData(const AXCoreObject& object) 53 55 { 54 56 setProperty(AXPropertyName::RoleValue, static_cast<int>(object.roleValue())); … … 83 85 { 84 86 ASSERT(isMainThread()); 85 m_children .append(axID);87 m_childrenIDs.append(axID); 86 88 } 87 89 … … 99 101 } 100 102 103 const AXCoreObject::AccessibilityChildrenVector& AXIsolatedTreeNode::children(bool) 104 { 105 if (_AXUIElementRequestServicedBySecondaryAXThread()) { 106 m_children.clear(); 107 m_children.reserveInitialCapacity(m_childrenIDs.size()); 108 auto tree = this->tree(); 109 for (auto childID : m_childrenIDs) 110 m_children.uncheckedAppend(tree->nodeForID(childID)); 111 } 112 return m_children; 113 } 114 101 115 AXCoreObject* AXIsolatedTreeNode::focusedUIElement() const 102 116 { … … 106 120 } 107 121 108 AXCoreObject* AXIsolatedTreeNode::parentObject InterfaceUnignored() const122 AXCoreObject* AXIsolatedTreeNode::parentObjectUnignored() const 109 123 { 110 124 return tree()->nodeForID(parent()).get(); … … 115 129 if (!relativeFrame().contains(point)) 116 130 return nullptr; 117 for ( auto childID : children()) {131 for (const auto& childID : m_childrenIDs) { 118 132 auto child = tree()->nodeForID(childID); 119 133 ASSERT(child); … … 187 201 } 188 202 203 void AXIsolatedTreeNode::updateBackingStore() 204 { 205 if (_AXUIElementRequestServicedBySecondaryAXThread()) { 206 RELEASE_ASSERT(!isMainThread()); 207 if (auto tree = this->tree()) 208 tree->applyPendingChanges(); 209 } 210 } 211 189 212 } // namespace WebCore 190 213 -
trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.h
r251798 r251974 32 32 #include "FloatRect.h" 33 33 #include "IntPoint.h" 34 #include "Path.h" 34 35 #include <wtf/Forward.h> 35 36 #include <wtf/HashMap.h> … … 44 45 45 46 class AXIsolatedTree; 46 class AccessibilityObject; 47 48 class AXIsolatedTreeNode final : public AXCoreObject, public ThreadSafeRefCounted<AXIsolatedTreeNode> { 49 47 48 class AXIsolatedTreeNode final : public AXCoreObject { 50 49 public: 50 static Ref<AXIsolatedTreeNode> create(const AXCoreObject&); 51 ~AXIsolatedTreeNode(); 52 53 void setObjectID(AXID id) override { m_id = id; } 54 AXID objectID() const override { return m_id; } 55 void init() override { } 56 57 void detach(AccessibilityDetachmentType, AXObjectCache* = nullptr) override { } 58 bool isDetached() const override { return false; } 59 60 private: 61 bool isAccessibilityObject() const override { return false; } 62 bool isAccessibilityNodeObject() const override { return false; } 63 bool isAccessibilityRenderObject() const override { return false; } 64 bool isAccessibilityScrollbar() const override { return false; } 65 bool isAccessibilityScrollView() const override { return false; } 66 bool isAccessibilitySVGRoot() const override { return false; } 67 bool isAccessibilitySVGElement() const override { return false; } 68 69 bool containsText(String *) const override { return false; } 70 bool isAttachmentElement() const override { return false; } 71 bool isHeading() const override { return false; } 72 bool isLink() const override { return boolAttributeValue(AXPropertyName::IsLink); } 73 bool isImage() const override { return boolAttributeValue(AXPropertyName::IsImage); } 74 bool isImageMap() const override { return false; } 75 bool isNativeImage() const override { return false; } 76 bool isImageButton() const override { return false; } 77 bool isPasswordField() const override { return false; } 78 bool isContainedByPasswordField() const override { return false; } 79 AXCoreObject* passwordFieldOrContainingPasswordField() override { return nullptr; } 80 bool isNativeTextControl() const override { return false; } 81 bool isSearchField() const override { return false; } 82 bool isWebArea() const override { return false; } 83 bool isCheckbox() const override { return false; } 84 bool isRadioButton() const override { return false; } 85 bool isNativeListBox() const override { return false; } 86 bool isListBox() const override { return false; } 87 bool isListBoxOption() const override { return false; } 88 bool isAttachment() const override { return boolAttributeValue(AXPropertyName::IsAttachment); } 89 bool isMediaTimeline() const override { return false; } 90 bool isMenuRelated() const override { return false; } 91 bool isMenu() const override { return false; } 92 bool isMenuBar() const override { return false; } 93 bool isMenuButton() const override { return false; } 94 bool isMenuItem() const override { return false; } 95 bool isFileUploadButton() const override { return boolAttributeValue(AXPropertyName::IsFileUploadButton); } 96 bool isInputImage() const override { return false; } 97 bool isProgressIndicator() const override { return false; } 98 bool isSlider() const override { return false; } 99 bool isSliderThumb() const override { return false; } 100 bool isInputSlider() const override { return false; } 101 bool isControl() const override { return false; } 102 bool isLabel() const override { return false; } 103 bool isList() const override { return false; } 104 bool isTable() const override { return false; } 105 bool isDataTable() const override { return false; } 106 bool isTableRow() const override { return false; } 107 bool isTableColumn() const override { return false; } 108 bool isTableCell() const override { return false; } 109 bool isFieldset() const override { return false; } 110 bool isGroup() const override { return false; } 111 bool isARIATreeGridRow() const override { return false; } 112 bool isImageMapLink() const override { return boolAttributeValue(AXPropertyName::IsImageMapLink); } 113 bool isMenuList() const override { return false; } 114 bool isMenuListPopup() const override { return false; } 115 bool isMenuListOption() const override { return false; } 116 bool isSpinButton() const override { return false; } 117 bool isNativeSpinButton() const override { return false; } 118 bool isSpinButtonPart() const override { return false; } 119 bool isMockObject() const override { return false; } 120 bool isMediaControlLabel() const override { return boolAttributeValue(AXPropertyName::IsMediaControlLabel); } 121 bool isMediaObject() const override { return false; } 122 bool isSwitch() const override { return false; } 123 bool isToggleButton() const override { return false; } 124 bool isTextControl() const override { return false; } 125 bool isARIATextControl() const override { return false; } 126 bool isNonNativeTextControl() const override { return false; } 127 bool isTabList() const override { return false; } 128 bool isTabItem() const override { return false; } 129 bool isRadioGroup() const override { return false; } 130 bool isComboBox() const override { return false; } 131 bool isTree() const override { return boolAttributeValue(AXPropertyName::IsTree); } 132 bool isTreeGrid() const override { return false; } 133 bool isTreeItem() const override { return boolAttributeValue(AXPropertyName::IsTreeItem); } 134 bool isScrollbar() const override { return boolAttributeValue(AXPropertyName::IsScrollbar); } 135 bool isButton() const override { return false; } 136 bool isListItem() const override { return false; } 137 bool isCheckboxOrRadio() const override { return false; } 138 bool isScrollView() const override { return false; } 139 bool isCanvas() const override { return false; } 140 bool isPopUpButton() const override { return false; } 141 bool isBlockquote() const override { return false; } 142 bool isLandmark() const override { return false; } 143 bool isColorWell() const override { return false; } 144 bool isRangeControl() const override { return false; } 145 bool isMeter() const override { return false; } 146 bool isSplitter() const override { return false; } 147 bool isToolbar() const override { return false; } 148 bool isStyleFormatGroup() const override { return false; } 149 bool isFigureElement() const override { return false; } 150 bool isKeyboardFocusable() const override { return false; } 151 bool isSummary() const override { return false; } 152 bool isOutput() const override { return false; } 153 154 bool isChecked() const override { return false; } 155 bool isEnabled() const override { return false; } 156 bool isSelected() const override { return false; } 157 bool isFocused() const override { return false; } 158 bool isHovered() const override { return false; } 159 bool isIndeterminate() const override { return false; } 160 bool isLoaded() const override { return false; } 161 bool isMultiSelectable() const override { return false; } 162 bool isOnScreen() const override { return false; } 163 bool isOffScreen() const override { return !isOnScreen(); } 164 bool isPressed() const override { return false; } 165 bool isUnvisited() const override { return false; } 166 bool isVisited() const override { return false; } 167 bool isRequired() const override { return false; } 168 bool supportsRequiredAttribute() const override { return false; } 169 bool isLinked() const override { return false; } 170 bool isExpanded() const override { return false; } 171 bool isVisible() const override { return false; } 172 bool isCollapsed() const override { return false; } 173 void setIsExpanded(bool) override { } 174 FloatRect relativeFrame() const override { return rectAttributeValue(AXPropertyName::RelativeFrame); } 175 FloatRect convertFrameToSpace(const FloatRect&, AccessibilityConversionSpace) const override { return FloatRect(); } 176 177 bool isSelectedOptionActive() const override { return false; } 178 179 bool hasBoldFont() const override { return false; } 180 bool hasItalicFont() const override { return false; } 181 bool hasMisspelling() const override { return false; } 182 RefPtr<Range> getMisspellingRange(RefPtr<Range> const&, AccessibilitySearchDirection) const override { return nullptr; } 183 bool hasPlainText() const override { return false; } 184 bool hasSameFont(RenderObject*) const override { return false; } 185 bool hasSameFontColor(RenderObject*) const override { return false; } 186 bool hasSameStyle(RenderObject*) const override { return false; } 187 bool isStaticText() const override { return false; } 188 bool hasUnderline() const override { return false; } 189 bool hasHighlighting() const override { return false; } 190 191 bool supportsDatetimeAttribute() const override { return false; } 192 const AtomString& datetimeAttributeValue() const override { return nullAtom(); } 193 194 bool canSetFocusAttribute() const override { return false; } 195 bool canSetTextRangeAttributes() const override { return false; } 196 bool canSetValueAttribute() const override { return false; } 197 bool canSetNumericValue() const override { return false; } 198 bool canSetSelectedAttribute() const override { return false; } 199 bool canSetSelectedChildrenAttribute() const override { return false; } 200 bool canSetExpandedAttribute() const override { return false; } 201 202 Element* element() const override { return nullptr; } 203 Node* node() const override { return nullptr; } 204 RenderObject* renderer() const override { return nullptr; } 205 206 bool accessibilityIsIgnored() const override { return boolAttributeValue(AXPropertyName::IsAccessibilityIgnored); } 207 AccessibilityObjectInclusion defaultObjectInclusion() const override { return AccessibilityObjectInclusion::DefaultBehavior; } 208 bool accessibilityIsIgnoredByDefault() const override { return false; } 209 210 bool isShowingValidationMessage() const override { return false; } 211 String validationMessage() const override { return String(); } 212 213 unsigned blockquoteLevel() const override { return 0; } 214 int headingLevel() const override { return 0; } 215 int tableLevel() const override { return 0; } 216 AccessibilityButtonState checkboxOrRadioValue() const override { return AccessibilityButtonState::Off; } 217 String valueDescription() const override { return String(); } 218 float valueForRange() const override { return 0; } 219 float maxValueForRange() const override { return 0; } 220 float minValueForRange() const override { return 0; } 221 float stepValueForRange() const override { return 0; } 222 AXCoreObject* selectedRadioButton() override { return nullptr; } 223 AXCoreObject* selectedTabItem() override { return nullptr; } 224 AXCoreObject* selectedListItem() override { return nullptr; } 225 int layoutCount() const override { return 0; } 226 double estimatedLoadingProgress() const override { return 0; } 227 228 bool supportsARIAOwns() const override { return false; } 229 bool isActiveDescendantOfFocusedContainer() const override { return false; } 230 void ariaActiveDescendantReferencingElements(AccessibilityChildrenVector&) const override { } 231 void ariaControlsElements(AccessibilityChildrenVector&) const override { } 232 void ariaControlsReferencingElements(AccessibilityChildrenVector&) const override { } 233 void ariaDescribedByElements(AccessibilityChildrenVector&) const override { } 234 void ariaDescribedByReferencingElements(AccessibilityChildrenVector&) const override { } 235 void ariaDetailsElements(AccessibilityChildrenVector&) const override { } 236 void ariaDetailsReferencingElements(AccessibilityChildrenVector&) const override { } 237 void ariaErrorMessageElements(AccessibilityChildrenVector&) const override { } 238 void ariaErrorMessageReferencingElements(AccessibilityChildrenVector&) const override { } 239 void ariaFlowToElements(AccessibilityChildrenVector&) const override { } 240 void ariaFlowToReferencingElements(AccessibilityChildrenVector&) const override { } 241 void ariaLabelledByElements(AccessibilityChildrenVector&) const override { } 242 void ariaLabelledByReferencingElements(AccessibilityChildrenVector&) const override { } 243 void ariaOwnsElements(AccessibilityChildrenVector&) const override { } 244 void ariaOwnsReferencingElements(AccessibilityChildrenVector&) const override { } 245 246 bool hasPopup() const override { return false; } 247 String popupValue() const override { return String(); } 248 bool hasDatalist() const override { return false; } 249 bool supportsHasPopup() const override { return false; } 250 bool pressedIsPresent() const override { return false; } 251 bool ariaIsMultiline() const override { return false; } 252 String invalidStatus() const override { return String(); } 253 bool supportsPressed() const override { return false; } 254 bool supportsExpanded() const override { return false; } 255 bool supportsChecked() const override { return false; } 256 AccessibilitySortDirection sortDirection() const override { return AccessibilitySortDirection::None; } 257 bool canvasHasFallbackContent() const override { return false; } 258 bool supportsRangeValue() const override { return false; } 259 const AtomString& identifierAttribute() const override { return nullAtom(); } 260 const AtomString& linkRelValue() const override { return nullAtom(); } 261 void classList(Vector<String>&) const override { } 262 String roleDescription() const override { return String(); } 263 AccessibilityCurrentState currentState() const override { return AccessibilityCurrentState::False; } 264 String currentValue() const override { return String(); } 265 bool supportsCurrent() const override { return false; } 266 const String keyShortcutsValue() const override { return String(); } 267 268 // This function checks if the object should be ignored when there's a modal dialog displayed. 269 bool ignoredFromModalPresence() const override { return false; } 270 bool isModalDescendant(Node*) const override { return false; } 271 bool isModalNode() const override { return false; } 272 273 bool supportsSetSize() const override { return false; } 274 bool supportsPosInSet() const override { return false; } 275 int setSize() const override { return 0; } 276 int posInSet() const override { return 0; } 277 278 bool supportsARIADropping() const override { return false; } 279 bool supportsARIADragging() const override { return false; } 280 bool isARIAGrabbed() override { return false; } 281 void setARIAGrabbed(bool) override { } 282 Vector<String> determineARIADropEffects() override { return Vector<String>(); } 283 284 AXCoreObject* accessibilityHitTest(const IntPoint&) const override; 285 AXCoreObject* elementAccessibilityHitTest(const IntPoint&) const override { return nullptr; } 286 287 AXCoreObject* focusedUIElement() const override; 288 289 AXCoreObject* firstChild() const override { return nullptr; } 290 AXCoreObject* lastChild() const override { return nullptr; } 291 AXCoreObject* previousSibling() const override { return nullptr; } 292 AXCoreObject* nextSibling() const override { return nullptr; } 293 AXCoreObject* nextSiblingUnignored(int) const override { return nullptr; } 294 AXCoreObject* previousSiblingUnignored(int) const override { return nullptr; } 295 AXCoreObject* parentObject() const override { return nullptr; } 296 AXCoreObject* parentObjectUnignored() const override; 297 AXCoreObject* parentObjectIfExists() const override { return nullptr; } 298 void findMatchingObjects(AccessibilitySearchCriteria*, AccessibilityChildrenVector&) override { } 299 bool isDescendantOfBarrenParent() const override { return false; } 300 bool isDescendantOfRole(AccessibilityRole) const override { return false; } 301 302 Vector<RefPtr<Range>> findTextRanges(AccessibilitySearchTextCriteria const&) const override { return Vector<RefPtr<Range>>(); } 303 Vector<String> performTextOperation(AccessibilityTextOperation const&) override { return Vector<String>(); } 304 305 AXCoreObject* observableObject() const override { return nullptr; } 306 void linkedUIElements(AccessibilityChildrenVector&) const override { } 307 AXCoreObject* titleUIElement() const override { return nullptr; } 308 bool exposesTitleUIElement() const override { return false; } 309 AXCoreObject* correspondingLabelForControlElement() const override { return nullptr; } 310 AXCoreObject* correspondingControlForLabelElement() const override { return nullptr; } 311 AXCoreObject* scrollBar(AccessibilityOrientation) override { return nullptr; } 312 313 AccessibilityRole ariaRoleAttribute() const override { return AccessibilityRole::Unknown; } 314 bool isPresentationalChildOfAriaRole() const override { return false; } 315 bool ariaRoleHasPresentationalChildren() const override { return false; } 316 bool inheritsPresentationalRole() const override { return false; } 317 318 void accessibilityText(Vector<AccessibilityText>&) const override { } 319 String computedLabel() override { return String(); } 320 321 void setAccessibleName(const AtomString&) override { } 322 bool hasAttributesRequiredForInclusion() const override { return false; } 323 324 String accessibilityDescription() const override { return String(); } 325 String title() const override { return String(); } 326 String helpText() const override { return String(); } 327 328 bool isARIAStaticText() const override { return false; } 329 String stringValue() const override { return String(); } 330 String textUnderElement(AccessibilityTextUnderElementMode = AccessibilityTextUnderElementMode()) const override { return String(); } 331 String text() const override { return String(); } 332 int textLength() const override { return 0; } 333 String ariaLabeledByAttribute() const override { return String(); } 334 String ariaDescribedByAttribute() const override { return String(); } 335 const String placeholderValue() const override { return String(); } 336 bool accessibleNameDerivesFromContent() const override { return false; } 337 338 String expandedTextValue() const override { return String(); } 339 bool supportsExpandedTextValue() const override { return false; } 340 341 void elementsFromAttribute(Vector<Element*>&, const QualifiedName&) const override { } 342 343 void colorValue(int&, int&, int&) const override { } 344 345 AccessibilityRole roleValue() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::RoleValue)); } 346 347 AXObjectCache* axObjectCache() const override { return nullptr; } 348 349 Element* anchorElement() const override { return nullptr; } 350 bool supportsPressAction() const override { return false; } 351 Element* actionElement() const override { return nullptr; } 352 LayoutRect boundingBoxRect() const override { return LayoutRect(); } 353 IntRect pixelSnappedBoundingBoxRect() const override { return IntRect(); } 354 LayoutRect elementRect() const override { return LayoutRect(); } 355 LayoutSize size() const override { return LayoutSize(); } 356 IntPoint clickPoint() override { return IntPoint(); } 357 Path elementPath() const override { return Path(); } 358 bool supportsPath() const override { return false; } 359 360 TextIteratorBehavior textIteratorBehaviorForTextRange() const override { return TextIteratorDefaultBehavior; } 361 PlainTextRange selectedTextRange() const override { return PlainTextRange(); } 362 unsigned selectionStart() const override { return 0; } 363 unsigned selectionEnd() const override { return 0; } 364 365 URL url() const override { return URL(); } 366 VisibleSelection selection() const override { return VisibleSelection(); } 367 String selectedText() const override { return String(); } 368 const AtomString& accessKey() const override { return nullAtom(); } 369 const String& actionVerb() const override { return nullAtom(); } 370 Widget* widget() const override { return nullptr; } 371 Widget* widgetForAttachmentView() const override { return nullptr; } 372 Page* page() const override { return nullptr; } 373 Document* document() const override { return nullptr; } 374 FrameView* documentFrameView() const override { return nullptr; } 375 Frame* frame() const override { return nullptr; } 376 Frame* mainFrame() const override { return nullptr; } 377 Document* topDocument() const override { return nullptr; } 378 ScrollView* scrollViewAncestor() const override { return nullptr; } 379 String language() const override { return String(); } 380 unsigned hierarchicalLevel() const override { return 0; } 381 382 void setFocused(bool) override { } 383 void setSelectedText(const String&) override { } 384 void setSelectedTextRange(const PlainTextRange&) override { } 385 void setValue(const String&) override { } 386 bool replaceTextInRange(const String&, const PlainTextRange&) override { return false; } 387 bool insertText(const String&) override { return false; } 388 389 void setValue(float) override { } 390 void setSelected(bool) override { } 391 void setSelectedRows(AccessibilityChildrenVector&) override { } 392 393 void makeRangeVisible(const PlainTextRange&) override { } 394 bool press() override { return false; } 395 bool performDefaultAction() override { return false; } 396 397 AccessibilityOrientation orientation() const override { return AccessibilityOrientation::Undefined; } 398 void increment() override { } 399 void decrement() override { } 400 401 void childrenChanged() override { } 402 void textChanged() override { } 403 void updateAccessibilityRole() override { } 404 const AccessibilityChildrenVector& children(bool updateChildrenIfNeeded = true) override; 405 void addChildren() override { } 406 void addChild(AXCoreObject*) override { } 407 void insertChild(AXCoreObject*, unsigned) override { } 408 409 bool shouldIgnoreAttributeRole() const override { return false; } 410 411 bool canHaveChildren() const override { return false; } 412 bool hasChildren() const override { return false; } 413 void updateChildrenIfNecessary() override { } 414 void setNeedsToUpdateChildren() override { } 415 void setNeedsToUpdateSubtree() override { }; 416 void clearChildren() override { } 417 bool needsToUpdateChildren() const override { return false; } 418 void detachFromParent() override { } 419 bool isDetachedFromParent() override { return false; } 420 421 bool canHaveSelectedChildren() const override { return false; } 422 void selectedChildren(AccessibilityChildrenVector&) override { } 423 void visibleChildren(AccessibilityChildrenVector&) override { } 424 void tabChildren(AccessibilityChildrenVector&) override { } 425 bool shouldFocusActiveDescendant() const override { return false; } 426 AXCoreObject* activeDescendant() const override { return nullptr; } 427 void handleActiveDescendantChanged() override { } 428 void handleAriaExpandedChanged() override { } 429 bool isDescendantOfObject(const AXCoreObject*) const override { return false; } 430 bool isAncestorOfObject(const AXCoreObject*) const override { return false; } 431 AXCoreObject* firstAnonymousBlockChild() const override { return nullptr; } 432 433 bool hasAttribute(const QualifiedName&) const override { return false; } 434 const AtomString& getAttribute(const QualifiedName&) const override { return nullAtom(); } 435 bool hasTagName(const QualifiedName&) const override { return false; } 436 437 VisiblePositionRange visiblePositionRange() const override { return VisiblePositionRange(); } 438 VisiblePositionRange visiblePositionRangeForLine(unsigned) const override { return VisiblePositionRange(); } 439 RefPtr<Range> elementRange() const override { return nullptr; } 440 VisiblePositionRange visiblePositionRangeForUnorderedPositions(const VisiblePosition&, const VisiblePosition&) const override { return VisiblePositionRange(); } 441 VisiblePositionRange positionOfLeftWord(const VisiblePosition&) const override { return VisiblePositionRange(); } 442 VisiblePositionRange positionOfRightWord(const VisiblePosition&) const override { return VisiblePositionRange(); } 443 VisiblePositionRange leftLineVisiblePositionRange(const VisiblePosition&) const override { return VisiblePositionRange(); } 444 VisiblePositionRange rightLineVisiblePositionRange(const VisiblePosition&) const override { return VisiblePositionRange(); } 445 VisiblePositionRange sentenceForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); } 446 VisiblePositionRange paragraphForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); } 447 VisiblePositionRange styleRangeForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); } 448 VisiblePositionRange visiblePositionRangeForRange(const PlainTextRange&) const override { return VisiblePositionRange(); } 449 VisiblePositionRange lineRangeForPosition(const VisiblePosition&) const override { return VisiblePositionRange(); } 450 451 RefPtr<Range> rangeForPlainTextRange(const PlainTextRange&) const override { return nullptr; } 452 453 String stringForRange(RefPtr<Range>) const override { return String(); } 454 IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const override { return IntRect(); } 455 IntRect boundsForRange(const RefPtr<Range>) const override { return IntRect(); } 456 int lengthForVisiblePositionRange(const VisiblePositionRange&) const override { return 0; } 457 void setSelectedVisiblePositionRange(const VisiblePositionRange&) const override { } 458 459 VisiblePosition visiblePositionForBounds(const IntRect&, AccessibilityVisiblePositionForBounds) const override { return VisiblePosition(); } 460 VisiblePosition visiblePositionForPoint(const IntPoint&) const override { return VisiblePosition(); } 461 VisiblePosition nextVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); } 462 VisiblePosition previousVisiblePosition(const VisiblePosition&) const override { return VisiblePosition(); } 463 VisiblePosition nextWordEnd(const VisiblePosition&) const override { return VisiblePosition(); } 464 VisiblePosition previousWordStart(const VisiblePosition&) const override { return VisiblePosition(); } 465 VisiblePosition nextLineEndPosition(const VisiblePosition&) const override { return VisiblePosition(); } 466 VisiblePosition previousLineStartPosition(const VisiblePosition&) const override { return VisiblePosition(); } 467 VisiblePosition nextSentenceEndPosition(const VisiblePosition&) const override { return VisiblePosition(); } 468 VisiblePosition previousSentenceStartPosition(const VisiblePosition&) const override { return VisiblePosition(); } 469 VisiblePosition nextParagraphEndPosition(const VisiblePosition&) const override { return VisiblePosition(); } 470 VisiblePosition previousParagraphStartPosition(const VisiblePosition&) const override { return VisiblePosition(); } 471 VisiblePosition visiblePositionForIndex(unsigned, bool /*lastIndexOK */) const override { return VisiblePosition(); } 472 473 VisiblePosition visiblePositionForIndex(int) const override { return VisiblePosition(); } 474 int indexForVisiblePosition(const VisiblePosition&) const override { return 0; } 475 476 AXCoreObject* accessibilityObjectForPosition(const VisiblePosition&) const override { return nullptr; } 477 int lineForPosition(const VisiblePosition&) const override { return 0; } 478 PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const override { return PlainTextRange(); } 479 int index(const VisiblePosition&) const override { return 0; } 480 481 void lineBreaks(Vector<int>&) const override { } 482 PlainTextRange doAXRangeForLine(unsigned) const override { return PlainTextRange(); } 483 PlainTextRange doAXRangeForPosition(const IntPoint&) const override { return PlainTextRange(); } 484 PlainTextRange doAXRangeForIndex(unsigned) const override { return PlainTextRange(); } 485 PlainTextRange doAXStyleRangeForIndex(unsigned) const override { return PlainTextRange(); } 486 487 String doAXStringForRange(const PlainTextRange&) const override { return String(); } 488 IntRect doAXBoundsForRange(const PlainTextRange&) const override { return IntRect(); } 489 IntRect doAXBoundsForRangeUsingCharacterOffset(const PlainTextRange&) const override { return IntRect(); } 490 491 unsigned doAXLineForIndex(unsigned) override { return 0; } 492 493 String computedRoleString() const override { return String(); } 494 495 // MSAA 496 String stringValueForMSAA() const override { return String(); } 497 String stringRoleForMSAA() const override { return String(); } 498 String nameForMSAA() const override { return String(); } 499 String descriptionForMSAA() const override { return String(); } 500 AccessibilityRole roleValueForMSAA() const override { return AccessibilityRole::Unknown; } 501 502 String passwordFieldValue() const override { return String(); } 503 bool isValueAutofilled() const override { return false; } 504 bool isValueAutofillAvailable() const override { return false; } 505 AutoFillButtonType valueAutofillButtonType() const override { return AutoFillButtonType::None; } 506 507 void ariaTreeRows(AccessibilityChildrenVector&) override { } 508 void ariaTreeItemDisclosedRows(AccessibilityChildrenVector&) override { } 509 void ariaTreeItemContent(AccessibilityChildrenVector&) override { } 510 511 bool supportsLiveRegion(bool = true) const override { return false; } 512 bool isInsideLiveRegion(bool = true) const override { return false; } 513 AXCoreObject* liveRegionAncestor(bool = true) const override { return nullptr; } 514 const String liveRegionStatus() const override { return String(); } 515 const String liveRegionRelevant() const override { return String(); } 516 bool liveRegionAtomic() const override { return false; } 517 bool isBusy() const override { return false; } 518 519 bool hasContentEditableAttributeSet() const override { return false; } 520 521 bool supportsReadOnly() const override { return false; } 522 String readOnlyValue() const override { return String(); } 523 524 bool supportsAutoComplete() const override { return false; } 525 String autoCompleteValue() const override { return String(); } 526 527 bool supportsARIAAttributes() const override { return false; } 528 529 OptionSet<SpeakAs> speakAsProperty() const override { return OptionSet<SpeakAs>(); } 530 531 void scrollToMakeVisible() const override { } 532 void scrollToMakeVisibleWithSubFocus(const IntRect&) const override { } 533 void scrollToGlobalPoint(const IntPoint&) const override { } 534 535 bool scrollByPage(ScrollByPageDirection) const override { return false; } 536 IntPoint scrollPosition() const override { return IntPoint(); } 537 IntSize scrollContentsSize() const override { return IntSize(); } 538 IntRect scrollVisibleContentRect() const override { return IntRect(); } 539 void scrollToMakeVisible(const ScrollRectToVisibleOptions&) const override { } 540 541 bool lastKnownIsIgnoredValue() override { return false; } 542 void setLastKnownIsIgnoredValue(bool) override { } 543 544 void notifyIfIgnoredValueChanged() override { } 545 546 bool isMathElement() const override { return false; } 547 bool isMathFraction() const override { return false; } 548 bool isMathFenced() const override { return false; } 549 bool isMathSubscriptSuperscript() const override { return false; } 550 bool isMathRow() const override { return false; } 551 bool isMathUnderOver() const override { return false; } 552 bool isMathRoot() const override { return false; } 553 bool isMathSquareRoot() const override { return false; } 554 bool isMathText() const override { return false; } 555 bool isMathNumber() const override { return false; } 556 bool isMathOperator() const override { return false; } 557 bool isMathFenceOperator() const override { return false; } 558 bool isMathSeparatorOperator() const override { return false; } 559 bool isMathIdentifier() const override { return false; } 560 bool isMathTable() const override { return false; } 561 bool isMathTableRow() const override { return false; } 562 bool isMathTableCell() const override { return false; } 563 bool isMathMultiscript() const override { return false; } 564 bool isMathToken() const override { return false; } 565 bool isMathScriptObject(AccessibilityMathScriptObjectType) const override { return false; } 566 bool isMathMultiscriptObject(AccessibilityMathMultiscriptObjectType) const override { return false; } 567 568 AXCoreObject* mathRadicandObject() override { return nullptr; } 569 AXCoreObject* mathRootIndexObject() override { return nullptr; } 570 571 AXCoreObject* mathUnderObject() override { return nullptr; } 572 AXCoreObject* mathOverObject() override { return nullptr; } 573 574 AXCoreObject* mathNumeratorObject() override { return nullptr; } 575 AXCoreObject* mathDenominatorObject() override { return nullptr; } 576 577 AXCoreObject* mathBaseObject() override { return nullptr; } 578 AXCoreObject* mathSubscriptObject() override { return nullptr; } 579 AXCoreObject* mathSuperscriptObject() override { return nullptr; } 580 581 String mathFencedOpenString() const override { return String(); } 582 String mathFencedCloseString() const override { return String(); } 583 int mathLineThickness() const override { return 0; } 584 bool isAnonymousMathOperator() const override { return false; } 585 586 void mathPrescripts(AccessibilityMathMultiscriptPairs&) override { } 587 void mathPostscripts(AccessibilityMathMultiscriptPairs&) override { } 588 589 bool isAXHidden() const override { return false; } 590 bool isDOMHidden() const override { return false; } 591 bool isHidden() const override { return false; } 592 593 AccessibilityObjectWrapper* wrapper() const override { return m_wrapper.get(); } 594 void setWrapper(AccessibilityObjectWrapper* wrapper) override { m_wrapper = wrapper; } 595 596 void overrideAttachmentParent(AXCoreObject*) override { } 597 598 bool accessibilityIgnoreAttachment() const override { return false; } 599 AccessibilityObjectInclusion accessibilityPlatformIncludesObject() const override { return AccessibilityObjectInclusion::DefaultBehavior; } 600 601 #if PLATFORM(IOS_FAMILY) 602 int accessibilityPasswordFieldLength() override { return 0; } 603 bool hasTouchEventListener() const override { return false; } 604 bool isInputTypePopupButton() const override { return false; } 605 #endif 606 607 void updateBackingStore() override; 608 609 #if PLATFORM(COCOA) 610 bool preventKeyboardDOMEventDispatch() const override { return false; } 611 void setPreventKeyboardDOMEventDispatch(bool) override { } 612 bool fileUploadButtonReturnsValueInTitle() const override { return false; } 613 String speechHintAttributeValue() const override { return stringAttributeValue(AXPropertyName::SpeechHint); } 614 String descriptionAttributeValue() const override { return stringAttributeValue(AXPropertyName::Description); } 615 String helpTextAttributeValue() const override { return stringAttributeValue(AXPropertyName::HelpText); } 616 String titleAttributeValue() const override { return stringAttributeValue(AXPropertyName::Title); } 617 #endif 618 619 #if PLATFORM(COCOA) && !PLATFORM(IOS_FAMILY) 620 bool caretBrowsingEnabled() const override { return false; } 621 void setCaretBrowsingEnabled(bool) override { } 622 #endif 623 624 AXCoreObject* focusableAncestor() override { return nullptr; } 625 AXCoreObject* editableAncestor() override { return nullptr; } 626 AXCoreObject* highestEditableAncestor() override { return nullptr; } 627 628 const AccessibilityScrollView* ancestorAccessibilityScrollView(bool) const override { return nullptr; } 629 630 void setIsIgnoredFromParentData(AccessibilityIsIgnoredFromParentData&) override { }; 631 void clearIsIgnoredFromParentData() override { } 632 void setIsIgnoredFromParentDataForChild(AXCoreObject*) override { } 633 634 void setTreeIdentifier(AXIsolatedTreeID); 635 AXIsolatedTree* tree() const; 636 void setParent(AXID); 637 void appendChild(AXID); 638 51 639 enum class AXPropertyName : uint8_t { 52 640 None = 0, … … 69 657 }; 70 658 71 static Ref<AXIsolatedTreeNode> create(const AccessibilityObject&);72 virtual ~AXIsolatedTreeNode();73 74 AXID identifier() const { return m_identifier; }75 76 void setParent(AXID);77 659 AXID parent() const { return m_parent; } 78 660 79 void appendChild(AXID);80 const Vector<AXID>& children() const { return m_children; };81 82 AXIsolatedTree* tree() const;83 661 AXIsolatedTreeID treeIdentifier() const { return m_treeIdentifier; } 84 void setTreeIdentifier(AXIsolatedTreeID); 85 86 #if PLATFORM(COCOA) 87 AccessibilityObjectWrapper* wrapper() const override { return m_wrapper.get(); } 88 void setWrapper(AccessibilityObjectWrapper* wrapper) { m_wrapper = wrapper; } 89 #endif 90 91 protected: 662 92 663 AXIsolatedTreeNode() = default; 93 94 private: 95 AXIsolatedTreeNode(const AccessibilityObject&); 96 void initializeAttributeData(const AccessibilityObject&); 97 98 AXCoreObject* accessibilityHitTest(const IntPoint&) const override; 99 void updateChildrenIfNecessary() override { } 100 101 bool isMediaControlLabel() const override { return boolAttributeValue(AXPropertyName::IsMediaControlLabel); } 102 bool isAttachment() const override { return boolAttributeValue(AXPropertyName::IsAttachment); } 103 AccessibilityRole roleValue() const override { return static_cast<AccessibilityRole>(intAttributeValue(AXPropertyName::RoleValue)); } 104 bool isLink() const override { return boolAttributeValue(AXPropertyName::IsLink); } 105 bool isImageMapLink() const override { return boolAttributeValue(AXPropertyName::IsImageMapLink); } 106 bool isImage() const override { return boolAttributeValue(AXPropertyName::IsImage); } 107 bool isFileUploadButton() const override { return boolAttributeValue(AXPropertyName::IsFileUploadButton); } 108 bool accessibilityIsIgnored() const override { return boolAttributeValue(AXPropertyName::IsAccessibilityIgnored); } 109 AXCoreObject* parentObjectInterfaceUnignored() const override; 110 bool isTree() const override { return boolAttributeValue(AXPropertyName::IsTree); } 111 bool isTreeItem() const override { return boolAttributeValue(AXPropertyName::IsTreeItem); } 112 bool isScrollbar() const override { return boolAttributeValue(AXPropertyName::IsScrollbar); } 113 FloatRect relativeFrame() const override { return rectAttributeValue(AXPropertyName::RelativeFrame); } 114 String speechHintAttributeValue() const override { return stringAttributeValue(AXPropertyName::SpeechHint); } 115 String descriptionAttributeValue() const override { return stringAttributeValue(AXPropertyName::Description); } 116 String helpTextAttributeValue() const override { return stringAttributeValue(AXPropertyName::HelpText); } 117 String titleAttributeValue() const override { return stringAttributeValue(AXPropertyName::Title); } 118 AXCoreObject* focusedUIElement() const override; 664 AXIsolatedTreeNode(const AXCoreObject&); 665 void initializeAttributeData(const AXCoreObject&); 119 666 120 667 using AttributeValueVariant = Variant<std::nullptr_t, String, bool, int, unsigned, double, Optional<FloatRect>>; … … 129 676 130 677 AXID m_parent; 131 AXID m_id entifier;678 AXID m_id; 132 679 bool m_initialized { false }; 133 680 AXIsolatedTreeID m_treeIdentifier; 134 681 RefPtr<AXIsolatedTree> m_cachedTree; 135 Vector<AXID> m_children; 682 Vector<AXID> m_childrenIDs; 683 Vector<RefPtr<AXCoreObject>> m_children; 136 684 137 685 #if PLATFORM(COCOA) -
trunk/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
r251798 r251974 239 239 } 240 240 241 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) 242 void AXObjectCache::associateIsolatedTreeNode(AccessibilityObject& object, AXIsolatedTreeNode& node, AXIsolatedTreeID treeID) 243 { 244 auto wrapper = object.wrapper(); 245 ASSERT(wrapper); 246 wrapper.isolatedTreeIdentifier = treeID; 247 node.setWrapper(wrapper); 248 } 249 #endif 250 251 void AXObjectCache::attachWrapper(AccessibilityObject* obj) 241 void AXObjectCache::attachWrapper(AXCoreObject* obj) 252 242 { 253 243 RetainPtr<WebAccessibilityObjectWrapper> wrapper = adoptNS([[WebAccessibilityObjectWrapper alloc] initWithAccessibilityObject:obj]); -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h
r251798 r251974 52 52 53 53 @interface WebAccessibilityObjectWrapperBase : NSObject { 54 WebCore::A ccessibilityObject* m_object;54 WebCore::AXCoreObject* m_object; 55 55 WebCore::AXID _identifier; 56 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)57 RefPtr<WebCore::AXIsolatedTreeNode> m_isolatedTreeNode;58 #endif59 56 } 60 61 - (id)initWithAccessibilityObject:(WebCore::A ccessibilityObject*)axObject;57 58 - (id)initWithAccessibilityObject:(WebCore::AXCoreObject*)axObject; 62 59 63 60 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) … … 70 67 @property (nonatomic, assign) WebCore::AXID identifier; 71 68 72 - (WebCore::A ccessibilityObject*)accessibilityObject;69 - (WebCore::AXCoreObject*)accessibilityObject; 73 70 - (BOOL)updateObjectBackingStore; 74 71 -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
r251798 r251974 32 32 #if ENABLE(ACCESSIBILITY) 33 33 34 #import "AXIsolatedTree.h"35 #import "AXIsolatedTreeNode.h"36 34 #import "AXObjectCache.h" 37 35 #import "AccessibilityARIAGridRow.h" … … 276 274 } 277 275 278 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) 279 NSArray *convertToNSArray(const Vector<RefPtr<WebCore::AXIsolatedTreeNode>>& children) 276 NSArray *convertToNSArray(const WebCore::AXCoreObject::AccessibilityChildrenVector& children) 280 277 { 281 278 NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:children.size()]; 282 for ( auto& child : children)279 for (const auto& child : children) 283 280 addChildToArray(*child, result); 284 281 return [result autorelease]; 285 282 } 286 #endif287 288 NSArray *convertToNSArray(const WebCore::AccessibilityObject::AccessibilityChildrenVector& children)289 {290 NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:children.size()];291 for (auto& child : children)292 addChildToArray(*child, result);293 return [result autorelease];294 }295 283 296 284 @implementation WebAccessibilityObjectWrapperBase 297 285 298 286 @synthesize identifier=_identifier; 299 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) 300 @synthesize isolatedTreeIdentifier=_isolatedTreeIdentifier; 301 #endif 302 303 - (id)initWithAccessibilityObject:(AccessibilityObject*)axObject 287 288 - (id)initWithAccessibilityObject:(AXCoreObject*)axObject 304 289 { 305 290 if (!(self = [super init])) … … 312 297 } 313 298 314 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)315 - (RefPtr<WebCore::AXIsolatedTreeNode>)isolatedTreeNode316 {317 RELEASE_ASSERT(!isMainThread());318 319 if (!_identifier)320 return nullptr;321 322 if (m_isolatedTreeNode)323 return m_isolatedTreeNode;324 325 m_isolatedTreeNode = AXIsolatedTree::nodeInTreeForID(_isolatedTreeIdentifier, _identifier);326 return m_isolatedTreeNode;327 }328 #endif329 330 299 - (void)detach 331 300 { 332 301 m_object = nullptr; 333 302 _identifier = 0; 334 335 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)336 m_isolatedTreeNode = nullptr;337 _isolatedTreeIdentifier = 0;338 #endif339 303 } 340 304 341 305 - (BOOL)updateObjectBackingStore 342 306 { 343 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)344 if (_AXUIElementRequestServicedBySecondaryAXThread()) {345 RELEASE_ASSERT(!isMainThread());346 if (auto treeNode = self.isolatedTreeNode) {347 if (auto tree = treeNode->tree())348 tree->applyPendingChanges();349 }350 return _identifier;351 }352 #endif353 354 307 // Calling updateBackingStore() can invalidate this element so self must be retained. 355 308 // If it does become invalidated, m_object will be nil. … … 372 325 } 373 326 374 - (A ccessibilityObject*)accessibilityObject327 - (AXCoreObject*)accessibilityObject 375 328 { 376 329 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) … … 389 342 - (WebCore::AXCoreObject*)axBackingObject 390 343 { 391 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)392 if (_AXUIElementRequestServicedBySecondaryAXThread())393 return self.isolatedTreeNode.get();394 #endif395 344 return m_object; 396 345 } … … 786 735 searchText = searchTextParameter; 787 736 788 A ccessibilityObject* startElement = nullptr;737 AXCoreObject* startElement = nullptr; 789 738 if ([startElementParameter isKindOfClass:[WebAccessibilityObjectWrapperBase class]]) 790 739 startElement = [startElementParameter accessibilityObject]; -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
r251798 r251974 1288 1288 if (it.text().length()) { 1289 1289 // Add the text of the list marker item if necessary. 1290 String listMarkerText = m_object->listMarkerTextForNodeAndPosition(&node, VisiblePosition(it.range()->startPosition()));1290 String listMarkerText = AccessibilityObject::listMarkerTextForNodeAndPosition(&node, VisiblePosition(it.range()->startPosition())); 1291 1291 if (!listMarkerText.isEmpty()) 1292 1292 AXAttributedStringAppendText(attrString, &node, listMarkerText, spellCheck); … … 1923 1923 vector.reserveInitialCapacity(length); 1924 1924 for (unsigned i = 0; i < length; ++i) { 1925 A ccessibilityObject* obj = [[array objectAtIndex:i] accessibilityObject];1925 AXCoreObject* obj = [[array objectAtIndex:i] accessibilityObject]; 1926 1926 if (obj) 1927 1927 vector.append(obj); … … 2006 2006 - (size_t)childrenVectorSize 2007 2007 { 2008 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)2009 if (_AXUIElementRequestServicedBySecondaryAXThread())2010 return self.isolatedTreeNode->children().size();2011 #endif2012 2013 2008 return m_object->children().size(); 2014 2009 } … … 2016 2011 - (NSArray<WebAccessibilityObjectWrapper *> *)childrenVectorArray 2017 2012 { 2018 #if ENABLE(ACCESSIBILITY_ISOLATED_TREE)2019 if (_AXUIElementRequestServicedBySecondaryAXThread()) {2020 auto treeNode = self.isolatedTreeNode;2021 auto nodeChildren = treeNode->children();2022 Vector<RefPtr<AXIsolatedTreeNode>> children;2023 children.reserveInitialCapacity(nodeChildren.size());2024 auto tree = treeNode->tree();2025 for (auto childID : nodeChildren)2026 children.uncheckedAppend(tree->nodeForID(childID));2027 return convertToNSArray(children);2028 }2029 #endif2030 2013 return convertToNSArray(m_object->children()); 2031 2014 } … … 3119 3102 if ([attributeName isEqualToString:NSAccessibilityIndexAttribute]) { 3120 3103 if (m_object->isTreeItem()) { 3121 A ccessibilityObject* parent = m_object->parentObject();3104 AXCoreObject* parent = m_object->parentObject(); 3122 3105 for (; parent && !parent->isTree(); parent = parent->parentObject()) 3123 3106 { } … … 3158 3141 if ([attributeName isEqualToString:NSAccessibilityDisclosedByRowAttribute]) { 3159 3142 if (m_object->isTreeItem()) { 3160 A ccessibilityObject* parent = m_object->parentObject();3143 AXCoreObject* parent = m_object->parentObject(); 3161 3144 while (parent) { 3162 3145 if (parent->isTreeItem()) … … 3225 3208 if (!m_object->exposesTitleUIElement()) 3226 3209 return nil; 3227 3228 A ccessibilityObject* obj = m_object->titleUIElement();3210 3211 AXCoreObject* obj = m_object->titleUIElement(); 3229 3212 if (obj) 3230 3213 return obj->wrapper(); … … 3250 3233 3251 3234 if ([attributeName isEqualToString:NSAccessibilityHorizontalScrollBarAttribute]) { 3252 A ccessibilityObject* scrollBar = m_object->scrollBar(AccessibilityOrientation::Horizontal);3235 AXCoreObject* scrollBar = m_object->scrollBar(AccessibilityOrientation::Horizontal); 3253 3236 if (scrollBar) 3254 3237 return scrollBar->wrapper(); … … 3256 3239 } 3257 3240 if ([attributeName isEqualToString:NSAccessibilityVerticalScrollBarAttribute]) { 3258 A ccessibilityObject* scrollBar = m_object->scrollBar(AccessibilityOrientation::Vertical);3241 AXCoreObject* scrollBar = m_object->scrollBar(AccessibilityOrientation::Vertical); 3259 3242 if (scrollBar) 3260 3243 return scrollBar->wrapper(); … … 3467 3450 3468 3451 if ([attributeName isEqualToString:NSAccessibilityFocusableAncestorAttribute]) { 3469 A ccessibilityObject* object = m_object->focusableAncestor();3452 AXCoreObject* object = m_object->focusableAncestor(); 3470 3453 return object ? object->wrapper() : nil; 3471 3454 } 3472 3455 3473 3456 if ([attributeName isEqualToString:NSAccessibilityEditableAncestorAttribute]) { 3474 A ccessibilityObject* object = m_object->editableAncestor();3457 AXCoreObject* object = m_object->editableAncestor(); 3475 3458 return object ? object->wrapper() : nil; 3476 3459 } 3477 3460 3478 3461 if ([attributeName isEqualToString:NSAccessibilityHighestEditableAncestorAttribute]) { 3479 A ccessibilityObject* object = m_object->highestEditableAncestor();3462 AXCoreObject* object = m_object->highestEditableAncestor(); 3480 3463 return object ? object->wrapper() : nil; 3481 3464 } … … 3782 3765 if (frameView) { 3783 3766 // Find the appropriate scroll view to use to convert the contents to the window. 3784 for ( AccessibilityObject* parent = m_object->parentObject(); parent; parent = parent->parentObject()) {3767 for (auto* parent = m_object->parentObject(); parent; parent = parent->parentObject()) { 3785 3768 if (is<AccessibilityScrollView>(*parent)) { 3786 3769 if (auto scrollView = downcast<AccessibilityScrollView>(*parent).scrollView()) { … … 4127 4110 NSArray* array = nil; 4128 4111 NSDictionary* dictionary = nil; 4129 RefPtr<A ccessibilityObject> uiElement = nullptr;4112 RefPtr<AXCoreObject> uiElement; 4130 4113 NSPoint point = NSZeroPoint; 4131 4114 bool pointSet = false; -
trunk/Source/WebCore/accessibility/win/AXObjectCacheWin.cpp
r251798 r251974 51 51 } 52 52 53 void AXObjectCache::attachWrapper(A ccessibilityObject*)53 void AXObjectCache::attachWrapper(AXCoreObject*) 54 54 { 55 55 // On Windows, AccessibilityObjects are wrapped when the accessibility
Note: See TracChangeset
for help on using the changeset viewer.