Title: [117803] trunk
Revision
117803
Author
dmazz...@google.com
Date
2012-05-21 11:42:59 -0700 (Mon, 21 May 2012)

Log Message

AX: A disabled select element should not be exposed as focusable
https://bugs.webkit.org/show_bug.cgi?id=86949

Reviewed by Chris Fleizach.

* LayoutTests/accessibility/disabled-controls-not-focusable-expected.txt: Added.
* LayoutTests/accessibility/disabled-controls-not-focusable.html: Added.
* Source/WebCore/accessibility/AccessibilityListBox.h:
(AccessibilityListBox):
* Source/WebCore/accessibility/AccessibilityMenuList.cpp:
(WebCore::AccessibilityMenuList::canSetFocusAttribute):
(WebCore):
* Source/WebCore/accessibility/AccessibilityMenuList.h:
(AccessibilityMenuList):

Modified Paths

Added Paths

Diff

Modified: trunk/ChangeLog (117802 => 117803)


--- trunk/ChangeLog	2012-05-21 18:37:17 UTC (rev 117802)
+++ trunk/ChangeLog	2012-05-21 18:42:59 UTC (rev 117803)
@@ -1,3 +1,20 @@
+2012-05-21  Dominic Mazzoni  <dmazz...@google.com>
+
+        AX: A disabled select element should not be exposed as focusable
+        https://bugs.webkit.org/show_bug.cgi?id=86949
+
+        Reviewed by Chris Fleizach.
+
+        * LayoutTests/accessibility/disabled-controls-not-focusable-expected.txt: Added.
+        * LayoutTests/accessibility/disabled-controls-not-focusable.html: Added.
+        * Source/WebCore/accessibility/AccessibilityListBox.h:
+        (AccessibilityListBox):
+        * Source/WebCore/accessibility/AccessibilityMenuList.cpp:
+        (WebCore::AccessibilityMenuList::canSetFocusAttribute):
+        (WebCore):
+        * Source/WebCore/accessibility/AccessibilityMenuList.h:
+        (AccessibilityMenuList):
+
 2012-05-20  George Staikos  <stai...@webkit.org>
 
         [BlackBerry] Define navigator.vendor for BlackBerry.

Added: trunk/LayoutTests/accessibility/disabled-controls-not-focusable-expected.txt (0 => 117803)


--- trunk/LayoutTests/accessibility/disabled-controls-not-focusable-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/accessibility/disabled-controls-not-focusable-expected.txt	2012-05-21 18:42:59 UTC (rev 117803)
@@ -0,0 +1,37 @@
+                
+This test makes sure that disabled form controls are not exposed as focusable.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+button
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+text
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+checkbox
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+radio
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+submit
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+slider
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+combobox
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+listbox
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+textarea
+PASS axElement.isFocusable is true
+PASS axElement.isFocusable is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/accessibility/disabled-controls-not-focusable.html (0 => 117803)


--- trunk/LayoutTests/accessibility/disabled-controls-not-focusable.html	                        (rev 0)
+++ trunk/LayoutTests/accessibility/disabled-controls-not-focusable.html	2012-05-21 18:42:59 UTC (rev 117803)
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<script src=""
+
+<div>
+  <button id="button"></button>
+  <input id="text" type="text">
+  <input id="checkbox" type="checkbox">
+  <input id="radio" type="radio">
+  <input id="submit" type="submit">
+  <input id="slider" type="range">
+  <select id="combobox"><option>1<option>2</select>
+  <select id="listbox" multiple><option>1<option>2</select>
+  <textarea id="textarea"></textarea>
+</div>
+
+<div id="console"></div>
+<script>
+description("This test makes sure that disabled form controls are not exposed as focusable.");
+
+if (window.layoutTestController && window.accessibilityController) {
+    window.layoutTestController.dumpAsText();
+
+    function checkControl(id) {
+        window.element = document.getElementById(id);
+        debug(element.id);
+        element.focus();
+        window.axElement = accessibilityController.focusedElement;
+        shouldBeTrue("axElement.isFocusable");
+        element.disabled = true;
+        shouldBeFalse("axElement.isFocusable");
+    }
+
+    checkControl("button");
+    checkControl("text");
+    checkControl("checkbox");
+    checkControl("radio");
+    checkControl("submit");
+    checkControl("slider");
+    checkControl("combobox");
+    checkControl("listbox");
+    checkControl("textarea");
+}
+
+</script>
+
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/accessibility/AccessibilityListBox.h (117802 => 117803)


--- trunk/Source/WebCore/accessibility/AccessibilityListBox.h	2012-05-21 18:37:17 UTC (rev 117802)
+++ trunk/Source/WebCore/accessibility/AccessibilityListBox.h	2012-05-21 18:42:59 UTC (rev 117803)
@@ -43,7 +43,6 @@
     
     virtual bool isListBox() const { return true; }
     
-    virtual bool canSetFocusAttribute() const { return true; }
     virtual bool canSetSelectedChildrenAttribute() const;
     void setSelectedChildren(AccessibilityChildrenVector&);
     virtual AccessibilityRole roleValue() const { return ListBoxRole; }

Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp (117802 => 117803)


--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp	2012-05-21 18:37:17 UTC (rev 117802)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp	2012-05-21 18:42:59 UTC (rev 117803)
@@ -82,6 +82,14 @@
     return !static_cast<RenderMenuList*>(m_renderer)->popupIsVisible();
 }
 
+bool AccessibilityMenuList::canSetFocusAttribute() const
+{
+    if (!node())
+        return false;
+
+    return static_cast<Element*>(node())->isEnabledFormControl();
+}
+
 void AccessibilityMenuList::didUpdateActiveOption(int optionIndex)
 {
     RefPtr<Document> document = m_renderer->document();

Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.h (117802 => 117803)


--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.h	2012-05-21 18:37:17 UTC (rev 117802)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.h	2012-05-21 18:42:59 UTC (rev 117803)
@@ -50,7 +50,7 @@
     virtual bool isMenuList() const { return true; }
     virtual AccessibilityRole roleValue() const { return PopUpButtonRole; }
     virtual bool accessibilityIsIgnored() const { return false; }
-    virtual bool canSetFocusAttribute() const { return true; }
+    virtual bool canSetFocusAttribute() const;
 
     virtual void addChildren();
     virtual void childrenChanged();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to