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