summaryrefslogtreecommitdiffstats
path: root/WebCore/accessibility
diff options
context:
space:
mode:
authorIain Merrick <husky@google.com>2010-09-13 16:35:48 +0100
committerIain Merrick <husky@google.com>2010-09-16 12:10:42 +0100
commit5abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306 (patch)
treeddce1aa5e3b6967a69691892e500897558ff8ab6 /WebCore/accessibility
parent12bec63ec71e46baba27f0bd9bd9d8067683690a (diff)
downloadexternal_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')
-rw-r--r--WebCore/accessibility/gtk/AccessibilityObjectAtk.cpp4
-rw-r--r--WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp12
-rw-r--r--WebCore/accessibility/mac/AccessibilityObjectWrapper.mm65
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)