[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
cfleizach at apple.com
cfleizach at apple.com
Wed Dec 22 11:28:50 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 4186694d4868458a41888ae66a82eb5f4a3d48dd
Author: cfleizach at apple.com <cfleizach at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Jul 26 23:33:31 2010 +0000
AX: Safari does not support ARIA mixed checkboxes
https://bugs.webkit.org/show_bug.cgi?id=43016
Reviewed by Darin Adler.
WebCore:
Test: platform/mac/accessibility/mixed-checkbox.html
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::checkboxOrRadioValue):
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::isNativeCheckboxOrRadio):
(WebCore::AccessibilityRenderObject::checkboxOrRadioValue):
* accessibility/AccessibilityRenderObject.h:
* accessibility/mac/AccessibilityObjectWrapper.mm:
(-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
LayoutTests:
* platform/mac/accessibility/mixed-checkbox-expected.txt: Added.
* platform/mac/accessibility/mixed-checkbox.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64088 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index c93d156..a7c5051 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
+2010-07-26 Chris Fleizach <cfleizach at apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: Safari does not support ARIA mixed checkboxes
+ https://bugs.webkit.org/show_bug.cgi?id=43016
+
+ * platform/mac/accessibility/mixed-checkbox-expected.txt: Added.
+ * platform/mac/accessibility/mixed-checkbox.html: Added.
+
2010-07-26 Shimeng (Simon) Wang <swang at google.com>
Reviewed by Darin Adler.
diff --git a/LayoutTests/platform/mac/accessibility/mixed-checkbox-expected.txt b/LayoutTests/platform/mac/accessibility/mixed-checkbox-expected.txt
new file mode 100644
index 0000000..3387202
--- /dev/null
+++ b/LayoutTests/platform/mac/accessibility/mixed-checkbox-expected.txt
@@ -0,0 +1,23 @@
+checkbox1
+
+checkbox2
+
+checkbox3
+
+checkbox4
+
+
+This tests that checkboxes will return the right AXValue for false/true/mixed.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS accessibilityController.focusedElement.intValue is 0
+PASS accessibilityController.focusedElement.intValue is 1
+PASS accessibilityController.focusedElement.intValue is 2
+PASS accessibilityController.focusedElement.intValue is 0
+PASS accessibilityController.focusedElement.intValue is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/mac/accessibility/mixed-checkbox.html b/LayoutTests/platform/mac/accessibility/mixed-checkbox.html
new file mode 100644
index 0000000..08d91f6
--- /dev/null
+++ b/LayoutTests/platform/mac/accessibility/mixed-checkbox.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../../fast/js/resources/js-test-style.css">
+<script>
+var successfullyParsed = false;
+</script>
+<script src="../../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body id="body">
+
+<div tabindex=0 id="box1" role="checkbox" aria-checked="false">checkbox1</div><BR>
+<div tabindex=0 id="box2" role="checkbox" aria-checked="true">checkbox2</div><BR>
+<div tabindex=0 id="box3" role="checkbox" aria-checked="mixed">checkbox3</div><BR>
+<div tabindex=0 id="box4" role="checkbox">checkbox4</div><BR>
+<input tabindex=0 id="box5" type="checkbox" role="checkbox" aria-checked="true"><br>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+ description("This tests that checkboxes will return the right AXValue for false/true/mixed.");
+
+ if (window.accessibilityController) {
+
+ // aria-state=false
+ document.getElementById("box1").focus();
+ shouldBe("accessibilityController.focusedElement.intValue", "0");
+
+ // aria-state=true
+ document.getElementById("box2").focus();
+ shouldBe("accessibilityController.focusedElement.intValue", "1");
+
+ // aria-state=mixed
+ document.getElementById("box3").focus();
+ shouldBe("accessibilityController.focusedElement.intValue", "2");
+
+ // no aria state, default to off
+ document.getElementById("box4").focus();
+ shouldBe("accessibilityController.focusedElement.intValue", "0");
+
+ // native checkbox is also aria checkbox, default to native semantics
+ document.getElementById("box5").focus();
+ shouldBe("accessibilityController.focusedElement.intValue", "0");
+
+ }
+
+ successfullyParsed = true;
+</script>
+
+<script src="../../../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a8fdf53..7160376 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-07-26 Chris Fleizach <cfleizach at apple.com>
+
+ Reviewed by Darin Adler.
+
+ AX: Safari does not support ARIA mixed checkboxes
+ https://bugs.webkit.org/show_bug.cgi?id=43016
+
+ Test: platform/mac/accessibility/mixed-checkbox.html
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::checkboxOrRadioValue):
+ * accessibility/AccessibilityObject.h:
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::AccessibilityRenderObject::isNativeCheckboxOrRadio):
+ (WebCore::AccessibilityRenderObject::checkboxOrRadioValue):
+ * accessibility/AccessibilityRenderObject.h:
+ * accessibility/mac/AccessibilityObjectWrapper.mm:
+ (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
+
2010-07-26 Shimeng (Simon) Wang <swang at google.com>
Reviewed by Darin Adler.
diff --git a/WebCore/accessibility/AccessibilityObject.cpp b/WebCore/accessibility/AccessibilityObject.cpp
index 6c891b8..a0959e6 100644
--- a/WebCore/accessibility/AccessibilityObject.cpp
+++ b/WebCore/accessibility/AccessibilityObject.cpp
@@ -985,6 +985,8 @@ AccessibilityButtonState AccessibilityObject::checkboxOrRadioValue() const
const AtomicString& result = getAttribute(aria_checkedAttr);
if (equalIgnoringCase(result, "true"))
return ButtonStateOn;
+ if (equalIgnoringCase(result, "mixed"))
+ return ButtonStateMixed;
return ButtonStateOff;
}
diff --git a/WebCore/accessibility/AccessibilityObject.h b/WebCore/accessibility/AccessibilityObject.h
index f1e785b..b8b0875 100644
--- a/WebCore/accessibility/AccessibilityObject.h
+++ b/WebCore/accessibility/AccessibilityObject.h
@@ -213,6 +213,7 @@ enum AccessibilityObjectInclusion {
enum AccessibilityButtonState {
ButtonStateOff = 0,
ButtonStateOn,
+ ButtonStateMixed,
};
struct VisiblePositionRange {
diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
index 3f7235d..fecb16c 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -569,6 +569,15 @@ bool AccessibilityRenderObject::isIndeterminate() const
return inputElement->isIndeterminate();
}
+bool AccessibilityRenderObject::isNativeCheckboxOrRadio() const
+{
+ Node* elementNode = node();
+ if (elementNode && elementNode->isElementNode())
+ return toInputElement(static_cast<Element*>(elementNode));
+
+ return false;
+}
+
bool AccessibilityRenderObject::isChecked() const
{
ASSERT(m_renderer);
@@ -1011,7 +1020,10 @@ Node* AccessibilityRenderObject::node() const
AccessibilityButtonState AccessibilityRenderObject::checkboxOrRadioValue() const
{
- return isChecked() ? ButtonStateOn : ButtonStateOff;
+ if (isNativeCheckboxOrRadio())
+ return isChecked() ? ButtonStateOn : ButtonStateOff;
+
+ return AccessibilityObject::checkboxOrRadioValue();
}
String AccessibilityRenderObject::valueDescription() const
diff --git a/WebCore/accessibility/AccessibilityRenderObject.h b/WebCore/accessibility/AccessibilityRenderObject.h
index c3d2b87..86fcbd4 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.h
+++ b/WebCore/accessibility/AccessibilityRenderObject.h
@@ -283,6 +283,7 @@ private:
AccessibilityRole determineAriaRoleAttribute() const;
bool isTabItemSelected() const;
+ bool isNativeCheckboxOrRadio() const;
IntRect checkboxOrRadioRect() const;
void addRadioButtonGroupMembers(AccessibilityChildrenVector& linkedUIElements) const;
AccessibilityObject* internalLinkElement() const;
diff --git a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
index c2c005c..bb16ae7 100644
--- a/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
+++ b/WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
@@ -1524,6 +1524,8 @@ static NSString* roleValueToNSString(AccessibilityRole value)
return [NSNumber numberWithInt:0];
case ButtonStateOn:
return [NSNumber numberWithInt:1];
+ case ButtonStateMixed:
+ return [NSNumber numberWithInt:2];
}
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list