diff options
author | Iain Merrick <husky@google.com> | 2010-09-13 16:35:48 +0100 |
---|---|---|
committer | Iain Merrick <husky@google.com> | 2010-09-16 12:10:42 +0100 |
commit | 5abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306 (patch) | |
tree | ddce1aa5e3b6967a69691892e500897558ff8ab6 /WebCore/accessibility | |
parent | 12bec63ec71e46baba27f0bd9bd9d8067683690a (diff) | |
download | external_webkit-5abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306.zip external_webkit-5abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306.tar.gz external_webkit-5abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306.tar.bz2 |
Merge WebKit at r67178 : Initial merge by git.
Change-Id: I57e01163b6866cb029cdadf405a0394a3918bc18
Diffstat (limited to 'WebCore/accessibility')
3 files changed, 54 insertions, 27 deletions
diff --git a/WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp b/WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp index d00574b..b22a51e 100644 --- a/WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp +++ b/WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp @@ -71,6 +71,10 @@ AccessibilityObjectInclusion AccessibilityObject::accessibilityPlatformIncludesO if (role == StaticTextRole) return IgnoreObject; + // Bullets/numbers for list items shouldn't be exposed as AtkObjects. + if (roleValue() == ListMarkerRole) + return IgnoreObject; + return DefaultBehavior; } diff --git a/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp b/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp index b162346..90f363f 100644 --- a/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp +++ b/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp @@ -34,6 +34,7 @@ #if HAVE(ACCESSIBILITY) #include "AXObjectCache.h" +#include "AccessibilityList.h" #include "AccessibilityListBox.h" #include "AccessibilityListBoxOption.h" #include "AccessibilityRenderObject.h" @@ -54,6 +55,7 @@ #include "InlineTextBox.h" #include "IntRect.h" #include "NotImplemented.h" +#include "RenderListMarker.h" #include "RenderText.h" #include "TextEncoding.h" #include <wtf/text/CString.h> @@ -933,6 +935,16 @@ static gchar* webkit_accessible_text_get_text(AtkText* text, gint startOffset, g ret = ret.substring(start, endOffset - startOffset); } + // Prefix a item number/bullet if needed + if (coreObject->roleValue() == ListItemRole) { + RenderObject* objRenderer = static_cast<AccessibilityRenderObject*>(coreObject)->renderer(); + RenderObject* markerRenderer = objRenderer ? objRenderer->firstChild() : 0; + if (markerRenderer && markerRenderer->isListMarker()) { + String markerTxt = toRenderListMarker(markerRenderer)->text(); + ret = markerTxt.length() > 0 ? markerTxt + " " + ret : ret; + } + } + return g_strdup(ret.utf8().data()); } diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm index 9595e25..859a799 100644 --- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm +++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm @@ -2352,37 +2352,37 @@ static RenderObject* rendererForView(NSView* view) } // dispatch - if ([attribute isEqualToString: @"AXUIElementForTextMarker"]) { + if ([attribute isEqualToString:@"AXUIElementForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return m_object->accessibilityObjectForPosition(visiblePos)->wrapper(); } - if ([attribute isEqualToString: @"AXTextMarkerRangeForUIElement"]) { + if ([attribute isEqualToString:@"AXTextMarkerRangeForUIElement"]) { VisiblePositionRange vpRange = uiElement.get()->visiblePositionRange(); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXLineForTextMarker"]) { + if ([attribute isEqualToString:@"AXLineForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return [NSNumber numberWithUnsignedInt:m_object->lineForPosition(visiblePos)]; } - if ([attribute isEqualToString: @"AXTextMarkerRangeForLine"]) { + if ([attribute isEqualToString:@"AXTextMarkerRangeForLine"]) { VisiblePositionRange vpRange = m_object->visiblePositionRangeForLine([number intValue]); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXStringForTextMarkerRange"]) { + if ([attribute isEqualToString:@"AXStringForTextMarkerRange"]) { VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; return m_object->stringForVisiblePositionRange(visiblePosRange); } - if ([attribute isEqualToString: @"AXTextMarkerForPosition"]) { + if ([attribute isEqualToString:@"AXTextMarkerForPosition"]) { IntPoint webCorePoint = IntPoint(point); return pointSet ? textMarkerForVisiblePosition(m_object->visiblePositionForPoint(webCorePoint)) : nil; } - if ([attribute isEqualToString: @"AXBoundsForTextMarkerRange"]) { + if ([attribute isEqualToString:@"AXBoundsForTextMarkerRange"]) { VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; NSRect rect = m_object->boundsForVisiblePositionRange(visiblePosRange); return [NSValue valueWithRect:rect]; @@ -2405,10 +2405,10 @@ static RenderObject* rendererForView(NSView* view) return m_object->stringForVisiblePositionRange(VisiblePositionRange(start, end)); } - if ([attribute isEqualToString: @"AXAttributedStringForTextMarkerRange"]) + if ([attribute isEqualToString:@"AXAttributedStringForTextMarkerRange"]) return [self doAXAttributedStringForTextMarkerRange:textMarkerRange]; - if ([attribute isEqualToString: @"AXTextMarkerRangeForUnorderedTextMarkers"]) { + if ([attribute isEqualToString:@"AXTextMarkerRangeForUnorderedTextMarkers"]) { if ([array count] < 2) return nil; @@ -2424,99 +2424,99 @@ static RenderObject* rendererForView(NSView* view) return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXNextTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXNextTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->nextVisiblePosition(visiblePos)); } - if ([attribute isEqualToString: @"AXPreviousTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXPreviousTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->previousVisiblePosition(visiblePos)); } - if ([attribute isEqualToString: @"AXLeftWordTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXLeftWordTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->positionOfLeftWord(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXRightWordTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXRightWordTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->positionOfRightWord(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXLeftLineTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXLeftLineTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->leftLineVisiblePositionRange(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXRightLineTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXRightLineTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->rightLineVisiblePositionRange(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXSentenceTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXSentenceTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->sentenceForPosition(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXParagraphTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXParagraphTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->paragraphForPosition(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXNextWordEndTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXNextWordEndTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->nextWordEnd(visiblePos)); } - if ([attribute isEqualToString: @"AXPreviousWordStartTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXPreviousWordStartTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->previousWordStart(visiblePos)); } - if ([attribute isEqualToString: @"AXNextLineEndTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXNextLineEndTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->nextLineEndPosition(visiblePos)); } - if ([attribute isEqualToString: @"AXPreviousLineStartTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXPreviousLineStartTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->previousLineStartPosition(visiblePos)); } - if ([attribute isEqualToString: @"AXNextSentenceEndTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXNextSentenceEndTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->nextSentenceEndPosition(visiblePos)); } - if ([attribute isEqualToString: @"AXPreviousSentenceStartTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXPreviousSentenceStartTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->previousSentenceStartPosition(visiblePos)); } - if ([attribute isEqualToString: @"AXNextParagraphEndTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXNextParagraphEndTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->nextParagraphEndPosition(visiblePos)); } - if ([attribute isEqualToString: @"AXPreviousParagraphStartTextMarkerForTextMarker"]) { + if ([attribute isEqualToString:@"AXPreviousParagraphStartTextMarkerForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); return textMarkerForVisiblePosition(m_object->previousParagraphStartPosition(visiblePos)); } - if ([attribute isEqualToString: @"AXStyleTextMarkerRangeForTextMarker"]) { + if ([attribute isEqualToString:@"AXStyleTextMarkerRangeForTextMarker"]) { VisiblePosition visiblePos = visiblePositionForTextMarker(textMarker); VisiblePositionRange vpRange = m_object->styleRangeForPosition(visiblePos); return (id)textMarkerRangeFromVisiblePositions(vpRange.start, vpRange.end); } - if ([attribute isEqualToString: @"AXLengthForTextMarkerRange"]) { + if ([attribute isEqualToString:@"AXLengthForTextMarkerRange"]) { VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; int length = m_object->lengthForVisiblePositionRange(visiblePosRange); if (length < 0) @@ -2524,6 +2524,17 @@ static RenderObject* rendererForView(NSView* view) return [NSNumber numberWithInt:length]; } + // Used only by DumpRenderTree (so far). + if ([attribute isEqualToString:@"AXStartTextMarkerForTextMarkerRange"]) { + VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; + return textMarkerForVisiblePosition(visiblePosRange.start); + } + + if ([attribute isEqualToString:@"AXEndTextMarkerForTextMarkerRange"]) { + VisiblePositionRange visiblePosRange = [self visiblePositionRangeForTextMarkerRange:textMarkerRange]; + return textMarkerForVisiblePosition(visiblePosRange.end); + } + if (m_object->isDataTable()) { if ([attribute isEqualToString:NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { if (array == nil || [array count] != 2) |