Title: [152388] trunk
- Revision
- 152388
- Author
- [email protected]
- Date
- 2013-07-03 22:28:03 -0700 (Wed, 03 Jul 2013)
Log Message
AX: Items the img aria role aren't inserting an object replacement character
https://bugs.webkit.org/show_bug.cgi?id=118259
Source/WebCore:
Reviewed by Tim Horton.
VoiceOver relies on object replacement characters being emitted when asking for selected text.
This has worked if a real <img> is used, but if role="img" is used on a <div>, for example,
no emission is performed, which leads to missed elements in text.
Test: platform/mac/accessibility/aria-image-emits-object-replacement.html
* editing/TextIterator.cpp:
(WebCore::isRendererReplacedElement):
(WebCore::TextIterator::advance):
LayoutTests:
Reviewed by Reviewed by Tim Horton.
* accessibility/non-native-image-crash-expected.txt:
* platform/mac/accessibility/aria-image-emits-object-replacement-expected.txt: Added.
* platform/mac/accessibility/aria-image-emits-object-replacement.html: Added.
* platform/mac/accessibility/img-fallsback-to-title-expected.txt:
Update expected tests where role="img" now emits replacement character.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (152387 => 152388)
--- trunk/LayoutTests/ChangeLog 2013-07-04 04:31:30 UTC (rev 152387)
+++ trunk/LayoutTests/ChangeLog 2013-07-04 05:28:03 UTC (rev 152388)
@@ -1,3 +1,16 @@
+2013-07-03 Chris Fleizach <[email protected]>
+
+ AX: Items the img aria role aren't inserting an object replacement character
+ https://bugs.webkit.org/show_bug.cgi?id=118259
+
+ Reviewed by Reviewed by Tim Horton.
+
+ * accessibility/non-native-image-crash-expected.txt:
+ * platform/mac/accessibility/aria-image-emits-object-replacement-expected.txt: Added.
+ * platform/mac/accessibility/aria-image-emits-object-replacement.html: Added.
+ * platform/mac/accessibility/img-fallsback-to-title-expected.txt:
+ Update expected tests where role="img" now emits replacement character.
+
2013-07-03 Simon Pena <[email protected]>
WebTextCheckerClient doesn't initialize output arguments.
Modified: trunk/LayoutTests/accessibility/non-native-image-crash-expected.txt (152387 => 152388)
--- trunk/LayoutTests/accessibility/non-native-image-crash-expected.txt 2013-07-04 04:31:30 UTC (rev 152387)
+++ trunk/LayoutTests/accessibility/non-native-image-crash-expected.txt 2013-07-04 05:28:03 UTC (rev 152388)
@@ -1,3 +1,4 @@
+
======================== ___][_____ * __/ [___]\ ***====___ \ * \___________] I I ------------/
This tests that a non native image (one created through ARIA) does not cause an assert. Test passes if it does not crash in debug builds
Added: trunk/LayoutTests/platform/mac/accessibility/aria-image-emits-object-replacement-expected.txt (0 => 152388)
--- trunk/LayoutTests/platform/mac/accessibility/aria-image-emits-object-replacement-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/aria-image-emits-object-replacement-expected.txt 2013-07-04 05:28:03 UTC (rev 152388)
@@ -0,0 +1,14 @@
+
+This tests ensures that if an ARIA image is used it will emit an object replacement character in a range for string operation.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS text1.textMarkerRangeLength(textMarkerRange) is 5
+Object string for range: a  b
+PASS text1.textMarkerRangeLength(textMarkerRange) is 5
+Object string for range: c  d
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/platform/mac/accessibility/aria-image-emits-object-replacement.html (0 => 152388)
--- trunk/LayoutTests/platform/mac/accessibility/aria-image-emits-object-replacement.html (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/aria-image-emits-object-replacement.html 2013-07-04 05:28:03 UTC (rev 152388)
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<script src=""
+
+<div id="content" tabindex="0">
+
+<div id="text1">
+a <div role="img" aria-label="blah" style="background-color: #aaaaaa; width: 100px; height: 100px; display:inline-block;"></div> b
+</div>
+
+<br>
+
+<div id="text2">
+c <img src="" aria-label="blah" style="background-color: #aaaaaa; width: 100px; height: 100px;"> d
+</div>
+
+</div>
+
+<div id="console"></div>
+<script>
+
+description("This tests ensures that if an ARIA image is used it will emit an object replacement character in a range for string operation.")
+
+if (window.testRunner && window.accessibilityController) {
+
+ var text1 = accessibilityController.accessibleElementById("text1");
+ var textMarkerRange = text1.textMarkerRangeForElement(text1);
+ shouldBe("text1.textMarkerRangeLength(textMarkerRange)", "5");
+ debug("Object string for range: " + text1.stringForTextMarkerRange(textMarkerRange));
+
+ var text2 = accessibilityController.accessibleElementById("text2");
+ textMarkerRange = text2.textMarkerRangeForElement(text2);
+ shouldBe("text1.textMarkerRangeLength(textMarkerRange)", "5");
+ debug("Object string for range: " + text2.stringForTextMarkerRange(textMarkerRange));
+
+ document.getElementById("content").style.visibility = 'hidden';
+}
+
+</script>
+
+<script src=""
+</body>
+</html>
Modified: trunk/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt (152387 => 152388)
--- trunk/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt 2013-07-04 04:31:30 UTC (rev 152387)
+++ trunk/LayoutTests/platform/mac/accessibility/img-fallsback-to-title-expected.txt 2013-07-04 05:28:03 UTC (rev 152388)
@@ -1,6 +1,5 @@
-
+ test
test
-test
This tests that images will fallback to using the title attribute if no other descriptive text is present.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Modified: trunk/Source/WebCore/ChangeLog (152387 => 152388)
--- trunk/Source/WebCore/ChangeLog 2013-07-04 04:31:30 UTC (rev 152387)
+++ trunk/Source/WebCore/ChangeLog 2013-07-04 05:28:03 UTC (rev 152388)
@@ -1,3 +1,20 @@
+2013-07-03 Chris Fleizach <[email protected]>
+
+ AX: Items the img aria role aren't inserting an object replacement character
+ https://bugs.webkit.org/show_bug.cgi?id=118259
+
+ Reviewed by Tim Horton.
+
+ VoiceOver relies on object replacement characters being emitted when asking for selected text.
+ This has worked if a real <img> is used, but if role="img" is used on a <div>, for example,
+ no emission is performed, which leads to missed elements in text.
+
+ Test: platform/mac/accessibility/aria-image-emits-object-replacement.html
+
+ * editing/TextIterator.cpp:
+ (WebCore::isRendererReplacedElement):
+ (WebCore::TextIterator::advance):
+
2013-07-03 Kangil Han <[email protected]>
Adopt is/toHTMLMapElement for code cleanup
Modified: trunk/Source/WebCore/editing/TextIterator.cpp (152387 => 152388)
--- trunk/Source/WebCore/editing/TextIterator.cpp 2013-07-04 04:31:30 UTC (rev 152387)
+++ trunk/Source/WebCore/editing/TextIterator.cpp 2013-07-04 05:28:03 UTC (rev 152388)
@@ -244,6 +244,27 @@
ASSERT(stack.size() == 1 + depthCrossingShadowBoundaries(node));
}
+
+static bool isRendererReplacedElement(RenderObject* renderer)
+{
+ if (!renderer)
+ return false;
+
+ if (renderer->isImage() || renderer->isWidget())
+ return true;
+
+ if (renderer->node() && renderer->node()->isElementNode()) {
+ Element* element = toElement(renderer->node());
+ if (element->isFormControlElement() || element->hasTagName(legendTag)
+ || element->hasTagName(meterTag) || element->hasTagName(progressTag))
+ return true;
+
+ if (equalIgnoringCase(element->getAttribute(roleAttr), "img"))
+ return true;
+ }
+
+ return false;
+}
// --------
@@ -384,12 +405,7 @@
if (!m_handledNode) {
if (renderer->isText() && m_node->nodeType() == Node::TEXT_NODE) // FIXME: What about CDATA_SECTION_NODE?
m_handledNode = handleTextNode();
- else if (renderer && (renderer->isImage() || renderer->isWidget() ||
- (renderer->node() && renderer->node()->isElementNode() &&
- (toElement(renderer->node())->isFormControlElement()
- || toElement(renderer->node())->hasTagName(legendTag)
- || toElement(renderer->node())->hasTagName(meterTag)
- || toElement(renderer->node())->hasTagName(progressTag)))))
+ else if (isRendererReplacedElement(renderer))
m_handledNode = handleReplacedElement();
else
m_handledNode = handleNonTextNode();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes