diff options
Diffstat (limited to 'WebCore/accessibility/mac/AccessibilityObjectWrapper.mm')
-rw-r--r-- | WebCore/accessibility/mac/AccessibilityObjectWrapper.mm | 259 |
1 files changed, 115 insertions, 144 deletions
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm index e3e28d7..cb983eb 100644 --- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm +++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm @@ -200,6 +200,22 @@ typedef unsigned NSUInteger; m_object = 0; } +- (BOOL)updateObjectBackingStore +{ + // Calling updateBackingStore() can invalidate this element so self must be retained. + // If it does become invalidated, m_object will be nil. + [[self retain] autorelease]; + + if (!m_object) + return NO; + + m_object->updateBackingStore(); + if (!m_object) + return NO; + + return YES; +} + - (AccessibilityObject*)accessibilityObject { return m_object; @@ -214,35 +230,49 @@ typedef unsigned NSUInteger; return NSAccessibilityUnignoredDescendant(widget->platformWidget()); } -static WebCoreTextMarker* textMarkerForVisiblePosition(const VisiblePosition& visiblePos) +static WebCoreTextMarker* textMarkerForVisiblePosition(AXObjectCache* cache, const VisiblePosition& visiblePos) { + ASSERT(cache); + TextMarkerData textMarkerData; - AXObjectCache::textMarkerDataForVisiblePosition(textMarkerData, visiblePos); + cache->textMarkerDataForVisiblePosition(textMarkerData, visiblePos); if (!textMarkerData.axID) return nil; return [[WebCoreViewFactory sharedFactory] textMarkerWithBytes:&textMarkerData length:sizeof(textMarkerData)]; } -static VisiblePosition visiblePositionForTextMarker(WebCoreTextMarker* textMarker) +- (WebCoreTextMarker *)textMarkerForVisiblePosition:(const VisiblePosition &)visiblePos +{ + return textMarkerForVisiblePosition(m_object->axObjectCache(), visiblePos); +} + +static VisiblePosition visiblePositionForTextMarker(AXObjectCache* cache, WebCoreTextMarker* textMarker) { + ASSERT(cache); + if (!textMarker) return VisiblePosition(); TextMarkerData textMarkerData; if (![[WebCoreViewFactory sharedFactory] getBytes:&textMarkerData fromTextMarker:textMarker length:sizeof(textMarkerData)]) return VisiblePosition(); - return AXObjectCache::visiblePositionForTextMarkerData(textMarkerData); + return cache->visiblePositionForTextMarkerData(textMarkerData); +} + +- (VisiblePosition)visiblePositionForTextMarker:(WebCoreTextMarker *)textMarker +{ + return visiblePositionForTextMarker(m_object->axObjectCache(), textMarker); } -static VisiblePosition visiblePositionForStartOfTextMarkerRange(WebCoreTextMarkerRange* textMarkerRange) +static VisiblePosition visiblePositionForStartOfTextMarkerRange(AXObjectCache *cache, WebCoreTextMarkerRange* textMarkerRange) { - return visiblePositionForTextMarker([[WebCoreViewFactory sharedFactory] startOfTextMarkerRange:textMarkerRange]); + return visiblePositionForTextMarker(cache, [[WebCoreViewFactory sharedFactory] startOfTextMarkerRange:textMarkerRange]); } -static VisiblePosition visiblePositionForEndOfTextMarkerRange(WebCoreTextMarkerRange* textMarkerRange) +static VisiblePosition visiblePositionForEndOfTextMarkerRange(AXObjectCache *cache, WebCoreTextMarkerRange* textMarkerRange) { - return visiblePositionForTextMarker([[WebCoreViewFactory sharedFactory] endOfTextMarkerRange:textMarkerRange]); + return visiblePositionForTextMarker(cache, [[WebCoreViewFactory sharedFactory] endOfTextMarkerRange:textMarkerRange]); } static WebCoreTextMarkerRange* textMarkerRangeFromMarkers(WebCoreTextMarker* textMarker1, WebCoreTextMarker* textMarker2) @@ -512,11 +542,11 @@ static NSString* nsStringForReplacedNode(Node* replacedNode) return nil; // extract the start and end VisiblePosition - VisiblePosition startVisiblePosition = visiblePositionForStartOfTextMarkerRange(textMarkerRange); + VisiblePosition startVisiblePosition = visiblePositionForStartOfTextMarkerRange(m_object->axObjectCache(), textMarkerRange); if (startVisiblePosition.isNull()) return nil; - VisiblePosition endVisiblePosition = visiblePositionForEndOfTextMarkerRange(textMarkerRange); + VisiblePosition endVisiblePosition = visiblePositionForEndOfTextMarkerRange(m_object->axObjectCache(), textMarkerRange); if (endVisiblePosition.isNull()) return nil; @@ -562,20 +592,21 @@ static NSString* nsStringForReplacedNode(Node* replacedNode) return [attrString autorelease]; } -static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(VisiblePosition startPosition, VisiblePosition endPosition) +static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(AXObjectCache *cache, VisiblePosition startPosition, VisiblePosition endPosition) { - WebCoreTextMarker* startTextMarker = textMarkerForVisiblePosition(startPosition); - WebCoreTextMarker* endTextMarker = textMarkerForVisiblePosition(endPosition); + WebCoreTextMarker* startTextMarker = textMarkerForVisiblePosition(cache, startPosition); + WebCoreTextMarker* endTextMarker = textMarkerForVisiblePosition(cache, endPosition); return textMarkerRangeFromMarkers(startTextMarker, endTextMarker); } -- (NSArray*)accessibilityActionNames +- (WebCoreTextMarkerRange *)textMarkerRangeFromVisiblePositions:(VisiblePosition)startPosition endPosition:(VisiblePosition)endPosition { - if (!m_object) - return nil; + return textMarkerRangeFromVisiblePositions(m_object->axObjectCache(), startPosition, endPosition); +} - m_object->updateBackingStore(); - if (!m_object) +- (NSArray*)accessibilityActionNames +{ + if (![self updateObjectBackingStore]) return nil; static NSArray* actionElementActions = [[NSArray alloc] initWithObjects: NSAccessibilityPressAction, NSAccessibilityShowMenuAction, nil]; @@ -638,11 +669,7 @@ static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(VisiblePositi - (NSArray*)accessibilityAttributeNames { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; if (m_object->isAttachment()) @@ -982,7 +1009,8 @@ static WebCoreTextMarkerRange* textMarkerRangeFromVisiblePositions(VisiblePositi { if (!textMarkerRange) return VisiblePositionRange(); - return VisiblePositionRange(visiblePositionForStartOfTextMarkerRange(textMarkerRange), visiblePositionForEndOfTextMarkerRange(textMarkerRange)); + AXObjectCache* cache = m_object->axObjectCache(); + return VisiblePositionRange(visiblePositionForStartOfTextMarkerRange(cache, textMarkerRange), visiblePositionForEndOfTextMarkerRange(cache, textMarkerRange)); } - (NSArray*)renderWidgetChildren @@ -1028,7 +1056,7 @@ static NSMutableArray* convertToNSArray(const AccessibilityObject::Accessibility VisibleSelection selection = m_object->selection(); if (selection.isNone()) return nil; - return textMarkerRangeFromVisiblePositions(selection.visibleStart(), selection.visibleEnd()); + return [self textMarkerRangeFromVisiblePositions:selection.visibleStart() endPosition:selection.visibleEnd()]; } - (NSValue*)position @@ -1354,11 +1382,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) // or maybe pointers to member functions - (id)accessibilityAttributeValue:(NSString*)attributeName { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; if ([attributeName isEqualToString: NSAccessibilityRoleAttribute]) @@ -1784,9 +1808,9 @@ static NSString* roleValueToNSString(AccessibilityRole value) return nil; if ([attributeName isEqualToString: @"AXStartTextMarker"]) - return textMarkerForVisiblePosition(startOfDocument(renderer->document())); + return [self textMarkerForVisiblePosition:startOfDocument(renderer->document())]; if ([attributeName isEqualToString: @"AXEndTextMarker"]) - return textMarkerForVisiblePosition(endOfDocument(renderer->document())); + return [self textMarkerForVisiblePosition:endOfDocument(renderer->document())]; if ([attributeName isEqualToString:NSAccessibilityBlockQuoteLevelAttribute]) return [NSNumber numberWithInt:blockquoteLevel(renderer)]; @@ -1889,11 +1913,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (id)accessibilityFocusedUIElement { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; RefPtr<AccessibilityObject> focusedObj = m_object->focusedUIElement(); @@ -1906,11 +1926,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (id)accessibilityHitTest:(NSPoint)point { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; RefPtr<AccessibilityObject> axObject = m_object->doAccessibilityHitTest(IntPoint(point)); @@ -1921,11 +1937,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (BOOL)accessibilityIsAttributeSettable:(NSString*)attributeName { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; if ([attributeName isEqualToString: @"AXSelectedTextMarkerRange"]) @@ -1971,11 +1983,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) // Registering an object is also required for observing notifications. Only registered objects can be observed. - (BOOL)accessibilityIsIgnored { - if (!m_object) - return YES; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return YES; if (m_object->isAttachment()) @@ -1985,11 +1993,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (NSArray* )accessibilityParameterizedAttributeNames { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; if (m_object->isAttachment()) @@ -2073,11 +2077,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (void)accessibilityPerformPressAction { - if (!m_object) - return; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return; if (m_object->isAttachment()) @@ -2088,11 +2088,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (void)accessibilityPerformIncrementAction { - if (!m_object) - return; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return; if (m_object->isAttachment()) @@ -2103,11 +2099,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (void)accessibilityPerformDecrementAction { - if (!m_object) - return; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return; if (m_object->isAttachment()) @@ -2158,11 +2150,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (void)accessibilityPerformAction:(NSString*)action { - if (!m_object) - return; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return; if ([action isEqualToString:NSAccessibilityPressAction]) @@ -2180,11 +2168,7 @@ static NSString* roleValueToNSString(AccessibilityRole value) - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attributeName { - if (!m_object) - return; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return; WebCoreTextMarkerRange* textMarkerRange = nil; @@ -2290,7 +2274,7 @@ static RenderObject* rendererForView(NSView* view) { PlainTextRange textRange = PlainTextRange(range.location, range.length); VisiblePositionRange visiblePosRange = m_object->visiblePositionRangeForRange(textRange); - return [self doAXAttributedStringForTextMarkerRange:textMarkerRangeFromVisiblePositions(visiblePosRange.start, visiblePosRange.end)]; + return [self doAXAttributedStringForTextMarkerRange:[self textMarkerRangeFromVisiblePositions:visiblePosRange.start endPosition:visiblePosRange.end]]; } // The RTF representation of the text associated with this accessibility object that is @@ -2317,8 +2301,7 @@ static RenderObject* rendererForView(NSView* view) if (!m_object || !attribute || !parameter) return nil; - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; // common parameter type check/casting. Nil checks in handlers catch wrong type case. @@ -2353,7 +2336,7 @@ static RenderObject* rendererForView(NSView* view) // dispatch if ([attribute isEqualToString:@"AXUIElementForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; AccessibilityObject* axObject = m_object->accessibilityObjectForPosition(visiblePos); if (!axObject) return nil; @@ -2362,17 +2345,17 @@ static RenderObject* rendererForView(NSView* view) if ([attribute isEqualToString:@"AXTextMarkerRangeForUIElement"]) { VisiblePositionRange vpRange = uiElement.get()->visiblePositionRange(); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXLineForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; return [NSNumber numberWithUnsignedInt:m_object->lineForPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXTextMarkerRangeForLine"]) { VisiblePositionRange vpRange = m_object->visiblePositionRangeForLine([number intValue]); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXStringForTextMarkerRange"]) { @@ -2382,7 +2365,7 @@ static RenderObject* rendererForView(NSView* view) if ([attribute isEqualToString:@"AXTextMarkerForPosition"]) { IntPoint webCorePoint = IntPoint(point); - return pointSet ? textMarkerForVisiblePosition(m_object->visiblePositionForPoint(webCorePoint)) : nil; + return pointSet ? [self textMarkerForVisiblePosition:m_object->visiblePositionForPoint(webCorePoint)] : nil; } if ([attribute isEqualToString:@"AXBoundsForTextMarkerRange"]) { @@ -2421,102 +2404,102 @@ static RenderObject* rendererForView(NSView* view) || ![[WebCoreViewFactory sharedFactory] objectIsTextMarker:textMarker2]) return nil; - VisiblePosition visiblePos1 = visiblePositionForTextMarker(textMarker1); - VisiblePosition visiblePos2 = visiblePositionForTextMarker(textMarker2); + VisiblePosition visiblePos1 = [self visiblePositionForTextMarker:(textMarker1)]; + VisiblePosition visiblePos2 = [self visiblePositionForTextMarker:(textMarker2)]; VisiblePositionRange vpRange = m_object->visiblePositionRangeForUnorderedPositions(visiblePos1, visiblePos2); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXNextTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->nextVisiblePosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->nextVisiblePosition(visiblePos)]; } if ([attribute isEqualToString:@"AXPreviousTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->previousVisiblePosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->previousVisiblePosition(visiblePos)]; } if ([attribute isEqualToString:@"AXLeftWordTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->positionOfLeftWord(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXRightWordTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->positionOfRightWord(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXLeftLineTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->leftLineVisiblePositionRange(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXRightLineTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->rightLineVisiblePositionRange(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXSentenceTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->sentenceForPosition(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXParagraphTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->paragraphForPosition(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXNextWordEndTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->nextWordEnd(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->nextWordEnd(visiblePos)]; } if ([attribute isEqualToString:@"AXPreviousWordStartTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->previousWordStart(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->previousWordStart(visiblePos)]; } if ([attribute isEqualToString:@"AXNextLineEndTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->nextLineEndPosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->nextLineEndPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXPreviousLineStartTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->previousLineStartPosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->previousLineStartPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXNextSentenceEndTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->nextSentenceEndPosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->nextSentenceEndPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXPreviousSentenceStartTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->previousSentenceStartPosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->previousSentenceStartPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXNextParagraphEndTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->nextParagraphEndPosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->nextParagraphEndPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXPreviousParagraphStartTextMarkerForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); - return textMarkerForVisiblePosition(m_object->previousParagraphStartPosition(visiblePos)); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; + return [self textMarkerForVisiblePosition:m_object->previousParagraphStartPosition(visiblePos)]; } if ([attribute isEqualToString:@"AXStyleTextMarkerRangeForTextMarker"]) { - VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); + VisiblePosition visiblePos = [self visiblePositionForTextMarker:(textMarker)]; VisiblePositionRange vpRange = m_object->styleRangeForPosition(visiblePos); - return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); + return [self textMarkerRangeFromVisiblePositions:vpRange.start endPosition:vpRange.end]; } if ([attribute isEqualToString:@"AXLengthForTextMarkerRange"]) { @@ -2530,12 +2513,12 @@ static RenderObject* rendererForView(NSView* view) // Used only by DumpRenderTree (so far). if ([attribute isEqualToString:@"AXStartTextMarkerForTextMarkerRange"]) { VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; - return textMarkerForVisiblePosition(visiblePosRange.start); + return [self textMarkerForVisiblePosition:visiblePosRange.start]; } if ([attribute isEqualToString:@"AXEndTextMarkerForTextMarkerRange"]) { VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; - return textMarkerForVisiblePosition(visiblePosRange.end); + return [self textMarkerForVisiblePosition:visiblePosRange.end]; } if (m_object->isDataTable()) { @@ -2614,11 +2597,7 @@ static RenderObject* rendererForView(NSView* view) // API that AppKit uses for faster access - (NSUInteger)accessibilityIndexOfChild:(id)child { - if (!m_object) - return NSNotFound; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return NSNotFound; // Tree objects return their rows as their children. We can use the original method @@ -2643,11 +2622,7 @@ static RenderObject* rendererForView(NSView* view) - (NSUInteger)accessibilityArrayAttributeCount:(NSString *)attribute { - if (!m_object) - return 0; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return 0; if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { @@ -2668,11 +2643,7 @@ static RenderObject* rendererForView(NSView* view) - (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute index:(NSUInteger)index maxCount:(NSUInteger)maxCount { - if (!m_object) - return nil; - - m_object->updateBackingStore(); - if (!m_object) + if (![self updateObjectBackingStore]) return nil; if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) { |