Diff
Modified: releases/WebKitGTK/webkit-1.10/LayoutTests/ChangeLog (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/LayoutTests/ChangeLog 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/ChangeLog 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1,3 +1,16 @@
+2012-09-07 Dominic Mazzoni <dmazz...@google.com>
+
+ AX: ARIA spin button should support range value attributes
+ https://bugs.webkit.org/show_bug.cgi?id=96076
+
+ Reviewed by Chris Fleizach.
+
+ Test that an ARIA spin button exposes ARIA range attributes like
+ aria-valuenow, aria-valuemin, etc.
+
+ * accessibility/spinbutton-value-expected.txt: Added.
+ * accessibility/spinbutton-value.html: Added.
+
2012-09-06 Joanmarie Diggs <jdi...@igalia.com>
[Gtk] accessibility/canvas-description-and-role expected results needed
Added: releases/WebKitGTK/webkit-1.10/LayoutTests/accessibility/spinbutton-value-expected.txt (0 => 128741)
--- releases/WebKitGTK/webkit-1.10/LayoutTests/accessibility/spinbutton-value-expected.txt (rev 0)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/accessibility/spinbutton-value-expected.txt 2012-09-17 11:06:55 UTC (rev 128741)
@@ -0,0 +1,16 @@
+
+42
+This tests that a spin button supports range value attributes.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS endsWith(axSpin.intValue, '5') is true
+PASS endsWith(axSpin.minValue, '1') is true
+PASS endsWith(axSpin.maxValue, '9') is true
+PASS endsWith(axSpin.valueDescription, '5 of 9') is true
+PASS axSpin.title is axUntitled.title
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: releases/WebKitGTK/webkit-1.10/LayoutTests/accessibility/spinbutton-value.html (0 => 128741)
--- releases/WebKitGTK/webkit-1.10/LayoutTests/accessibility/spinbutton-value.html (rev 0)
+++ releases/WebKitGTK/webkit-1.10/LayoutTests/accessibility/spinbutton-value.html 2012-09-17 11:06:55 UTC (rev 128741)
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<script src=""
+
+<button id="untitled"></button>
+
+<div id="spin"
+ tabindex="0"
+ role="spinbutton"
+ aria-valuetext="5 of 9"
+ aria-valuemin="1"
+ aria-valuemax="9"
+ aria-valuenow="5">42</div>
+
+<div id="console"></div>
+<script>
+description("This tests that a spin button supports range value attributes.")
+
+if (window.testRunner && window.accessibilityController) {
+ window.testRunner.dumpAsText();
+
+ function endsWith(str, suffix) {
+ str = '' + str;
+ return str.substr(str.length - suffix.length) == suffix;
+ }
+
+ var untitled = document.getElementById('untitled');
+ untitled.focus();
+ window.axUntitled = accessibilityController.focusedElement;
+
+ var spin = document.getElementById('spin');
+ spin.focus();
+ window.axSpin = accessibilityController.focusedElement;
+
+ // Test range value attributes.
+ shouldBe("endsWith(axSpin.intValue, '5')", "true");
+ shouldBe("endsWith(axSpin.minValue, '1')", "true");
+ shouldBe("endsWith(axSpin.maxValue, '9')", "true");
+ shouldBe("endsWith(axSpin.valueDescription, '5 of 9')", "true");
+
+ // Make sure the title doesn't come from the inner text. It should just be empty if
+ // not otherwise specified.
+ shouldBe("axSpin.title", "axUntitled.title");
+}
+
+</script>
+
+<script src=""
+</body>
+</html>
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/ChangeLog (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/ChangeLog 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/ChangeLog 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1,3 +1,34 @@
+2012-09-07 Dominic Mazzoni <dmazz...@google.com>
+
+ AX: ARIA spin button should support range value attributes
+ https://bugs.webkit.org/show_bug.cgi?id=96076
+
+ Reviewed by Chris Fleizach.
+
+ Make an ARIA spin button support ARIA range attributes like
+ aria-valuenow, aria-valuemin, etc. - just like slider, progressbar,
+ and scrollbar.
+
+ Test: accessibility/spinbutton-value.html
+
+ * accessibility/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::isSpinButton):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::valueDescription):
+ (WebCore):
+ (WebCore::AccessibilityRenderObject::isAriaRange):
+ (WebCore::AccessibilityRenderObject::valueForRange):
+ (WebCore::AccessibilityRenderObject::maxValueForRange):
+ (WebCore::AccessibilityRenderObject::minValueForRange):
+ (WebCore::AccessibilityRenderObject::stringValue):
+ (WebCore::AccessibilityRenderObject::title):
+ (WebCore::AccessibilityRenderObject::isGenericFocusableElement):
+ (WebCore::AccessibilityRenderObject::ariaRoleHasPresentationalChildren):
+ * accessibility/AccessibilityRenderObject.h:
+ (AccessibilityRenderObject):
+ * accessibility/mac/WebAccessibilityObjectWrapper.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+
2012-09-06 Joanmarie Diggs <jdi...@igalia.com>
[Gtk] accessibility/canvas-description-and-role expected results needed
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityObject.cpp (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityObject.cpp 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityObject.cpp 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1556,6 +1556,14 @@
return SortDirectionNone;
}
+
+bool AccessibilityObject::supportsRangeValue() const
+{
+ return isProgressIndicator()
+ || isSlider()
+ || isScrollbar()
+ || isSpinButton();
+}
bool AccessibilityObject::supportsARIAExpanded() const
{
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityObject.h (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityObject.h 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityObject.h 2012-09-17 11:06:55 UTC (rev 128741)
@@ -365,7 +365,7 @@
virtual bool isMenuList() const { return false; }
virtual bool isMenuListPopup() const { return false; }
virtual bool isMenuListOption() const { return false; }
- virtual bool isSpinButton() const { return false; }
+ virtual bool isSpinButton() const { return roleValue() == SpinButtonRole; }
virtual bool isSpinButtonPart() const { return false; }
virtual bool isMockObject() const { return false; }
bool isTextControl() const { return roleValue() == TextAreaRole || roleValue() == TextFieldRole; }
@@ -460,6 +460,7 @@
bool supportsARIAExpanded() const;
AccessibilitySortDirection sortDirection() const;
virtual bool canvasHasFallbackContent() const { return false; }
+ bool supportsRangeValue() const;
// ARIA drag and drop
virtual bool supportsARIADropping() const { return false; }
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1156,8 +1156,7 @@
String AccessibilityRenderObject::valueDescription() const
{
- // Only sliders and progress bars support value descriptions currently.
- if (!isProgressIndicator() && !isSlider())
+ if (!isARIARange())
return String();
return getAttribute(aria_valuetextAttr).string();
@@ -1167,10 +1166,18 @@
{
return getAttribute(stepAttr).toFloat();
}
+
+bool AccessibilityRenderObject::isARIARange() const
+{
+ return m_ariaRole == ProgressIndicatorRole
+ || m_ariaRole == SliderRole
+ || m_ariaRole == ScrollBarRole
+ || m_ariaRole == SpinButtonRole;
+}
float AccessibilityRenderObject::valueForRange() const
{
- if (!isProgressIndicator() && !isSlider() && !isScrollbar())
+ if (!isARIARange())
return 0.0f;
return getAttribute(aria_valuenowAttr).toFloat();
@@ -1178,7 +1185,7 @@
float AccessibilityRenderObject::maxValueForRange() const
{
- if (!isProgressIndicator() && !isSlider())
+ if (!isARIARange())
return 0.0f;
return getAttribute(aria_valuemaxAttr).toFloat();
@@ -1186,7 +1193,7 @@
float AccessibilityRenderObject::minValueForRange() const
{
- if (!isProgressIndicator() && !isSlider())
+ if (!isARIARange())
return 0.0f;
return getAttribute(aria_valueminAttr).toFloat();
@@ -1398,7 +1405,7 @@
default:
break;
}
-
+
if (isHeading() || isLink())
return textUnderElement();
@@ -3140,6 +3147,10 @@
if (isControl())
return false;
+ // If it has an aria role, it's not generic.
+ if (m_ariaRole != UnknownRole)
+ return false;
+
// If the content editable attribute is set on this element, that's the reason
// it's focusable, and existing logic should handle this case already - so it's not a
// generic focusable element.
@@ -3376,6 +3387,7 @@
case SliderRole:
case ImageRole:
case ProgressIndicatorRole:
+ case SpinButtonRole:
// case SeparatorRole:
return true;
default:
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityRenderObject.h (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityRenderObject.h 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/AccessibilityRenderObject.h 2012-09-17 11:06:55 UTC (rev 128741)
@@ -302,6 +302,7 @@
bool isDescendantOfElementType(const QualifiedName& tagName) const;
// This returns true if it's focusable but it's not content editable and it's not a control or ARIA control.
bool isGenericFocusableElement() const;
+ bool isARIARange() const;
void addTextFieldChildren();
void addImageMapChildren();
Modified: releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1999,7 +1999,7 @@
if ([[[self attachmentView] accessibilityAttributeNames] containsObject:NSAccessibilityValueAttribute])
return [[self attachmentView] accessibilityAttributeValue:NSAccessibilityValueAttribute];
}
- if (m_object->isProgressIndicator() || m_object->isSlider() || m_object->isScrollbar())
+ if (m_object->supportsRangeValue())
return [NSNumber numberWithFloat:m_object->valueForRange()];
if (m_object->roleValue() == SliderThumbRole)
return [NSNumber numberWithFloat:m_object->parentObject()->valueForRange()];
Modified: releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/ChangeLog (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/ChangeLog 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/ChangeLog 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1,3 +1,19 @@
+2012-09-07 Dominic Mazzoni <dmazz...@google.com>
+
+ AX: ARIA spin button should support range value attributes
+ https://bugs.webkit.org/show_bug.cgi?id=96076
+
+ Reviewed by Chris Fleizach.
+
+ Expose supportsRangeValue to simplify Chromium logic for when to
+ extract a value from a range.
+
+ * public/WebAccessibilityObject.h:
+ (WebAccessibilityObject):
+ * src/WebAccessibilityObject.cpp:
+ (WebKit::WebAccessibilityObject::supportsRangeValue):
+ (WebKit):
+
2012-08-29 Dominic Mazzoni <dmazz...@google.com>
AX: Canvas should have a distinct role
Modified: releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/public/WebAccessibilityObject.h (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/public/WebAccessibilityObject.h 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/public/WebAccessibilityObject.h 2012-09-17 11:06:55 UTC (rev 128741)
@@ -142,6 +142,7 @@
WEBKIT_EXPORT WebAccessibilityObject titleUIElement() const;
WEBKIT_EXPORT WebURL url() const;
+ WEBKIT_EXPORT bool supportsRangeValue() const;
WEBKIT_EXPORT WebString valueDescription() const;
WEBKIT_EXPORT float valueForRange() const;
WEBKIT_EXPORT float maxValueForRange() const;
Modified: releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/src/WebAccessibilityObject.cpp (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/src/WebAccessibilityObject.cpp 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Source/WebKit/chromium/src/WebAccessibilityObject.cpp 2012-09-17 11:06:55 UTC (rev 128741)
@@ -667,6 +667,14 @@
return m_private->url();
}
+bool WebAccessibilityObject::supportsRangeValue() const
+{
+ if (isDetached())
+ return false;
+
+ return m_private->supportsRangeValue();
+}
+
WebString WebAccessibilityObject::valueDescription() const
{
if (isDetached())
Modified: releases/WebKitGTK/webkit-1.10/Tools/ChangeLog (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Tools/ChangeLog 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Tools/ChangeLog 2012-09-17 11:06:55 UTC (rev 128741)
@@ -1,3 +1,19 @@
+2012-09-07 Dominic Mazzoni <dmazz...@google.com>
+
+ New time input needs accessibility
+ https://bugs.webkit.org/show_bug.cgi?id=96032
+
+ Reviewed by Chris Fleizach.
+
+ Add support for valueDescription for testing.
+
+ * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
+ (getValueDescription):
+ (AccessibilityUIElement::AccessibilityUIElement):
+ (AccessibilityUIElement::valueDescriptionGetterCallback):
+ * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h:
+ (AccessibilityUIElement):
+
2012-08-29 Dominic Mazzoni <dmazz...@google.com>
AX: Canvas should have a distinct role
Modified: releases/WebKitGTK/webkit-1.10/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp 2012-09-17 11:06:55 UTC (rev 128741)
@@ -251,6 +251,12 @@
return "AXOrientation: AXHorizontalOrientation";
}
+string getValueDescription(const WebAccessibilityObject& object)
+{
+ string valueDescription = object.valueDescription().utf8();
+ return valueDescription.insert(0, "AXValueDescription: ");
+}
+
string getAttributes(const WebAccessibilityObject& object)
{
// FIXME: Concatenate all attributes of the AccessibilityObject.
@@ -303,6 +309,7 @@
bindProperty("intValue", &AccessibilityUIElement::intValueGetterCallback);
bindProperty("minValue", &AccessibilityUIElement::minValueGetterCallback);
bindProperty("maxValue", &AccessibilityUIElement::maxValueGetterCallback);
+ bindProperty("valueDescription", &AccessibilityUIElement::valueDescriptionGetterCallback);
bindProperty("childrenCount", &AccessibilityUIElement::childrenCountGetterCallback);
bindProperty("insertionPointLineNumber", &AccessibilityUIElement::insertionPointLineNumberGetterCallback);
bindProperty("selectedTextRange", &AccessibilityUIElement::selectedTextRangeGetterCallback);
@@ -452,6 +459,11 @@
result->set(accessibilityObject().maxValueForRange());
}
+void AccessibilityUIElement::valueDescriptionGetterCallback(CppVariant* result)
+{
+ result->set(getValueDescription(accessibilityObject()));
+}
+
void AccessibilityUIElement::childrenCountGetterCallback(CppVariant* result)
{
int count = 1; // Root object always has only one child, the WebView.
Modified: releases/WebKitGTK/webkit-1.10/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h (128740 => 128741)
--- releases/WebKitGTK/webkit-1.10/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h 2012-09-17 11:05:51 UTC (rev 128740)
+++ releases/WebKitGTK/webkit-1.10/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h 2012-09-17 11:06:55 UTC (rev 128741)
@@ -71,6 +71,7 @@
void intValueGetterCallback(CppVariant*);
void minValueGetterCallback(CppVariant*);
void maxValueGetterCallback(CppVariant*);
+ void valueDescriptionGetterCallback(CppVariant*);
void childrenCountGetterCallback(CppVariant*);
void insertionPointLineNumberGetterCallback(CppVariant*);
void selectedTextRangeGetterCallback(CppVariant*);