Changeset 31517 in webkit


Ignore:
Timestamp:
Apr 1, 2008, 1:40:10 AM (17 years ago)
Author:
alice.liu@apple.com
Message:

WebCore:

2008-04-01 Alice Liu <alice.liu@apple.com>

Patch by Beth Dakin <Beth Dakin> and Alice Liu

Reviewed by Darin.

Refactored WebCore Accessibility code. Prior to this patch, WebCore
accessibility was implemented in an ObjC class named WebCoreAXObject,
with much of the "guts" in C++. This patch the next natural step of
factoring out the C++ code into a class named AccessibilityObject, and
in order to maintain the required ObjC object ties, also implements an
ObjC class named AccessibilityObjectWrapper as a thin wrapper around the
C++ object. Internally within WebCore we operate on the C++ object as
much as possible, and the ObjC object gets used mostly when we need to
return something to AppKit or call something implemented on NSObject.
The AXObjectCache still keeps one HashMap, now of RenderObjects to
AccessibilityObjects instead of WebCoreAXObjects, and the
AccessibilityObject keeps track of its ObjC wrapper.

  • WebCore.xcodeproj/project.pbxproj:
  • page/AXObjectCache.h: (WebCore::AXObjectCache::get): (WebCore::AXObjectCache::removeAXID):
  • page/AccessibilityObject.cpp: Added. (WebCore::AccessibilityObject::AccessibilityObject): (WebCore::AccessibilityObject::~AccessibilityObject): (WebCore::AccessibilityObject::create): (WebCore::AccessibilityObject::detach): (WebCore::AccessibilityObject::firstChild): (WebCore::AccessibilityObject::lastChild): (WebCore::AccessibilityObject::previousSibling): (WebCore::AccessibilityObject::nextSibling): (WebCore::AccessibilityObject::parentObject): (WebCore::AccessibilityObject::parentObjectUnignored): (WebCore::AccessibilityObject::isWebArea): (WebCore::AccessibilityObject::isImageButton): (WebCore::AccessibilityObject::isAnchor): (WebCore::AccessibilityObject::isTextControl): (WebCore::AccessibilityObject::isImage): (WebCore::AccessibilityObject::isAttachment): (WebCore::isPasswordFieldElement): (WebCore::AccessibilityObject::isPasswordField): (WebCore::AccessibilityObject::headingLevel): (WebCore::AccessibilityObject::isHeading): (WebCore::AccessibilityObject::anchorElement): (WebCore::isCheckboxOrRadio): (WebCore::AccessibilityObject::actionElement): (WebCore::AccessibilityObject::mouseButtonListener): (WebCore::AccessibilityObject::helpText): (WebCore::AccessibilityObject::textUnderElement): (WebCore::AccessibilityObject::hasIntValue): (WebCore::AccessibilityObject::intValue): (WebCore::AccessibilityObject::stringValue): (WebCore::labelForElement): (WebCore::AccessibilityObject::title): (WebCore::AccessibilityObject::accessibilityDescription): (WebCore::AccessibilityObject::boundingBoxRect): (WebCore::AccessibilityObject::size): (WebCore::AccessibilityObject::linkedUIElement): (WebCore::AccessibilityObject::accessibilityShouldUseUniqueId): (WebCore::AccessibilityObject::accessibilityIsIgnored): (WebCore::AccessibilityObject::loaded): (WebCore::AccessibilityObject::layoutCount): (WebCore::AccessibilityObject::textLength): (WebCore::AccessibilityObject::selectedText): (WebCore::AccessibilityObject::selection): (WebCore::AccessibilityObject::selectedTextRange): (WebCore::AccessibilityObject::setSelectedText): (WebCore::AccessibilityObject::setSelectedTextRange): (WebCore::AccessibilityObject::makeRangeVisible): (WebCore::AccessibilityObject::url): (WebCore::AccessibilityObject::isVisited): (WebCore::AccessibilityObject::isFocused): (WebCore::AccessibilityObject::setFocused): (WebCore::AccessibilityObject::setValue): (WebCore::AccessibilityObject::isEnabled): (WebCore::AccessibilityObject::press): (WebCore::AccessibilityObject::topRenderer): (WebCore::AccessibilityObject::textControl): (WebCore::AccessibilityObject::widget): (WebCore::AccessibilityObject::axObjectCache): (WebCore::AccessibilityObject::documentLinks): (WebCore::AccessibilityObject::documentFrameView): (WebCore::AccessibilityObject::frameViewIfRenderView): (WebCore::AccessibilityObject::visiblePositionRange): (WebCore::AccessibilityObject::doAXTextMarkerRangeForLine): (WebCore::AccessibilityObject::doAXTextMarkerRangeForUnorderedTextMarkers): (WebCore::AccessibilityObject::doAXLeftWordTextMarkerRangeForTextMarker): (WebCore::AccessibilityObject::doAXRightWordTextMarkerRangeForTextMarker): (WebCore::updateAXLineStartForVisiblePosition): (WebCore::AccessibilityObject::doAXLeftLineTextMarkerRangeForTextMarker): (WebCore::AccessibilityObject::doAXRightLineTextMarkerRangeForTextMarker): (WebCore::AccessibilityObject::doAXSentenceTextMarkerRangeForTextMarker): (WebCore::AccessibilityObject::doAXParagraphTextMarkerRangeForTextMarker): (WebCore::startOfStyleRange): (WebCore::endOfStyleRange): (WebCore::AccessibilityObject::doAXStyleTextMarkerRangeForTextMarker): (WebCore::AccessibilityObject::textMarkerRangeForRange): (WebCore::AccessibilityObject::stringForReplacedNode): (WebCore::AccessibilityObject::doAXStringForTextMarkerRange): (WebCore::AccessibilityObject::doAXBoundsForTextMarkerRange): (WebCore::AccessibilityObject::doAXLengthForTextMarkerRange): (WebCore::AccessibilityObject::doSetAXSelectedTextMarkerRange): (WebCore::AccessibilityObject::doAXTextMarkerForPosition): (WebCore::AccessibilityObject::doAXNextTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXPreviousTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXNextWordEndTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXPreviousWordStartTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXNextLineEndTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXPreviousLineStartTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXNextSentenceEndTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXPreviousSentenceStartTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXNextParagraphEndTextMarkerForTextMarker): (WebCore::AccessibilityObject::doAXPreviousParagraphStartTextMarkerForTextMarker): (WebCore::AccessibilityObject::textMarkerForIndex): (WebCore::AccessibilityObject::doAXUIElementForTextMarker): (WebCore::AccessibilityObject::doAXLineForTextMarker): (WebCore::AccessibilityObject::rangeForTextMarkerRange): (WebCore::AccessibilityObject::indexForTextMarker): (WebCore::AccessibilityObject::doAXRangeForLine): (WebCore::AccessibilityObject::doAXRangeForPosition): (WebCore::AccessibilityObject::doAXRangeForIndex): (WebCore::AccessibilityObject::doAXStyleRangeForIndex): (WebCore::AccessibilityObject::doAXStringForRange): (WebCore::AccessibilityObject::doAXBoundsForRange): (WebCore::AccessibilityObject::doAXLineForIndex): (WebCore::AccessibilityObject::doAccessibilityHitTest): (WebCore::AccessibilityObject::focusedUIElement): (WebCore::AccessibilityObject::observableObject): (WebCore::AccessibilityObject::roleValue): (WebCore::AccessibilityObject::canSetFocusAttribute): (WebCore::AccessibilityObject::canSetValueAttribute): (WebCore::AccessibilityObject::canSetTextRangeAttributes): (WebCore::AccessibilityObject::childrenChanged): (WebCore::AccessibilityObject::clearChildren): (WebCore::AccessibilityObject::hasChildren): (WebCore::AccessibilityObject::addChildren): (WebCore::AccessibilityObject::axObjectID): (WebCore::AccessibilityObject::setAXObjectID): (WebCore::AccessibilityObject::removeAXObjectID):
  • page/AccessibilityObject.h: Added. (WebCore::): (WebCore::VisiblePositionRange::VisiblePositionRange): (WebCore::VisiblePositionRange::isNull): (WebCore::AccessibilityObject::detached): (WebCore::AccessibilityObject::PlainTextRange::PlainTextRange): (WebCore::AccessibilityObject::PlainTextRange::isNull): (WebCore::AccessibilityObject::renderer): (WebCore::AccessibilityObject::children): (WebCore::AccessibilityObject::wrapper): (WebCore::AccessibilityObject::setWrapper):
  • page/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::~AXObjectCache): (WebCore::AXObjectCache::get): (WebCore::AXObjectCache::remove): (WebCore::AXObjectCache::getAXID): (WebCore::AXObjectCache::removeAXID): (WebCore::AXObjectCache::textMarkerForVisiblePosition): (WebCore::AXObjectCache::childrenChanged): (WebCore::AXObjectCache::postNotification): (WebCore::AXObjectCache::postNotificationToElement):
  • page/mac/AccessibilityObjectMac.mm: Added. (createAccessibilityRoleMap): (RoleEntry::): (roleValueToNSString): (AccessibilityObject::attachmentView): (AccessibilityObject::performPressActionForAttachment): (AccessibilityObject::textMarkerRange): (AccessibilityObject::textMarkerForVisiblePosition): (AccessibilityObject::startTextMarker): (AccessibilityObject::visiblePositionForTextMarker): (AccessibilityObject::visiblePositionForStartOfTextMarkerRange): (AccessibilityObject::visiblePositionForEndOfTextMarkerRange): (AccessibilityObject::textMarkerRangeFromVisiblePositions): (AccessibilityObject::textMarkerRangeForSelection): (AccessibilityObject::textMarkerRangeFromMarkers): (AccessibilityObject::convertViewRectToScreenCoords): (AccessibilityObject::convertAbsolutePointToViewCoords): (AccessibilityObject::convertWidgetChildrenToNSArray): (AccessibilityObject::position): (AccessibilityObject::role): (AccessibilityObject::subrole): (AccessibilityObject::roleDescription): (blockquoteLevel): (AccessibilityObject::AXAttributeStringSetElement): (AXAttributeStringSetBlockquoteLevel): (CreateCGColorIfDifferent): (AXAttributeStringSetColor): (AXAttributeStringSetNumber): (AXAttributeStringSetFont): (AXAttributeStringSetStyle): (AccessibilityObject::AXAttributeStringSetHeadingLevel): (AccessibilityObject::AXLinkElementForNode): (AXAttributeStringSetSpelling): (AccessibilityObject::AXAttributedStringAppendText): (nsStringForReplacedNode): (AccessibilityObject::doAXAttributedStringForTextMarkerRange): (AccessibilityObject::doAXAttributedStringForRange): (AccessibilityObject::doAXRTFForRange):
  • page/mac/AccessibilityObjectWrapper.h: Added.
  • page/mac/AccessibilityObjectWrapper.mm: Added. (-[AccessibilityObjectWrapper initWithAccessibilityObject:]): (-[AccessibilityObjectWrapper unregisterUniqueIdForUIElement]): (-[AccessibilityObjectWrapper detach]): (-[AccessibilityObjectWrapper accessibilityObject]): (-[AccessibilityObjectWrapper accessibilityActionNames]): (-[AccessibilityObjectWrapper accessibilityAttributeNames]): (-[AccessibilityObjectWrapper visiblePositionRangeForTextMarkerRange:]): (-[AccessibilityObjectWrapper renderWidgetChildren]): (convertToNSArray): (-[AccessibilityObjectWrapper accessibilityAttributeValue:]): (-[AccessibilityObjectWrapper accessibilityFocusedUIElement]): (-[AccessibilityObjectWrapper accessibilityHitTest:]): (-[AccessibilityObjectWrapper accessibilityIsAttributeSettable:]): (-[AccessibilityObjectWrapper accessibilityIsIgnored]): (-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]): (-[AccessibilityObjectWrapper accessibilityPerformAction:]): (-[AccessibilityObjectWrapper accessibilitySetValue:forAttribute:]): (rendererForView): (-[AccessibilityObjectWrapper _accessibilityParentForSubview:]): (-[AccessibilityObjectWrapper accessibilityActionDescription:]): (-[AccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): (-[AccessibilityObjectWrapper accessibilityShouldUseUniqueId]):
  • page/mac/WebCoreAXObject.h: Removed.
  • page/mac/WebCoreAXObject.mm: Removed.
  • rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::selectElement):
  • rendering/RenderMenuList.h:

WebKit/mac:

2008-03-31 Alice Liu <alice.liu@apple.com>

Reviewed by Darin.

  • WebView/WebFrame.mm: (-[WebFrame _accessibilityTree]): The syntax for fetching an object from the AXObjectCache changed slightly
Location:
trunk
Files:
5 added
2 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r31513 r31517  
     12008-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
    12292008-03-31  Dan Bernstein  <mitz@apple.com>
    2230
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r31342 r31517  
    290290                1AE830440CAB0ED1002237AE /* JSDatabaseCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE830420CAB0ED1002237AE /* JSDatabaseCustom.cpp */; };
    291291                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 */; };
    294292                1AF326780D78B9440068F0C4 /* AXObjectCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326760D78B9440068F0C4 /* AXObjectCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
    295293                1AF326790D78B9440068F0C4 /* EditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326770D78B9440068F0C4 /* EditorClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    390388                46F9D5DF0B0D60170028EE36 /* progressCursor.png in Resources */ = {isa = PBXBuildFile; fileRef = 46F9D5DC0B0D60170028EE36 /* progressCursor.png */; };
    391389                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, ); }; };
    392393                4B2708C70AF19EE40065127F /* Pasteboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2708C50AF19EE40065127F /* Pasteboard.h */; };
    393394                4B2709830AF2E5E00065127F /* PasteboardMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2709810AF2E5E00065127F /* PasteboardMac.mm */; };
     
    396397                4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B3043CA0AE0373B00A82647 /* Editor.cpp */; };
    397398                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 */; };
    398401                4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B6FA6F20C39E48C00087011 /* SmartReplace.h */; settings = {ATTRIBUTES = (Private, ); }; };
    399402                4B6FA6F50C39E48C00087011 /* SmartReplace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B6FA6F30C39E48C00087011 /* SmartReplace.cpp */; };
     
    46854688                1AE830420CAB0ED1002237AE /* JSDatabaseCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDatabaseCustom.cpp; sourceTree = "<group>"; };
    46864689                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>"; };
    46894690                1AF326760D78B9440068F0C4 /* AXObjectCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AXObjectCache.h; sourceTree = "<group>"; };
    46904691                1AF326770D78B9440068F0C4 /* EditorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditorClient.h; sourceTree = "<group>"; };
     
    47714772                46F9D5DC0B0D60170028EE36 /* progressCursor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progressCursor.png; sourceTree = "<group>"; };
    47724773                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>"; };
    47734777                4B2708C50AF19EE40065127F /* Pasteboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pasteboard.h; sourceTree = "<group>"; };
    47744778                4B2709810AF2E5E00065127F /* PasteboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PasteboardMac.mm; sourceTree = "<group>"; };
     
    47774781                4B3043CA0AE0373B00A82647 /* Editor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Editor.cpp; sourceTree = "<group>"; };
    47784782                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>"; };
    47794785                4B6FA6F20C39E48C00087011 /* SmartReplace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmartReplace.h; sourceTree = "<group>"; };
    47804786                4B6FA6F30C39E48C00087011 /* SmartReplace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmartReplace.cpp; sourceTree = "<group>"; };
     
    87298735                                06693F450BFBC91600216072 /* inspector */,
    87308736                                8538F0000AD71770006A81D1 /* AbstractView.idl */,
     8737                                4B17CBC80D945B370053F183 /* AccessibilityObject.h */,
     8738                                4B5B7C8D0D945CFA00DDF3AB /* AccessibilityObject.cpp */,
    87318739                                BC80C9890CD2950500A0B7B3 /* AnimationController.cpp */,
    87328740                                BC80C98A0CD2950500A0B7B3 /* AnimationController.h */,
     
    1009010098                        isa = PBXGroup;
    1009110099                        children = (
     10100                                4B5B7C9B0D945D5500DDF3AB /* AccessibilityObjectMac.mm */,
     10101                                4B17CBCA0D945B910053F183 /* AccessibilityObjectWrapper.mm */,
     10102                                4B17CBCB0D945B910053F183 /* AccessibilityObjectWrapper.h */,
    1009210103                                1AF326400D78B5530068F0C4 /* AXObjectCacheMac.mm */,
    10093                                 1AF326420D78B5530068F0C4 /* WebCoreAXObject.h */,
    10094                                 1AF326430D78B5530068F0C4 /* WebCoreAXObject.mm */,
    1009510104                                ABAF22070C03B1C700B0BCF0 /* ChromeMac.mm */,
    1009610105                                93C09A7E0B064EEF005ABD4D /* EventHandlerMac.mm */,
     
    1461114620                                A77979290D6B9E64003851B9 /* JSImageData.h in Headers */,
    1461214621                                1CEFC9B90D78DC8C007D2579 /* SchedulePair.h in Headers */,
    14613                                 1AF326480D78B5530068F0C4 /* WebCoreAXObject.h in Headers */,
    1461414622                                1AF326780D78B9440068F0C4 /* AXObjectCache.h in Headers */,
    1461514623                                9302B0BF0D79F82C00C7EE83 /* PageGroup.h in Headers */,
     
    1466214670                                9382AAB50D8C386100F357A6 /* NodeWithIndexBefore.h in Headers */,
    1466314671                                9382AAB60D8C386100F357A6 /* NodeWithIndexAfter.h in Headers */,
     14672                                4B17CBC90D945B370053F183 /* AccessibilityObject.h in Headers */,
     14673                                4B17CBCD0D945B910053F183 /* AccessibilityObjectWrapper.h in Headers */,
    1466414674                                512DD8F50D91E6AF000F89EE /* LegacyWebArchive.h in Headers */,
    1466514675                                512DD8F60D91E6AF000F89EE /* Archive.h in Headers */,
     
    1626416274                                1CEFC9BA0D78DC8C007D2579 /* SchedulePair.cpp in Sources */,
    1626516275                                1AF326460D78B5530068F0C4 /* AXObjectCacheMac.mm in Sources */,
    16266                                 1AF326490D78B5530068F0C4 /* WebCoreAXObject.mm in Sources */,
    1626716276                                9302B0BD0D79F82900C7EE83 /* PageGroup.cpp in Sources */,
    1626816277                                1CE24F970D7CAF0E007E04C2 /* SchedulePairMac.mm in Sources */,
     
    1631416323                                A9D248080D757E7D00FDF959 /* JSMimeTypeArray.cpp in Sources */,
    1631516324                                1CE3F8B40D89CFDC00FB035F /* MainThread.cpp in Sources */,
     16325                                4B17CBCC0D945B910053F183 /* AccessibilityObjectWrapper.mm in Sources */,
     16326                                4B5B7C8E0D945CFA00DDF3AB /* AccessibilityObject.cpp in Sources */,
     16327                                4B5B7C9C0D945D5600DDF3AB /* AccessibilityObjectMac.mm in Sources */,
    1631616328                                512DD8E30D91E2B4000F89EE /* SharedBufferCF.cpp in Sources */,
    1631716329                                512DD8F40D91E6AF000F89EE /* LegacyWebArchive.cpp in Sources */,
  • trunk/WebCore/page/AXObjectCache.h

    r30674 r31517  
    11/*
    2  * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved.
     2 * Copyright (C) 2003, 2006, 2007, 2008 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#define AXObjectCache_h
    2828
     29#include "AccessibilityObject.h"
    2930#include <limits.h>
    30 
    3131#include <wtf/HashMap.h>
    3232#include <wtf/HashSet.h>
     33#include <wtf/RefPtr.h>
     34#include <wtf/RetainPtr.h>
    3335
    3436#ifdef __OBJC__
    35 @class WebCoreAXObject;
    36 @class WebCoreTextMarker;
     37    @class AccessibilityObjectWrapper;
     38    @class WebCoreTextMarker;
    3739#else
    38 class WebCoreAXObject;
    39 class WebCoreTextMarker;
     40    class AccessibilityObjectWrapper;
     41    class WebCoreTextMarker;
    4042#endif
    4143
     
    5658        ~AXObjectCache();
    5759
    58         WebCoreAXObject* get(RenderObject*);
     60        AccessibilityObject* get(RenderObject*);
    5961        void remove(RenderObject*);
    6062
    61         void removeAXID(WebCoreAXObject*);
     63        void removeAXID(AccessibilityObject*);
    6264
    6365        WebCoreTextMarker* textMarkerForVisiblePosition(const VisiblePosition&);
     
    8183#endif
    8284
    83         AXID getAXID(WebCoreAXObject*);
     85        AXID getAXID(AccessibilityObject*);
    8486
    85         HashMap<RenderObject*, WebCoreAXObject*> m_objects;
     87        HashMap<RenderObject*, RefPtr<AccessibilityObject> > m_objects;
    8688        HashSet<AXID, IntHash<AXID>, AXIDHashTraits> m_idsInUse;
    8789    };
     
    8991#if !PLATFORM(MAC)
    9092    inline AXObjectCache::~AXObjectCache() { }
    91     inline WebCoreAXObject* AXObjectCache::get(RenderObject*) { return 0; }
     93    inline AccessibilityObject* AXObjectCache::get(RenderObject*) { return 0; }
    9294    inline void AXObjectCache::remove(RenderObject*) { }
    93     inline void AXObjectCache::removeAXID(WebCoreAXObject*) { }
     95    inline void AXObjectCache::removeAXID(AccessibilityObject*) { }
    9496    inline void AXObjectCache::childrenChanged(RenderObject*) { }
    9597    inline void AXObjectCache::postNotification(RenderObject*, const String&) { }
  • trunk/WebCore/page/mac/AXObjectCacheMac.mm

    r30992 r31517  
    11/*
    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.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#import "AXObjectCache.h"
    2828
    29 #import "Document.h"
    30 #import "FoundationExtras.h"
     29#import "AccessibilityObject.h"
     30#import "AccessibilityObjectWrapper.h"
    3131#import "RenderObject.h"
    32 #import "WebCoreAXObject.h"
    3332#import "WebCoreViewFactory.h"
     33
     34#import <wtf/PassRefPtr.h>
    3435
    3536// The simple Cocoa calls in this file don't throw exceptions.
     
    4849AXObjectCache::~AXObjectCache()
    4950{
    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();
    5556    }
    5657}
    5758
    58 WebCoreAXObject* AXObjectCache::get(RenderObject* renderer)
    59 {
    60     WebCoreAXObject* obj = m_objects.get(renderer);
     59AccessibilityObject* AXObjectCache::get(RenderObject* renderer)
     60{
     61    RefPtr<AccessibilityObject> obj = m_objects.get(renderer).get();
    6162    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();
    6868}
    6969
    7070void AXObjectCache::remove(RenderObject* renderer)
    7171{
    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        }
    7683    }
    77 
    78     [obj detach];
    79     HardRelease(obj);
    80 
    8184    ASSERT(m_objects.size() >= m_idsInUse.size());
    8285}
    8386
    84 AXID AXObjectCache::getAXID(WebCoreAXObject* obj)
     87AXID AXObjectCache::getAXID(AccessibilityObject* obj)
    8588{
    8689    // check for already-assigned ID
    87     AXID objID = [obj axObjectID];
     90    AXID objID = obj->axObjectID();
    8891    if (objID) {
    8992        ASSERT(m_idsInUse.contains(objID));
     
    99102    m_idsInUse.add(objID);
    100103    lastUsedID = objID;
    101     [obj setAXObjectID:objID];
     104    obj->setAXObjectID(objID);
    102105
    103106    return objID;
    104107}
    105108
    106 void AXObjectCache::removeAXID(WebCoreAXObject* obj)
    107 {
    108     AXID objID = [obj axObjectID];
     109void AXObjectCache::removeAXID(AccessibilityObject* obj)
     110{
     111    AXID objID = obj->axObjectID();
    109112    if (objID == 0)
    110113        return;
    111114    ASSERT(objID != AXIDHashTraits::deletedValue());
    112115    ASSERT(m_idsInUse.contains(objID));
    113     [obj setAXObjectID:0];
     116    obj->setAXObjectID(0);
    114117    m_idsInUse.remove(objID);
    115118}
     
    128131   
    129132    // 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 needed
     133    RefPtr<AccessibilityObject> obj = get(renderer);
     134   
     135    // create a text marker, adding an ID for the AccessibilityObject if needed
    133136    TextMarkerData textMarkerData;
    134     textMarkerData.axID = getAXID(obj);
     137    textMarkerData.axID = getAXID(obj.get());
    135138    textMarkerData.node = domNode;
    136139    textMarkerData.offset = deepPos.offset();
     
    163166void AXObjectCache::childrenChanged(RenderObject* renderer)
    164167{
    165     WebCoreAXObject* obj = m_objects.get(renderer);
     168    AccessibilityObject* obj = m_objects.get(renderer).get();
    166169    if (obj)
    167         [obj childrenChanged];
     170        obj->childrenChanged();
    168171}
    169172
     
    175178    // notifications for text input objects are sent to that object
    176179    // 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);
    182188}
    183189
     
    185191{
    186192    // 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);
    189201}
    190202
  • trunk/WebCore/rendering/RenderMenuList.cpp

    r29663 r31517  
    6363}
    6464
     65// this static cast is safe because RenderMenuLists are only created for HTMLSelectElements
     66HTMLSelectElement* RenderMenuList::selectElement()
     67{
     68    return static_cast<HTMLSelectElement*>(node());
     69}
     70
    6571void RenderMenuList::createInnerBlock()
    6672{
  • trunk/WebCore/rendering/RenderMenuList.h

    r29663 r31517  
    4242    RenderMenuList(HTMLSelectElement*);
    4343    ~RenderMenuList();
     44   
     45    HTMLSelectElement* selectElement();
    4446
    4547    virtual bool isMenuList() const { return true; }
  • trunk/WebKit/mac/ChangeLog

    r31489 r31517  
     12008-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
    192008-03-31  Brady Eidson  <beidson@apple.com>
    210
  • trunk/WebKit/mac/WebView/WebFrame.mm

    r31409 r31517  
    4848#import "WebViewInternal.h"
    4949#import <JavaScriptCore/APICast.h>
     50#import <WebCore/AccessibilityObject.h>
    5051#import <WebCore/AXObjectCache.h>
    5152#import <WebCore/ColorMac.h>
     
    649650    if (!root)
    650651        return nil;
    651     return _private->coreFrame->document()->axObjectCache()->get(root);
     652    return _private->coreFrame->document()->axObjectCache()->get(root)->wrapper();
    652653}
    653654
Note: See TracChangeset for help on using the changeset viewer.