[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