summaryrefslogtreecommitdiffstats
path: root/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/accessibility/mac/AccessibilityObjectWrapper.mm')
-rw-r--r--WebCore/accessibility/mac/AccessibilityObjectWrapper.mm259
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]) {