Diff
Modified: branches/safari-537.73-branch/LayoutTests/ChangeLog (158786 => 158787)
--- branches/safari-537.73-branch/LayoutTests/ChangeLog 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/LayoutTests/ChangeLog 2013-11-06 22:04:09 UTC (rev 158787)
@@ -1,5 +1,24 @@
2013-11-06 Lucas Forschler <lforsch...@apple.com>
+ Merge r158617
+
+ 2013-11-04 Chris Fleizach <cfleiz...@apple.com>
+
+ AX: Mail attachments at the start of an email are not output by VoiceOver
+ https://bugs.webkit.org/show_bug.cgi?id=123697
+
+ Reviewed by Ryosuke Niwa.
+
+ Add two flavors of this. One where the replaced element has rendered children and one where it does not,
+ which go down two different code paths.
+
+ * platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start-expected.txt: Added.
+ * platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start.html: Added.
+ * platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start-expected.txt: Added.
+ * platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start.html: Added.
+
+2013-11-06 Lucas Forschler <lforsch...@apple.com>
+
Merge r158766
2013-08-21 Brent Fulgham <bfulg...@apple.com>
Copied: branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start-expected.txt (from rev 158617, trunk/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start-expected.txt) (0 => 158787)
--- branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start-expected.txt (rev 0)
+++ branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start-expected.txt 2013-11-06 22:04:09 UTC (rev 158787)
@@ -0,0 +1,8 @@
+Object string for BODY range: [ATTACHMENT]b
+This tests object replacements are present in strings when the replaced element is at the beginning of the document and has no rendered children.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start.html (from rev 158617, trunk/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start.html) (0 => 158787)
--- branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start.html (rev 0)
+++ branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start.html 2013-11-06 22:04:09 UTC (rev 158787)
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style>
+.fakeImage {
+ border: 1px solid black;
+ width: 100px;
+ height: 100px;
+};
+</style>
+<script src=""
+</head>
+<body id="body">
+<div role="img" aria-label="test" id="image1" class="fakeImage"></div>b
+<div id="console"></div>
+<script>
+
+description("This tests object replacements are present in strings when the replaced element is at the beginning of the document and has no rendered children.")
+
+if (window.testRunner && window.accessibilityController) {
+
+ var body = accessibilityController.rootElement.childAtIndex(0);
+ var start = body.startTextMarker;
+ var end = body.endTextMarker;
+ var textMarkerRange = body.textMarkerRangeForMarkers(start, end);
+ var text = body.stringForTextMarkerRange(textMarkerRange);
+ var replace = text.replace(String.fromCharCode(65532), "[ATTACHMENT]");
+ debug("Object string for BODY range: " + replace);
+
+ // Hide extraneous content.
+ var array = document.getElementById("console").parentNode.childNodes;
+ while (array[0] != document.getElementById("console"))
+ array[0].parentNode.removeChild(array[0]);
+}
+
+</script>
+
+<script src=""
+
+</body>
+</html>
Copied: branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start-expected.txt (from rev 158617, trunk/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start-expected.txt) (0 => 158787)
--- branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start-expected.txt (rev 0)
+++ branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start-expected.txt 2013-11-06 22:04:09 UTC (rev 158787)
@@ -0,0 +1,9 @@
+Object string for BODY range: [ATTACHMENT]inside
+b
+This tests object replacements are present in strings when the replaced element is at the beginning of the document and there are rendered children
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start.html (from rev 158617, trunk/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start.html) (0 => 158787)
--- branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start.html (rev 0)
+++ branches/safari-537.73-branch/LayoutTests/platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start.html 2013-11-06 22:04:09 UTC (rev 158787)
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<style>
+.fakeImage {
+ border: 1px solid black;
+ width: 100px;
+ height: 100px;
+};
+</style>
+<script src=""
+</head>
+<body id="body">
+<div role="img" aria-label="test" id="image1" class="fakeImage">inside</div>b
+<div id="console"></div>
+<script>
+
+description("This tests object replacements are present in strings when the replaced element is at the beginning of the document and there are rendered children")
+
+if (window.testRunner && window.accessibilityController) {
+
+ var body = accessibilityController.rootElement.childAtIndex(0);
+ var start = body.startTextMarker;
+ var end = body.endTextMarker;
+ var textMarkerRange = body.textMarkerRangeForMarkers(start, end);
+ var text = body.stringForTextMarkerRange(textMarkerRange);
+ var replace = text.replace(String.fromCharCode(65532), "[ATTACHMENT]");
+ debug("Object string for BODY range: " + replace);
+
+ // Hide extraneous content.
+ var array = document.getElementById("console").parentNode.childNodes;
+ while (array[0] != document.getElementById("console"))
+ array[0].parentNode.removeChild(array[0]);
+}
+
+</script>
+
+<script src=""
+
+</body>
+</html>
Modified: branches/safari-537.73-branch/Source/WebCore/ChangeLog (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/ChangeLog 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/ChangeLog 2013-11-06 22:04:09 UTC (rev 158787)
@@ -1,5 +1,42 @@
2013-11-06 Lucas Forschler <lforsch...@apple.com>
+ Merge r158617
+
+ 2013-11-04 Chris Fleizach <cfleiz...@apple.com>
+
+ AX: Mail attachments at the start of an email are not output by VoiceOver
+ https://bugs.webkit.org/show_bug.cgi?id=123697
+
+ Reviewed by Ryosuke Niwa.
+
+ VoiceOver is expecting that "replaced elements" (attachments in a Mail message in this case) to be
+ represented by the replacement character when asking for a stringForRange.
+
+ However, when that replaced element is at the beginning of the document, the logic does not work because
+ there is a few code places that will take that first Position and advance it forward, not accounting for replaced elements.
+ When using the TextIterator normally, it does account for these, so that's why it's only affecting as at the beginning of the document.
+
+ Also a "replaced element" can be more than just renderer->isReplaced(), hence the externing of the isRendererReplacedElement method
+ and using that it in pertinent places.
+
+ Tests: platform/mac/accessibility/object-replacement-with-no-rendered-children-at-node-start.html
+ platform/mac/accessibility/object-replacement-with-rendered-children-at-node-start.html
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::replacedNodeNeedsCharacter):
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (nsStringForReplacedNode):
+ * dom/Position.cpp:
+ (WebCore::Position::isCandidate):
+ * dom/PositionIterator.cpp:
+ * dom/Range.cpp:
+ (WebCore::Range::firstNode):
+ * editing/TextIterator.cpp:
+ (WebCore::isRendererReplacedElement):
+ * editing/TextIterator.h:
+
+2013-11-06 Lucas Forschler <lforsch...@apple.com>
+
Merge r158629
2013-11-04 Samuel White <samuel_wh...@apple.com>
Modified: branches/safari-537.73-branch/Source/WebCore/accessibility/AccessibilityObject.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/accessibility/AccessibilityObject.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/accessibility/AccessibilityObject.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -817,7 +817,7 @@
{
// we should always be given a rendered node and a replaced node, but be safe
// replaced nodes are either attachments (widgets) or images
- if (!replacedNode || !replacedNode->renderer() || !replacedNode->renderer()->isReplaced() || replacedNode->isTextNode())
+ if (!replacedNode || !isRendererReplacedElement(replacedNode->renderer()) || replacedNode->isTextNode())
return false;
// create an AX object, but skip it if it is not supposed to be seen
Modified: branches/safari-537.73-branch/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2013-11-06 22:04:09 UTC (rev 158787)
@@ -849,7 +849,7 @@
{
// we should always be given a rendered node and a replaced node, but be safe
// replaced nodes are either attachments (widgets) or images
- if (!replacedNode || !replacedNode->renderer() || !replacedNode->renderer()->isReplaced() || replacedNode->isTextNode()) {
+ if (!replacedNode || !isRendererReplacedElement(replacedNode->renderer()) || replacedNode->isTextNode()) {
ASSERT_NOT_REACHED();
return nil;
}
Modified: branches/safari-537.73-branch/Source/WebCore/dom/Position.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/dom/Position.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/dom/Position.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -924,6 +924,9 @@
if (m_anchorNode->hasTagName(htmlTag))
return false;
+ if (isRendererReplacedElement(renderer))
+ return !nodeIsUserSelectNone(deprecatedNode()) && atFirstEditingPositionForNode();
+
if (renderer->isBlockFlow()) {
if (toRenderBlock(renderer)->logicalHeight() || m_anchorNode->hasTagName(bodyTag)) {
if (!Position::hasRenderedNonAnonymousDescendantsWithHeight(renderer))
Modified: branches/safari-537.73-branch/Source/WebCore/dom/PositionIterator.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/dom/PositionIterator.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/dom/PositionIterator.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -29,6 +29,7 @@
#include "HTMLNames.h"
#include "Node.h"
#include "RenderBlock.h"
+#include "TextIterator.h"
#include "htmlediting.h"
namespace WebCore {
Modified: branches/safari-537.73-branch/Source/WebCore/dom/Range.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/dom/Range.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/dom/Range.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -1552,6 +1552,8 @@
return 0;
if (m_start.container()->offsetInCharacters())
return m_start.container();
+ if (isRendererReplacedElement(m_start.container()->renderer()))
+ return m_start.container();
if (Node* child = m_start.container()->childNode(m_start.offset()))
return child;
if (!m_start.offset())
Modified: branches/safari-537.73-branch/Source/WebCore/editing/TextIterator.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/editing/TextIterator.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/editing/TextIterator.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -245,7 +245,7 @@
ASSERT(stack.size() == 1 + depthCrossingShadowBoundaries(node));
}
-static bool isRendererReplacedElement(RenderObject* renderer)
+bool isRendererReplacedElement(RenderObject* renderer)
{
if (!renderer)
return false;
Modified: branches/safari-537.73-branch/Source/WebCore/editing/TextIterator.h (158786 => 158787)
--- branches/safari-537.73-branch/Source/WebCore/editing/TextIterator.h 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Source/WebCore/editing/TextIterator.h 2013-11-06 22:04:09 UTC (rev 158787)
@@ -63,6 +63,7 @@
String plainText(const Range*, TextIteratorBehavior defaultBehavior = TextIteratorDefaultBehavior, bool isDisplayString = false);
PassRefPtr<Range> findPlainText(const Range*, const String&, FindOptions);
+bool isRendererReplacedElement(RenderObject*);
class BitStack {
public:
Modified: branches/safari-537.73-branch/Tools/DumpRenderTree/AccessibilityUIElement.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Tools/DumpRenderTree/AccessibilityUIElement.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/DumpRenderTree/AccessibilityUIElement.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -715,6 +715,16 @@
return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->accessibilityElementForTextMarker(marker));
}
+static JSValueRef startTextMarkerCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
+{
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->startTextMarker());
+}
+
+static JSValueRef endTextMarkerCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
+{
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->endTextMarker());
+}
+
// Static Value Getters
static JSValueRef getARIADropEffectsCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
@@ -1194,6 +1204,16 @@
return 0;
}
+AccessibilityTextMarker AccessibilityUIElement::startTextMarker()
+{
+ return 0;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::endTextMarker()
+{
+ return 0;
+}
+
#endif
// Destruction
@@ -1265,6 +1285,8 @@
{ "selectedChildrenCount", selectedChildrenCountCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "horizontalScrollbar", horizontalScrollbarCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "verticalScrollbar", verticalScrollbarCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "startTextMarker", startTextMarkerCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "endTextMarker", endTextMarkerCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#if PLATFORM(IOS)
{ "iphoneLabel", getIPhoneLabelCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "iphoneHint", getIPhoneHintCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
Modified: branches/safari-537.73-branch/Tools/DumpRenderTree/AccessibilityUIElement.h (158786 => 158787)
--- branches/safari-537.73-branch/Tools/DumpRenderTree/AccessibilityUIElement.h 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/DumpRenderTree/AccessibilityUIElement.h 2013-11-06 22:04:09 UTC (rev 158787)
@@ -225,6 +225,9 @@
AccessibilityTextMarker previousTextMarker(AccessibilityTextMarker*);
AccessibilityTextMarker nextTextMarker(AccessibilityTextMarker*);
AccessibilityUIElement accessibilityElementForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker startTextMarker();
+ AccessibilityTextMarker endTextMarker();
+
JSStringRef stringForTextMarkerRange(AccessibilityTextMarkerRange*);
int textMarkerRangeLength(AccessibilityTextMarkerRange*);
bool attributedStringForTextMarkerRangeContainsAttribute(JSStringRef, AccessibilityTextMarkerRange*);
Modified: branches/safari-537.73-branch/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm (158786 => 158787)
--- branches/safari-537.73-branch/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm 2013-11-06 22:04:09 UTC (rev 158787)
@@ -1515,6 +1515,26 @@
return 0;
}
+AccessibilityTextMarker AccessibilityUIElement::startTextMarker()
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ id textMarker = [m_element accessibilityAttributeValue:@"AXStartTextMarker"];
+ return AccessibilityTextMarker(textMarker);
+ END_AX_OBJC_EXCEPTIONS
+
+ return 0;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::endTextMarker()
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ id textMarker = [m_element accessibilityAttributeValue:@"AXEndTextMarker"];
+ return AccessibilityTextMarker(textMarker);
+ END_AX_OBJC_EXCEPTIONS
+
+ return 0;
+}
+
#endif // SUPPORTS_AX_TEXTMARKERS
JSStringRef AccessibilityUIElement::supportedActions()
Modified: branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -174,6 +174,8 @@
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForPoint(int, int) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousTextMarker(AccessibilityTextMarker*) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextTextMarker(AccessibilityTextMarker*) { return 0; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarker() { return 0; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarker() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForTextMarkerRange(AccessibilityTextMarkerRange*) { return 0; }
bool AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute(JSStringRef, AccessibilityTextMarkerRange*) { return false; }
int AccessibilityUIElement::indexForTextMarker(AccessibilityTextMarker*) { return -1; }
Modified: branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h (158786 => 158787)
--- branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h 2013-11-06 22:04:09 UTC (rev 158787)
@@ -229,6 +229,8 @@
int indexForTextMarker(AccessibilityTextMarker*);
bool isTextMarkerValid(AccessibilityTextMarker*);
PassRefPtr<AccessibilityTextMarker> textMarkerForIndex(int);
+ PassRefPtr<AccessibilityTextMarker> startTextMarker();
+ PassRefPtr<AccessibilityTextMarker> endTextMarker();
// Returns an ordered list of supported actions for an element.
JSRetainPtr<JSStringRef> supportedActions() const;
Modified: branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl (158786 => 158787)
--- branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl 2013-11-06 22:04:09 UTC (rev 158787)
@@ -165,6 +165,8 @@
int indexForTextMarker(AccessibilityTextMarker marker);
boolean isTextMarkerValid(AccessibilityTextMarker marker);
AccessibilityTextMarker textMarkerForIndex(int textIndex);
+ readonly attribute AccessibilityTextMarker startTextMarker;
+ readonly attribute AccessibilityTextMarker endTextMarker;
// Returns an ordered list of supported actions for an element.
readonly attribute DOMString supportedActions;
Modified: branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp (158786 => 158787)
--- branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp 2013-11-06 22:04:09 UTC (rev 158787)
@@ -1190,7 +1190,19 @@
// FIXME: implement
return 0;
}
+
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarker()
+{
+ // FIXME: implement
+ return 0;
+}
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarker()
+{
+ // FIXME: implement
+ return 0;
+}
+
void AccessibilityUIElement::scrollToMakeVisible()
{
// FIXME: implement
Modified: branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm (158786 => 158787)
--- branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm 2013-11-06 21:57:22 UTC (rev 158786)
+++ branches/safari-537.73-branch/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm 2013-11-06 22:04:09 UTC (rev 158787)
@@ -1492,7 +1492,27 @@
return 0;
}
+
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarker()
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ id textMarker = [m_element accessibilityAttributeValue:@"AXStartTextMarker"];
+ return AccessibilityTextMarker::create(textMarker);
+ END_AX_OBJC_EXCEPTIONS
+
+ return 0;
+}
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarker()
+{
+ BEGIN_AX_OBJC_EXCEPTIONS
+ id textMarker = [m_element accessibilityAttributeValue:@"AXEndTextMarker"];
+ return AccessibilityTextMarker::create(textMarker);
+ END_AX_OBJC_EXCEPTIONS
+
+ return 0;
+}
+
static NSString *_convertMathMultiscriptPairsToString(NSArray *pairs)
{
__block NSMutableString *result = [NSMutableString string];