Changeset 157434 in webkit
- Timestamp:
- Oct 14, 2013 5:23:25 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 6 deleted
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r157431 r157434 1 2013-10-14 Samuel White <samuel_white@apple.com> 2 3 AX: fieldset should have GroupRole and legend should be description. 4 https://bugs.webkit.org/show_bug.cgi?id=122534 5 6 Reviewed by Chris Fleizach. 7 8 legend no longer treated as titleUIElement so removing tests that check this functionality. 9 Added test to check that legend is used as AXDescription of fieldset if present. 10 11 * accessibility/fieldset-element.html: Added. 12 * accessibility/hidden-legend-expected.txt: Removed. 13 * accessibility/hidden-legend.html: Removed. 14 * accessibility/legend.html: Removed. 15 * platform/efl/accessibility/legend-expected.txt: Removed. 16 * platform/gtk/accessibility/legend-expected.txt: Removed. 17 * platform/mac/accessibility/fieldset-element-expected.txt: Added. 18 * platform/mac/accessibility/legend-expected.txt: Removed. 19 * platform/mac/accessibility/role-subrole-roledescription-expected.txt: 20 * platform/mac/accessibility/role-subrole-roledescription.html: 21 1 22 2013-10-14 Ryosuke Niwa <rniwa@webkit.org> 2 23 -
trunk/LayoutTests/platform/mac/accessibility/role-subrole-roledescription-expected.txt
r154148 r157434 116 116 117 117 PASS: legend 118 AXRole: AXGroup119 AXSubrole: 120 AXRoleDescription: group118 AXRole: 119 AXSubrole: 120 AXRoleDescription: 121 121 122 122 PASS: footer -
trunk/LayoutTests/platform/mac/accessibility/role-subrole-roledescription.html
r155282 r157434 36 36 <!-- skipped <embed> --> 37 37 <fieldset data-role="AXGroup" data-subrole="" data-roledescription="group" class="ex"> 38 <legend data-role=" AXGroup" data-subrole="" data-roledescription="group" class="ex">X</legend>38 <legend data-role="" data-subrole="" data-roledescription="" class="ex">X</legend> 39 39 </fieldset> 40 40 <!-- skipped figure/figcaption http://webkit.org/b/108996 --> -
trunk/Source/WebCore/ChangeLog
r157432 r157434 1 2013-10-14 Samuel White <samuel_white@apple.com> 2 3 AX: fieldset should have GroupRole and legend should be description. 4 https://bugs.webkit.org/show_bug.cgi?id=122534 5 6 Reviewed by Chris Fleizach. 7 8 Changes fieldset to derive AXDescription from legend if one is available. Added 9 convenience method to AccessibilityObject to fetch element if available. 10 11 Test: accessibility/fieldset-element.html 12 13 * accessibility/AccessibilityNodeObject.cpp: 14 (WebCore::AccessibilityNodeObject::canHaveChildren): 15 (WebCore::AccessibilityNodeObject::alternativeText): 16 * accessibility/AccessibilityObject.cpp: 17 (WebCore::AccessibilityObject::element): 18 (WebCore::AccessibilityObject::isARIAHidden): 19 (WebCore::AccessibilityObject::isDOMHidden): 20 (WebCore::AccessibilityObject::defaultObjectInclusion): 21 * accessibility/AccessibilityObject.h: 22 (WebCore::AccessibilityObject::isHidden): 23 * accessibility/AccessibilitySlider.cpp: 24 (WebCore::AccessibilitySlider::getAttribute): 25 (WebCore::AccessibilitySlider::valueForRange): 26 (WebCore::AccessibilitySlider::maxValueForRange): 27 (WebCore::AccessibilitySlider::minValueForRange): 28 (WebCore::AccessibilitySlider::setValue): 29 (WebCore::AccessibilitySlider::inputElement): 30 * accessibility/AccessibilitySlider.h: 31 * accessibility/mac/AccessibilityObjectMac.mm: 32 (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject): 33 * html/HTMLFieldSetElement.cpp: 34 (WebCore::HTMLFieldSetElement::legend): 35 * html/HTMLFieldSetElement.h: 36 1 37 2013-10-14 Roger Fong <roger_fong@apple.com> 2 38 -
trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
r157231 r157434 89 89 using namespace HTMLNames; 90 90 91 static String accessibleNameForNode(Node*); 92 91 93 AccessibilityNodeObject::AccessibilityNodeObject(Node* node) 92 94 : AccessibilityObject() … … 395 397 case ProgressIndicatorRole: 396 398 return false; 399 case LegendRole: 400 if (Element* element = this->element()) 401 return !ancestorsOfType<HTMLFieldSetElement>(element).first(); 397 402 default: 398 403 return true; … … 1251 1256 if (!node) 1252 1257 return; 1258 1259 // The fieldset element derives its alternative text from the first associated legend element if one is available. 1260 if (isHTMLFieldSetElement(node)) { 1261 AccessibilityObject* object = axObjectCache()->getOrCreate(toHTMLFieldSetElement(node)->legend()); 1262 if (object && !object->isHidden()) 1263 textOrder.append(AccessibilityText(accessibleNameForNode(object->node()), AlternativeText)); 1264 } 1253 1265 1254 1266 #if ENABLE(SVG) -
trunk/Source/WebCore/accessibility/AccessibilityObject.cpp
r157394 r157434 1537 1537 } 1538 1538 1539 Element* AccessibilityObject::element() const 1540 { 1541 Node* node = this->node(); 1542 if (node && node->isElementNode()) 1543 return toElement(node); 1544 return 0; 1545 } 1546 1539 1547 const AtomicString& AccessibilityObject::placeholderValue() const 1540 1548 { … … 1996 2004 } 1997 2005 1998 bool AccessibilityObject::ariaIsHidden() const 1999 { 2000 if (equalIgnoringCase(getAttribute(aria_hiddenAttr), "true")) 2001 return true; 2002 2003 for (AccessibilityObject* object = parentObject(); object; object = object->parentObject()) { 2006 // ARIA component of hidden definition. 2007 // http://www.w3.org/TR/wai-aria/terms#def_hidden 2008 bool AccessibilityObject::isARIAHidden() const 2009 { 2010 for (const AccessibilityObject* object = this; object; object = object->parentObject()) { 2004 2011 if (equalIgnoringCase(object->getAttribute(aria_hiddenAttr), "true")) 2005 2012 return true; 2006 2013 } 2007 2008 2014 return false; 2009 2015 } 2010 2016 2017 // DOM component of hidden definition. 2018 // http://www.w3.org/TR/wai-aria/terms#def_hidden 2019 bool AccessibilityObject::isDOMHidden() const 2020 { 2021 RenderObject* renderer = this->renderer(); 2022 if (!renderer) 2023 return true; 2024 2025 RenderStyle* style = renderer->style(); 2026 return style->display() == NONE || style->visibility() != VISIBLE; 2027 } 2028 2011 2029 AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const 2012 2030 { 2013 if ( ariaIsHidden())2031 if (isARIAHidden()) 2014 2032 return IgnoreObject; 2015 2033 -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r157369 r157434 516 516 virtual bool canSetExpandedAttribute() const { return false; } 517 517 518 Element* element() const; 518 519 virtual Node* node() const { return 0; } 519 520 virtual RenderObject* renderer() const { return 0; } … … 845 846 virtual void mathPrescripts(AccessibilityMathMultiscriptPairs&) { } 846 847 virtual void mathPostscripts(AccessibilityMathMultiscriptPairs&) { } 847 848 849 // Visibility. 850 bool isARIAHidden() const; 851 bool isDOMHidden() const; 852 bool isHidden() const { return isARIAHidden() || isDOMHidden(); } 853 848 854 #if HAVE(ACCESSIBILITY) 849 855 #if PLATFORM(GTK) || PLATFORM(EFL) … … 901 907 static bool objectMatchesSearchCriteriaWithResultLimit(AccessibilityObject*, AccessibilitySearchCriteria*, AccessibilityChildrenVector&); 902 908 virtual AccessibilityRole buttonRoleType() const; 903 bool ariaIsHidden() const;904 909 bool isOnscreen() const; 905 910 -
trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp
r157353 r157434 100 100 const AtomicString& AccessibilitySlider::getAttribute(const QualifiedName& attribute) const 101 101 { 102 return element()->getAttribute(attribute);102 return inputElement()->getAttribute(attribute); 103 103 } 104 104 … … 116 116 float AccessibilitySlider::valueForRange() const 117 117 { 118 return element()->value().toFloat();118 return inputElement()->value().toFloat(); 119 119 } 120 120 121 121 float AccessibilitySlider::maxValueForRange() const 122 122 { 123 return static_cast<float>( element()->maximum());123 return static_cast<float>(inputElement()->maximum()); 124 124 } 125 125 126 126 float AccessibilitySlider::minValueForRange() const 127 127 { 128 return static_cast<float>( element()->minimum());128 return static_cast<float>(inputElement()->minimum()); 129 129 } 130 130 131 131 void AccessibilitySlider::setValue(const String& value) 132 132 { 133 HTMLInputElement* input = element();133 HTMLInputElement* input = inputElement(); 134 134 135 135 if (input->value() == value) … … 142 142 } 143 143 144 HTMLInputElement* AccessibilitySlider:: element() const144 HTMLInputElement* AccessibilitySlider::inputElement() const 145 145 { 146 146 return toHTMLInputElement(m_renderer->node()); -
trunk/Source/WebCore/accessibility/AccessibilitySlider.h
r157044 r157434 47 47 48 48 private: 49 HTMLInputElement* element() const;49 HTMLInputElement* inputElement() const; 50 50 virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const OVERRIDE; 51 51 -
trunk/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
r143142 r157434 26 26 #import "config.h" 27 27 #import "AccessibilityObject.h" 28 #import "ElementAncestorIterator.h" 29 #import "HTMLFieldSetElement.h" 30 #import "RenderObject.h" 28 31 29 32 #if HAVE(ACCESSIBILITY) … … 80 83 return IgnoreObject; 81 84 85 if (RenderObject* renderer = this->renderer()) { 86 // The legend element is ignored if it lives inside of a fieldset element that uses it to generate alternative text. 87 if (renderer->isLegend()) { 88 Element* element = this->element(); 89 if (element && ancestorsOfType<HTMLFieldSetElement>(element).first()) 90 return IgnoreObject; 91 } 92 } 93 82 94 return DefaultBehavior; 83 95 } -
trunk/Source/WebCore/html/HTMLFieldSetElement.cpp
r157375 r157434 89 89 } 90 90 91 constHTMLLegendElement* HTMLFieldSetElement::legend() const91 HTMLLegendElement* HTMLFieldSetElement::legend() const 92 92 { 93 return descendantsOfType<HTMLLegendElement>(this).first();93 return const_cast<HTMLLegendElement*>(descendantsOfType<HTMLLegendElement>(this).first()); 94 94 } 95 95 -
trunk/Source/WebCore/html/HTMLFieldSetElement.h
r157385 r157434 36 36 static PassRefPtr<HTMLFieldSetElement> create(const QualifiedName&, Document&, HTMLFormElement*); 37 37 38 constHTMLLegendElement* legend() const;38 HTMLLegendElement* legend() const; 39 39 PassRefPtr<HTMLCollection> elements(); 40 40
Note: See TracChangeset
for help on using the changeset viewer.