Changeset 31517 in webkit
- Timestamp:
- Apr 1, 2008, 1:40:10 AM (17 years ago)
- Location:
- trunk
- Files:
-
- 5 added
- 2 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r31513 r31517 1 2008-04-01 Alice Liu <alice.liu@apple.com> 2 Patch by Beth Dakin <bdakin@apple.com> and Alice Liu 3 4 Reviewed by Darin. 5 6 Refactored WebCore Accessibility code. Prior to this patch, WebCore 7 accessibility was implemented in an ObjC class named WebCoreAXObject, 8 with much of the "guts" in C++. This patch the next natural step of 9 factoring out the C++ code into a class named AccessibilityObject, and 10 in order to maintain the required ObjC object ties, also implements an 11 ObjC class named AccessibilityObjectWrapper as a thin wrapper around the 12 C++ object. Internally within WebCore we operate on the C++ object as 13 much as possible, and the ObjC object gets used mostly when we need to 14 return something to AppKit or call something implemented on NSObject. 15 The AXObjectCache still keeps one HashMap, now of RenderObjects to 16 AccessibilityObjects instead of WebCoreAXObjects, and the 17 AccessibilityObject keeps track of its ObjC wrapper. 18 19 * WebCore.xcodeproj/project.pbxproj: 20 * page/AXObjectCache.h: 21 (WebCore::AXObjectCache::get): 22 (WebCore::AXObjectCache::removeAXID): 23 * page/AccessibilityObject.cpp: Added. 24 (WebCore::AccessibilityObject::AccessibilityObject): 25 (WebCore::AccessibilityObject::~AccessibilityObject): 26 (WebCore::AccessibilityObject::create): 27 (WebCore::AccessibilityObject::detach): 28 (WebCore::AccessibilityObject::firstChild): 29 (WebCore::AccessibilityObject::lastChild): 30 (WebCore::AccessibilityObject::previousSibling): 31 (WebCore::AccessibilityObject::nextSibling): 32 (WebCore::AccessibilityObject::parentObject): 33 (WebCore::AccessibilityObject::parentObjectUnignored): 34 (WebCore::AccessibilityObject::isWebArea): 35 (WebCore::AccessibilityObject::isImageButton): 36 (WebCore::AccessibilityObject::isAnchor): 37 (WebCore::AccessibilityObject::isTextControl): 38 (WebCore::AccessibilityObject::isImage): 39 (WebCore::AccessibilityObject::isAttachment): 40 (WebCore::isPasswordFieldElement): 41 (WebCore::AccessibilityObject::isPasswordField): 42 (WebCore::AccessibilityObject::headingLevel): 43 (WebCore::AccessibilityObject::isHeading): 44 (WebCore::AccessibilityObject::anchorElement): 45 (WebCore::isCheckboxOrRadio): 46 (WebCore::AccessibilityObject::actionElement): 47 (WebCore::AccessibilityObject::mouseButtonListener): 48 (WebCore::AccessibilityObject::helpText): 49 (WebCore::AccessibilityObject::textUnderElement): 50 (WebCore::AccessibilityObject::hasIntValue): 51 (WebCore::AccessibilityObject::intValue): 52 (WebCore::AccessibilityObject::stringValue): 53 (WebCore::labelForElement): 54 (WebCore::AccessibilityObject::title): 55 (WebCore::AccessibilityObject::accessibilityDescription): 56 (WebCore::AccessibilityObject::boundingBoxRect): 57 (WebCore::AccessibilityObject::size): 58 (WebCore::AccessibilityObject::linkedUIElement): 59 (WebCore::AccessibilityObject::accessibilityShouldUseUniqueId): 60 (WebCore::AccessibilityObject::accessibilityIsIgnored): 61 (WebCore::AccessibilityObject::loaded): 62 (WebCore::AccessibilityObject::layoutCount): 63 (WebCore::AccessibilityObject::textLength): 64 (WebCore::AccessibilityObject::selectedText): 65 (WebCore::AccessibilityObject::selection): 66 (WebCore::AccessibilityObject::selectedTextRange): 67 (WebCore::AccessibilityObject::setSelectedText): 68 (WebCore::AccessibilityObject::setSelectedTextRange): 69 (WebCore::AccessibilityObject::makeRangeVisible): 70 (WebCore::AccessibilityObject::url): 71 (WebCore::AccessibilityObject::isVisited): 72 (WebCore::AccessibilityObject::isFocused): 73 (WebCore::AccessibilityObject::setFocused): 74 (WebCore::AccessibilityObject::setValue): 75 (WebCore::AccessibilityObject::isEnabled): 76 (WebCore::AccessibilityObject::press): 77 (WebCore::AccessibilityObject::topRenderer): 78 (WebCore::AccessibilityObject::textControl): 79 (WebCore::AccessibilityObject::widget): 80 (WebCore::AccessibilityObject::axObjectCache): 81 (WebCore::AccessibilityObject::documentLinks): 82 (WebCore::AccessibilityObject::documentFrameView): 83 (WebCore::AccessibilityObject::frameViewIfRenderView): 84 (WebCore::AccessibilityObject::visiblePositionRange): 85 (WebCore::AccessibilityObject::doAXTextMarkerRangeForLine): 86 (WebCore::AccessibilityObject::doAXTextMarkerRangeForUnorderedTextMarkers): 87 (WebCore::AccessibilityObject::doAXLeftWordTextMarkerRangeForTextMarker): 88 (WebCore::AccessibilityObject::doAXRightWordTextMarkerRangeForTextMarker): 89 (WebCore::updateAXLineStartForVisiblePosition): 90 (WebCore::AccessibilityObject::doAXLeftLineTextMarkerRangeForTextMarker): 91 (WebCore::AccessibilityObject::doAXRightLineTextMarkerRangeForTextMarker): 92 (WebCore::AccessibilityObject::doAXSentenceTextMarkerRangeForTextMarker): 93 (WebCore::AccessibilityObject::doAXParagraphTextMarkerRangeForTextMarker): 94 (WebCore::startOfStyleRange): 95 (WebCore::endOfStyleRange): 96 (WebCore::AccessibilityObject::doAXStyleTextMarkerRangeForTextMarker): 97 (WebCore::AccessibilityObject::textMarkerRangeForRange): 98 (WebCore::AccessibilityObject::stringForReplacedNode): 99 (WebCore::AccessibilityObject::doAXStringForTextMarkerRange): 100 (WebCore::AccessibilityObject::doAXBoundsForTextMarkerRange): 101 (WebCore::AccessibilityObject::doAXLengthForTextMarkerRange): 102 (WebCore::AccessibilityObject::doSetAXSelectedTextMarkerRange): 103 (WebCore::AccessibilityObject::doAXTextMarkerForPosition): 104 (WebCore::AccessibilityObject::doAXNextTextMarkerForTextMarker): 105 (WebCore::AccessibilityObject::doAXPreviousTextMarkerForTextMarker): 106 (WebCore::AccessibilityObject::doAXNextWordEndTextMarkerForTextMarker): 107 (WebCore::AccessibilityObject::doAXPreviousWordStartTextMarkerForTextMarker): 108 (WebCore::AccessibilityObject::doAXNextLineEndTextMarkerForTextMarker): 109 (WebCore::AccessibilityObject::doAXPreviousLineStartTextMarkerForTextMarker): 110 (WebCore::AccessibilityObject::doAXNextSentenceEndTextMarkerForTextMarker): 111 (WebCore::AccessibilityObject::doAXPreviousSentenceStartTextMarkerForTextMarker): 112 (WebCore::AccessibilityObject::doAXNextParagraphEndTextMarkerForTextMarker): 113 (WebCore::AccessibilityObject::doAXPreviousParagraphStartTextMarkerForTextMarker): 114 (WebCore::AccessibilityObject::textMarkerForIndex): 115 (WebCore::AccessibilityObject::doAXUIElementForTextMarker): 116 (WebCore::AccessibilityObject::doAXLineForTextMarker): 117 (WebCore::AccessibilityObject::rangeForTextMarkerRange): 118 (WebCore::AccessibilityObject::indexForTextMarker): 119 (WebCore::AccessibilityObject::doAXRangeForLine): 120 (WebCore::AccessibilityObject::doAXRangeForPosition): 121 (WebCore::AccessibilityObject::doAXRangeForIndex): 122 (WebCore::AccessibilityObject::doAXStyleRangeForIndex): 123 (WebCore::AccessibilityObject::doAXStringForRange): 124 (WebCore::AccessibilityObject::doAXBoundsForRange): 125 (WebCore::AccessibilityObject::doAXLineForIndex): 126 (WebCore::AccessibilityObject::doAccessibilityHitTest): 127 (WebCore::AccessibilityObject::focusedUIElement): 128 (WebCore::AccessibilityObject::observableObject): 129 (WebCore::AccessibilityObject::roleValue): 130 (WebCore::AccessibilityObject::canSetFocusAttribute): 131 (WebCore::AccessibilityObject::canSetValueAttribute): 132 (WebCore::AccessibilityObject::canSetTextRangeAttributes): 133 (WebCore::AccessibilityObject::childrenChanged): 134 (WebCore::AccessibilityObject::clearChildren): 135 (WebCore::AccessibilityObject::hasChildren): 136 (WebCore::AccessibilityObject::addChildren): 137 (WebCore::AccessibilityObject::axObjectID): 138 (WebCore::AccessibilityObject::setAXObjectID): 139 (WebCore::AccessibilityObject::removeAXObjectID): 140 * page/AccessibilityObject.h: Added. 141 (WebCore::): 142 (WebCore::VisiblePositionRange::VisiblePositionRange): 143 (WebCore::VisiblePositionRange::isNull): 144 (WebCore::AccessibilityObject::detached): 145 (WebCore::AccessibilityObject::PlainTextRange::PlainTextRange): 146 (WebCore::AccessibilityObject::PlainTextRange::isNull): 147 (WebCore::AccessibilityObject::renderer): 148 (WebCore::AccessibilityObject::children): 149 (WebCore::AccessibilityObject::wrapper): 150 (WebCore::AccessibilityObject::setWrapper): 151 * page/mac/AXObjectCacheMac.mm: 152 (WebCore::AXObjectCache::~AXObjectCache): 153 (WebCore::AXObjectCache::get): 154 (WebCore::AXObjectCache::remove): 155 (WebCore::AXObjectCache::getAXID): 156 (WebCore::AXObjectCache::removeAXID): 157 (WebCore::AXObjectCache::textMarkerForVisiblePosition): 158 (WebCore::AXObjectCache::childrenChanged): 159 (WebCore::AXObjectCache::postNotification): 160 (WebCore::AXObjectCache::postNotificationToElement): 161 * page/mac/AccessibilityObjectMac.mm: Added. 162 (createAccessibilityRoleMap): 163 (RoleEntry::): 164 (roleValueToNSString): 165 (AccessibilityObject::attachmentView): 166 (AccessibilityObject::performPressActionForAttachment): 167 (AccessibilityObject::textMarkerRange): 168 (AccessibilityObject::textMarkerForVisiblePosition): 169 (AccessibilityObject::startTextMarker): 170 (AccessibilityObject::visiblePositionForTextMarker): 171 (AccessibilityObject::visiblePositionForStartOfTextMarkerRange): 172 (AccessibilityObject::visiblePositionForEndOfTextMarkerRange): 173 (AccessibilityObject::textMarkerRangeFromVisiblePositions): 174 (AccessibilityObject::textMarkerRangeForSelection): 175 (AccessibilityObject::textMarkerRangeFromMarkers): 176 (AccessibilityObject::convertViewRectToScreenCoords): 177 (AccessibilityObject::convertAbsolutePointToViewCoords): 178 (AccessibilityObject::convertWidgetChildrenToNSArray): 179 (AccessibilityObject::position): 180 (AccessibilityObject::role): 181 (AccessibilityObject::subrole): 182 (AccessibilityObject::roleDescription): 183 (blockquoteLevel): 184 (AccessibilityObject::AXAttributeStringSetElement): 185 (AXAttributeStringSetBlockquoteLevel): 186 (CreateCGColorIfDifferent): 187 (AXAttributeStringSetColor): 188 (AXAttributeStringSetNumber): 189 (AXAttributeStringSetFont): 190 (AXAttributeStringSetStyle): 191 (AccessibilityObject::AXAttributeStringSetHeadingLevel): 192 (AccessibilityObject::AXLinkElementForNode): 193 (AXAttributeStringSetSpelling): 194 (AccessibilityObject::AXAttributedStringAppendText): 195 (nsStringForReplacedNode): 196 (AccessibilityObject::doAXAttributedStringForTextMarkerRange): 197 (AccessibilityObject::doAXAttributedStringForRange): 198 (AccessibilityObject::doAXRTFForRange): 199 * page/mac/AccessibilityObjectWrapper.h: Added. 200 * page/mac/AccessibilityObjectWrapper.mm: Added. 201 (-[AccessibilityObjectWrapper initWithAccessibilityObject:]): 202 (-[AccessibilityObjectWrapper unregisterUniqueIdForUIElement]): 203 (-[AccessibilityObjectWrapper detach]): 204 (-[AccessibilityObjectWrapper accessibilityObject]): 205 (-[AccessibilityObjectWrapper accessibilityActionNames]): 206 (-[AccessibilityObjectWrapper accessibilityAttributeNames]): 207 (-[AccessibilityObjectWrapper visiblePositionRangeForTextMarkerRange:]): 208 (-[AccessibilityObjectWrapper renderWidgetChildren]): 209 (convertToNSArray): 210 (-[AccessibilityObjectWrapper accessibilityAttributeValue:]): 211 (-[AccessibilityObjectWrapper accessibilityFocusedUIElement]): 212 (-[AccessibilityObjectWrapper accessibilityHitTest:]): 213 (-[AccessibilityObjectWrapper accessibilityIsAttributeSettable:]): 214 (-[AccessibilityObjectWrapper accessibilityIsIgnored]): 215 (-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]): 216 (-[AccessibilityObjectWrapper accessibilityPerformAction:]): 217 (-[AccessibilityObjectWrapper accessibilitySetValue:forAttribute:]): 218 (rendererForView): 219 (-[AccessibilityObjectWrapper _accessibilityParentForSubview:]): 220 (-[AccessibilityObjectWrapper accessibilityActionDescription:]): 221 (-[AccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): 222 (-[AccessibilityObjectWrapper accessibilityShouldUseUniqueId]): 223 * page/mac/WebCoreAXObject.h: Removed. 224 * page/mac/WebCoreAXObject.mm: Removed. 225 * rendering/RenderMenuList.cpp: 226 (WebCore::RenderMenuList::selectElement): 227 * rendering/RenderMenuList.h: 228 1 229 2008-03-31 Dan Bernstein <mitz@apple.com> 2 230 -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r31342 r31517 290 290 1AE830440CAB0ED1002237AE /* JSDatabaseCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE830420CAB0ED1002237AE /* JSDatabaseCustom.cpp */; }; 291 291 1AF326460D78B5530068F0C4 /* AXObjectCacheMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AF326400D78B5530068F0C4 /* AXObjectCacheMac.mm */; }; 292 1AF326480D78B5530068F0C4 /* WebCoreAXObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326420D78B5530068F0C4 /* WebCoreAXObject.h */; };293 1AF326490D78B5530068F0C4 /* WebCoreAXObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AF326430D78B5530068F0C4 /* WebCoreAXObject.mm */; };294 292 1AF326780D78B9440068F0C4 /* AXObjectCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326760D78B9440068F0C4 /* AXObjectCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; 295 293 1AF326790D78B9440068F0C4 /* EditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326770D78B9440068F0C4 /* EditorClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 390 388 46F9D5DF0B0D60170028EE36 /* progressCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46F9D5DC0B0D60170028EE36 /* progressCursor.png */; }; 391 389 4A8C96EB0BE69032004EEFF0 /* SelectionControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4A8C96EA0BE69032004EEFF0 /* SelectionControllerMac.mm */; }; 390 4B17CBC90D945B370053F183 /* AccessibilityObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B17CBC80D945B370053F183 /* AccessibilityObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; 391 4B17CBCC0D945B910053F183 /* AccessibilityObjectWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B17CBCA0D945B910053F183 /* AccessibilityObjectWrapper.mm */; }; 392 4B17CBCD0D945B910053F183 /* AccessibilityObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B17CBCB0D945B910053F183 /* AccessibilityObjectWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; 392 393 4B2708C70AF19EE40065127F /* Pasteboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2708C50AF19EE40065127F /* Pasteboard.h */; }; 393 394 4B2709830AF2E5E00065127F /* PasteboardMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2709810AF2E5E00065127F /* PasteboardMac.mm */; }; … … 396 397 4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B3043CA0AE0373B00A82647 /* Editor.cpp */; }; 397 398 4B3043CD0AE0373B00A82647 /* Editor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3043CB0AE0373B00A82647 /* Editor.h */; settings = {ATTRIBUTES = (Private, ); }; }; 399 4B5B7C8E0D945CFA00DDF3AB /* AccessibilityObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B5B7C8D0D945CFA00DDF3AB /* AccessibilityObject.cpp */; }; 400 4B5B7C9C0D945D5600DDF3AB /* AccessibilityObjectMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B5B7C9B0D945D5500DDF3AB /* AccessibilityObjectMac.mm */; }; 398 401 4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6FA6F20C39E48C00087011 /* SmartReplace.h */; settings = {ATTRIBUTES = (Private, ); }; }; 399 402 4B6FA6F50C39E48C00087011 /* SmartReplace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B6FA6F30C39E48C00087011 /* SmartReplace.cpp */; }; … … 4685 4688 1AE830420CAB0ED1002237AE /* JSDatabaseCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDatabaseCustom.cpp; sourceTree = "<group>"; }; 4686 4689 1AF326400D78B5530068F0C4 /* AXObjectCacheMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AXObjectCacheMac.mm; sourceTree = "<group>"; }; 4687 1AF326420D78B5530068F0C4 /* WebCoreAXObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreAXObject.h; sourceTree = "<group>"; };4688 1AF326430D78B5530068F0C4 /* WebCoreAXObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreAXObject.mm; sourceTree = "<group>"; };4689 4690 1AF326760D78B9440068F0C4 /* AXObjectCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXObjectCache.h; sourceTree = "<group>"; }; 4690 4691 1AF326770D78B9440068F0C4 /* EditorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditorClient.h; sourceTree = "<group>"; }; … … 4771 4772 46F9D5DC0B0D60170028EE36 /* progressCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progressCursor.png; sourceTree = "<group>"; }; 4772 4773 4A8C96EA0BE69032004EEFF0 /* SelectionControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SelectionControllerMac.mm; path = mac/SelectionControllerMac.mm; sourceTree = "<group>"; }; 4774 4B17CBC80D945B370053F183 /* AccessibilityObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityObject.h; sourceTree = "<group>"; }; 4775 4B17CBCA0D945B910053F183 /* AccessibilityObjectWrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityObjectWrapper.mm; sourceTree = "<group>"; }; 4776 4B17CBCB0D945B910053F183 /* AccessibilityObjectWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityObjectWrapper.h; sourceTree = "<group>"; }; 4773 4777 4B2708C50AF19EE40065127F /* Pasteboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pasteboard.h; sourceTree = "<group>"; }; 4774 4778 4B2709810AF2E5E00065127F /* PasteboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PasteboardMac.mm; sourceTree = "<group>"; }; … … 4777 4781 4B3043CA0AE0373B00A82647 /* Editor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Editor.cpp; sourceTree = "<group>"; }; 4778 4782 4B3043CB0AE0373B00A82647 /* Editor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Editor.h; sourceTree = "<group>"; }; 4783 4B5B7C8D0D945CFA00DDF3AB /* AccessibilityObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityObject.cpp; sourceTree = "<group>"; }; 4784 4B5B7C9B0D945D5500DDF3AB /* AccessibilityObjectMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AccessibilityObjectMac.mm; sourceTree = "<group>"; }; 4779 4785 4B6FA6F20C39E48C00087011 /* SmartReplace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmartReplace.h; sourceTree = "<group>"; }; 4780 4786 4B6FA6F30C39E48C00087011 /* SmartReplace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmartReplace.cpp; sourceTree = "<group>"; }; … … 8729 8735 06693F450BFBC91600216072 /* inspector */, 8730 8736 8538F0000AD71770006A81D1 /* AbstractView.idl */, 8737 4B17CBC80D945B370053F183 /* AccessibilityObject.h */, 8738 4B5B7C8D0D945CFA00DDF3AB /* AccessibilityObject.cpp */, 8731 8739 BC80C9890CD2950500A0B7B3 /* AnimationController.cpp */, 8732 8740 BC80C98A0CD2950500A0B7B3 /* AnimationController.h */, … … 10090 10098 isa = PBXGroup; 10091 10099 children = ( 10100 4B5B7C9B0D945D5500DDF3AB /* AccessibilityObjectMac.mm */, 10101 4B17CBCA0D945B910053F183 /* AccessibilityObjectWrapper.mm */, 10102 4B17CBCB0D945B910053F183 /* AccessibilityObjectWrapper.h */, 10092 10103 1AF326400D78B5530068F0C4 /* AXObjectCacheMac.mm */, 10093 1AF326420D78B5530068F0C4 /* WebCoreAXObject.h */,10094 1AF326430D78B5530068F0C4 /* WebCoreAXObject.mm */,10095 10104 ABAF22070C03B1C700B0BCF0 /* ChromeMac.mm */, 10096 10105 93C09A7E0B064EEF005ABD4D /* EventHandlerMac.mm */, … … 14611 14620 A77979290D6B9E64003851B9 /* JSImageData.h in Headers */, 14612 14621 1CEFC9B90D78DC8C007D2579 /* SchedulePair.h in Headers */, 14613 1AF326480D78B5530068F0C4 /* WebCoreAXObject.h in Headers */,14614 14622 1AF326780D78B9440068F0C4 /* AXObjectCache.h in Headers */, 14615 14623 9302B0BF0D79F82C00C7EE83 /* PageGroup.h in Headers */, … … 14662 14670 9382AAB50D8C386100F357A6 /* NodeWithIndexBefore.h in Headers */, 14663 14671 9382AAB60D8C386100F357A6 /* NodeWithIndexAfter.h in Headers */, 14672 4B17CBC90D945B370053F183 /* AccessibilityObject.h in Headers */, 14673 4B17CBCD0D945B910053F183 /* AccessibilityObjectWrapper.h in Headers */, 14664 14674 512DD8F50D91E6AF000F89EE /* LegacyWebArchive.h in Headers */, 14665 14675 512DD8F60D91E6AF000F89EE /* Archive.h in Headers */, … … 16264 16274 1CEFC9BA0D78DC8C007D2579 /* SchedulePair.cpp in Sources */, 16265 16275 1AF326460D78B5530068F0C4 /* AXObjectCacheMac.mm in Sources */, 16266 1AF326490D78B5530068F0C4 /* WebCoreAXObject.mm in Sources */,16267 16276 9302B0BD0D79F82900C7EE83 /* PageGroup.cpp in Sources */, 16268 16277 1CE24F970D7CAF0E007E04C2 /* SchedulePairMac.mm in Sources */, … … 16314 16323 A9D248080D757E7D00FDF959 /* JSMimeTypeArray.cpp in Sources */, 16315 16324 1CE3F8B40D89CFDC00FB035F /* MainThread.cpp in Sources */, 16325 4B17CBCC0D945B910053F183 /* AccessibilityObjectWrapper.mm in Sources */, 16326 4B5B7C8E0D945CFA00DDF3AB /* AccessibilityObject.cpp in Sources */, 16327 4B5B7C9C0D945D5600DDF3AB /* AccessibilityObjectMac.mm in Sources */, 16316 16328 512DD8E30D91E2B4000F89EE /* SharedBufferCF.cpp in Sources */, 16317 16329 512DD8F40D91E6AF000F89EE /* LegacyWebArchive.cpp in Sources */, -
trunk/WebCore/page/AXObjectCache.h
r30674 r31517 1 1 /* 2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved.2 * Copyright (C) 2003, 2006, 2007, 2008 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 27 27 #define AXObjectCache_h 28 28 29 #include "AccessibilityObject.h" 29 30 #include <limits.h> 30 31 31 #include <wtf/HashMap.h> 32 32 #include <wtf/HashSet.h> 33 #include <wtf/RefPtr.h> 34 #include <wtf/RetainPtr.h> 33 35 34 36 #ifdef __OBJC__ 35 @class WebCoreAXObject;36 @class WebCoreTextMarker;37 @class AccessibilityObjectWrapper; 38 @class WebCoreTextMarker; 37 39 #else 38 class WebCoreAXObject;39 class WebCoreTextMarker;40 class AccessibilityObjectWrapper; 41 class WebCoreTextMarker; 40 42 #endif 41 43 … … 56 58 ~AXObjectCache(); 57 59 58 WebCoreAXObject* get(RenderObject*);60 AccessibilityObject* get(RenderObject*); 59 61 void remove(RenderObject*); 60 62 61 void removeAXID( WebCoreAXObject*);63 void removeAXID(AccessibilityObject*); 62 64 63 65 WebCoreTextMarker* textMarkerForVisiblePosition(const VisiblePosition&); … … 81 83 #endif 82 84 83 AXID getAXID( WebCoreAXObject*);85 AXID getAXID(AccessibilityObject*); 84 86 85 HashMap<RenderObject*, WebCoreAXObject*> m_objects;87 HashMap<RenderObject*, RefPtr<AccessibilityObject> > m_objects; 86 88 HashSet<AXID, IntHash<AXID>, AXIDHashTraits> m_idsInUse; 87 89 }; … … 89 91 #if !PLATFORM(MAC) 90 92 inline AXObjectCache::~AXObjectCache() { } 91 inline WebCoreAXObject* AXObjectCache::get(RenderObject*) { return 0; }93 inline AccessibilityObject* AXObjectCache::get(RenderObject*) { return 0; } 92 94 inline void AXObjectCache::remove(RenderObject*) { } 93 inline void AXObjectCache::removeAXID( WebCoreAXObject*) { }95 inline void AXObjectCache::removeAXID(AccessibilityObject*) { } 94 96 inline void AXObjectCache::childrenChanged(RenderObject*) { } 95 97 inline void AXObjectCache::postNotification(RenderObject*, const String&) { } -
trunk/WebCore/page/mac/AXObjectCacheMac.mm
r30992 r31517 1 1 /* 2 * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc. All rights reserved.2 * Copyright (C) 2003, 2004, 2005, 2006, 2008 Apple Computer, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 27 27 #import "AXObjectCache.h" 28 28 29 #import " Document.h"30 #import " FoundationExtras.h"29 #import "AccessibilityObject.h" 30 #import "AccessibilityObjectWrapper.h" 31 31 #import "RenderObject.h" 32 #import "WebCoreAXObject.h"33 32 #import "WebCoreViewFactory.h" 33 34 #import <wtf/PassRefPtr.h> 34 35 35 36 // The simple Cocoa calls in this file don't throw exceptions. … … 48 49 AXObjectCache::~AXObjectCache() 49 50 { 50 HashMap<RenderObject*, WebCoreAXObject*>::iterator end = m_objects.end();51 for (HashMap<RenderObject*, WebCoreAXObject*>::iterator it = m_objects.begin(); it != end; ++it) {52 WebCoreAXObject* obj = (*it).second;53 [obj detach];54 HardRelease(obj);51 HashMap<RenderObject*, RefPtr<AccessibilityObject> >::iterator end = m_objects.end(); 52 for (HashMap<RenderObject*, RefPtr<AccessibilityObject> >::iterator it = m_objects.begin(); it != end; ++it) { 53 AccessibilityObject* obj = (*it).second.get(); 54 [obj->wrapper() detach]; 55 obj->detach(); 55 56 } 56 57 } 57 58 58 WebCoreAXObject* AXObjectCache::get(RenderObject* renderer)59 { 60 WebCoreAXObject* obj = m_objects.get(renderer);59 AccessibilityObject* AXObjectCache::get(RenderObject* renderer) 60 { 61 RefPtr<AccessibilityObject> obj = m_objects.get(renderer).get(); 61 62 if (obj) 62 return obj; 63 64 obj = [[WebCoreAXObject alloc] initWithRenderer:renderer]; 65 HardRetainWithNSRelease(obj); 66 m_objects.set(renderer, obj); 67 return obj; 63 return obj.get(); 64 obj = AccessibilityObject::create(renderer); 65 m_objects.set(renderer, obj); 66 obj->setWrapper([[AccessibilityObjectWrapper alloc] initWithAccessibilityObject:obj.get()]); 67 return obj.get(); 68 68 } 69 69 70 70 void AXObjectCache::remove(RenderObject* renderer) 71 71 { 72 WebCoreAXObject* obj = m_objects.take(renderer); 73 if (!obj) { 74 ASSERT(!renderer->hasAXObject()); 75 return; 72 // first fetch object to operate some cleanup functions on it 73 AccessibilityObject* obj = m_objects.get(renderer).get(); 74 if (obj) { 75 [obj->wrapper() detach]; 76 obj->detach(); 77 78 // finally remove the object 79 if (!m_objects.take(renderer)) { 80 ASSERT(!renderer->hasAXObject()); 81 return; 82 } 76 83 } 77 78 [obj detach];79 HardRelease(obj);80 81 84 ASSERT(m_objects.size() >= m_idsInUse.size()); 82 85 } 83 86 84 AXID AXObjectCache::getAXID( WebCoreAXObject* obj)87 AXID AXObjectCache::getAXID(AccessibilityObject* obj) 85 88 { 86 89 // check for already-assigned ID 87 AXID objID = [obj axObjectID];90 AXID objID = obj->axObjectID(); 88 91 if (objID) { 89 92 ASSERT(m_idsInUse.contains(objID)); … … 99 102 m_idsInUse.add(objID); 100 103 lastUsedID = objID; 101 [obj setAXObjectID:objID];104 obj->setAXObjectID(objID); 102 105 103 106 return objID; 104 107 } 105 108 106 void AXObjectCache::removeAXID( WebCoreAXObject* obj)107 { 108 AXID objID = [obj axObjectID];109 void AXObjectCache::removeAXID(AccessibilityObject* obj) 110 { 111 AXID objID = obj->axObjectID(); 109 112 if (objID == 0) 110 113 return; 111 114 ASSERT(objID != AXIDHashTraits::deletedValue()); 112 115 ASSERT(m_idsInUse.contains(objID)); 113 [obj setAXObjectID:0];116 obj->setAXObjectID(0); 114 117 m_idsInUse.remove(objID); 115 118 } … … 128 131 129 132 // find or create an accessibility object for this renderer 130 WebCoreAXObject*obj = get(renderer);131 132 // create a text marker, adding an ID for the WebCoreAXObject if needed133 RefPtr<AccessibilityObject> obj = get(renderer); 134 135 // create a text marker, adding an ID for the AccessibilityObject if needed 133 136 TextMarkerData textMarkerData; 134 textMarkerData.axID = getAXID(obj );137 textMarkerData.axID = getAXID(obj.get()); 135 138 textMarkerData.node = domNode; 136 139 textMarkerData.offset = deepPos.offset(); … … 163 166 void AXObjectCache::childrenChanged(RenderObject* renderer) 164 167 { 165 WebCoreAXObject* obj = m_objects.get(renderer);168 AccessibilityObject* obj = m_objects.get(renderer).get(); 166 169 if (obj) 167 [obj childrenChanged];170 obj->childrenChanged(); 168 171 } 169 172 … … 175 178 // notifications for text input objects are sent to that object 176 179 // all others are sent to the top WebArea 177 WebCoreAXObject* obj = [get(renderer) observableObject]; 178 if (obj) 179 NSAccessibilityPostNotification(obj, message); 180 else 181 NSAccessibilityPostNotification(get(renderer->document()->renderer()), message); 180 RefPtr<AccessibilityObject> obj = get(renderer)->observableObject(); 181 if (!obj) 182 obj = get(renderer->document()->renderer()); 183 184 if (!obj) 185 return; 186 187 NSAccessibilityPostNotification(obj->wrapper(), message); 182 188 } 183 189 … … 185 191 { 186 192 // send the notification to the specified element itself, not one of its ancestors 187 if (renderer) 188 NSAccessibilityPostNotification(get(renderer), message); 193 if (!renderer) 194 return; 195 196 RefPtr<AccessibilityObject> obj = get(renderer); 197 if (!obj) 198 return; 199 200 NSAccessibilityPostNotification(obj->wrapper(), message); 189 201 } 190 202 -
trunk/WebCore/rendering/RenderMenuList.cpp
r29663 r31517 63 63 } 64 64 65 // this static cast is safe because RenderMenuLists are only created for HTMLSelectElements 66 HTMLSelectElement* RenderMenuList::selectElement() 67 { 68 return static_cast<HTMLSelectElement*>(node()); 69 } 70 65 71 void RenderMenuList::createInnerBlock() 66 72 { -
trunk/WebCore/rendering/RenderMenuList.h
r29663 r31517 42 42 RenderMenuList(HTMLSelectElement*); 43 43 ~RenderMenuList(); 44 45 HTMLSelectElement* selectElement(); 44 46 45 47 virtual bool isMenuList() const { return true; } -
trunk/WebKit/mac/ChangeLog
r31489 r31517 1 2008-03-31 Alice Liu <alice.liu@apple.com> 2 3 Reviewed by Darin. 4 5 * WebView/WebFrame.mm: 6 (-[WebFrame _accessibilityTree]): 7 The syntax for fetching an object from the AXObjectCache changed slightly 8 1 9 2008-03-31 Brady Eidson <beidson@apple.com> 2 10 -
trunk/WebKit/mac/WebView/WebFrame.mm
r31409 r31517 48 48 #import "WebViewInternal.h" 49 49 #import <JavaScriptCore/APICast.h> 50 #import <WebCore/AccessibilityObject.h> 50 51 #import <WebCore/AXObjectCache.h> 51 52 #import <WebCore/ColorMac.h> … … 649 650 if (!root) 650 651 return nil; 651 return _private->coreFrame->document()->axObjectCache()->get(root) ;652 return _private->coreFrame->document()->axObjectCache()->get(root)->wrapper(); 652 653 } 653 654
Note:
See TracChangeset
for help on using the changeset viewer.