Title: [145988] trunk
Revision
145988
Author
[email protected]
Date
2013-03-16 01:51:52 -0700 (Sat, 16 Mar 2013)

Log Message

AX: aria-hidden on container does not hide descendant popup buttons
https://bugs.webkit.org/show_bug.cgi?id=112373

Reviewed by Ryosuke Niwa.

Source/WebCore:

There are a number of subclass AX objects that implement accessibilityIsIgnored()
to always return false. This means that even if their parent is aria-hidden=true
they still show up in the tree.

This re-organizes this base case of aria-hidden into AccessibilityObject so that
it can be re-used by these special subclasses where appropriate.

Test: accessibility/aria-hidden-hides-all-elements.html

* accessibility/AccessibilityImageMapLink.h:
(WebCore::AccessibilityImageMapLink::isImageMapLink):
* accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::computeAccessibilityIsIgnored):
* accessibility/AccessibilityListBox.cpp:
(WebCore):
* accessibility/AccessibilityListBox.h:
(AccessibilityListBox):
* accessibility/AccessibilityListBoxOption.cpp:
(WebCore::AccessibilityListBoxOption::computeAccessibilityIsIgnored):
* accessibility/AccessibilityMediaControls.cpp:
(WebCore::AccessibilityMediaControl::computeAccessibilityIsIgnored):
(WebCore::AccessibilityMediaControlsContainer::computeAccessibilityIsIgnored):
(WebCore::AccessibilityMediaTimeDisplay::computeAccessibilityIsIgnored):
* accessibility/AccessibilityMediaControls.h:
(AccessibilityMediaControlsContainer):
* accessibility/AccessibilityMenuList.h:
(WebCore::AccessibilityMenuList::roleValue):
* accessibility/AccessibilityMenuListOption.cpp:
(WebCore::AccessibilityMenuListOption::computeAccessibilityIsIgnored):
* accessibility/AccessibilityMenuListPopup.cpp:
(WebCore::AccessibilityMenuListPopup::computeAccessibilityIsIgnored):
* accessibility/AccessibilityMockObject.cpp:
(WebCore::AccessibilityMockObject::computeAccessibilityIsIgnored):
(WebCore):
* accessibility/AccessibilityMockObject.h:
(AccessibilityMockObject):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::accessibilityIsIgnoredDefaultForObject):
(WebCore):
(WebCore::AccessibilityObject::ariaIsHidden):
(WebCore::AccessibilityObject::accessibilityIsIgnoredBase):
* accessibility/AccessibilityObject.h:
(AccessibilityObject):
* accessibility/AccessibilityProgressIndicator.cpp:
(WebCore::AccessibilityProgressIndicator::computeAccessibilityIsIgnored):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore):
(WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase):
(WebCore::AccessibilityRenderObject::addImageMapChildren):
* accessibility/AccessibilityRenderObject.h:
(AccessibilityRenderObject):
* accessibility/AccessibilityScrollbar.h:
(AccessibilityScrollbar):
* accessibility/AccessibilitySlider.cpp:
(WebCore):
(WebCore::AccessibilitySliderThumb::computeAccessibilityIsIgnored):
* accessibility/AccessibilitySlider.h:
(AccessibilitySlider):
* accessibility/AccessibilitySpinButton.h:
(WebCore::AccessibilitySpinButton::roleValue):
(AccessibilitySpinButtonPart):

LayoutTests:

* accessibility/aria-hidden-hides-all-elements-expected.txt: Added.
* accessibility/aria-hidden-hides-all-elements.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (145987 => 145988)


--- trunk/LayoutTests/ChangeLog	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/LayoutTests/ChangeLog	2013-03-16 08:51:52 UTC (rev 145988)
@@ -1,3 +1,13 @@
+2013-03-16  Chris Fleizach  <[email protected]>
+
+        AX: aria-hidden on container does not hide descendant popup buttons
+        https://bugs.webkit.org/show_bug.cgi?id=112373
+
+        Reviewed by Ryosuke Niwa.
+
+        * accessibility/aria-hidden-hides-all-elements-expected.txt: Added.
+        * accessibility/aria-hidden-hides-all-elements.html: Added.
+
 2013-03-16  Ryosuke Niwa  <[email protected]>
 
         Mac rebaseline after r145977.

Added: trunk/LayoutTests/accessibility/aria-hidden-hides-all-elements-expected.txt (0 => 145988)


--- trunk/LayoutTests/accessibility/aria-hidden-hides-all-elements-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/accessibility/aria-hidden-hides-all-elements-expected.txt	2013-03-16 08:51:52 UTC (rev 145988)
@@ -0,0 +1,10 @@
+This tests aria-hidden on a parent node will hide all these special subclass objects.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS content.childrenCount is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/accessibility/aria-hidden-hides-all-elements.html (0 => 145988)


--- trunk/LayoutTests/accessibility/aria-hidden-hides-all-elements.html	                        (rev 0)
+++ trunk/LayoutTests/accessibility/aria-hidden-hides-all-elements.html	2013-03-16 08:51:52 UTC (rev 145988)
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<div id="content" role="group">
+
+<main id="main" aria-hidden="true">
+    <video controls="controls"></video>
+    <select id="select"><option>a</select>
+    <input type="range">
+    <input type="data">
+    <progress></progress>
+    <ul><li>item</li></ul>
+    <select size="10"><option>a</select>
+    <img src="" width="145" height="126" usemap=""
+    <map name="map">
+        <area shape="rect" coords="0,0,100,100" href="" alt="cake">
+    </map>
+</main>
+
+</div>
+
+<script>
+
+    description("This tests aria-hidden on a parent node will hide all these special subclass objects.");
+
+    if (window.accessibilityController) {
+      
+        var content = accessibilityController.accessibleElementById("content");
+        shouldBe("content.childrenCount", "0");
+
+        // Clear the HTML for better results.
+        document.getElementById("content").innerHTML = "";  
+    }
+
+
+</script>
+
+<script src=""
+</body>
+</html>
+

Modified: trunk/Source/WebCore/ChangeLog (145987 => 145988)


--- trunk/Source/WebCore/ChangeLog	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/ChangeLog	2013-03-16 08:51:52 UTC (rev 145988)
@@ -1,3 +1,72 @@
+2013-03-16  Chris Fleizach  <[email protected]>
+
+        AX: aria-hidden on container does not hide descendant popup buttons
+        https://bugs.webkit.org/show_bug.cgi?id=112373
+
+        Reviewed by Ryosuke Niwa.
+
+        There are a number of subclass AX objects that implement accessibilityIsIgnored()
+        to always return false. This means that even if their parent is aria-hidden=true
+        they still show up in the tree.
+
+        This re-organizes this base case of aria-hidden into AccessibilityObject so that
+        it can be re-used by these special subclasses where appropriate.
+
+        Test: accessibility/aria-hidden-hides-all-elements.html
+
+        * accessibility/AccessibilityImageMapLink.h:
+        (WebCore::AccessibilityImageMapLink::isImageMapLink):
+        * accessibility/AccessibilityList.cpp:
+        (WebCore::AccessibilityList::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityListBox.cpp:
+        (WebCore):
+        * accessibility/AccessibilityListBox.h:
+        (AccessibilityListBox):
+        * accessibility/AccessibilityListBoxOption.cpp:
+        (WebCore::AccessibilityListBoxOption::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityMediaControls.cpp:
+        (WebCore::AccessibilityMediaControl::computeAccessibilityIsIgnored):
+        (WebCore::AccessibilityMediaControlsContainer::computeAccessibilityIsIgnored):
+        (WebCore::AccessibilityMediaTimeDisplay::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityMediaControls.h:
+        (AccessibilityMediaControlsContainer):
+        * accessibility/AccessibilityMenuList.h:
+        (WebCore::AccessibilityMenuList::roleValue):
+        * accessibility/AccessibilityMenuListOption.cpp:
+        (WebCore::AccessibilityMenuListOption::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityMenuListPopup.cpp:
+        (WebCore::AccessibilityMenuListPopup::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityMockObject.cpp:
+        (WebCore::AccessibilityMockObject::computeAccessibilityIsIgnored):
+        (WebCore):
+        * accessibility/AccessibilityMockObject.h:
+        (AccessibilityMockObject):
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::accessibilityIsIgnoredDefaultForObject):
+        (WebCore):
+        (WebCore::AccessibilityObject::ariaIsHidden):
+        (WebCore::AccessibilityObject::accessibilityIsIgnoredBase):
+        * accessibility/AccessibilityObject.h:
+        (AccessibilityObject):
+        * accessibility/AccessibilityProgressIndicator.cpp:
+        (WebCore::AccessibilityProgressIndicator::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore):
+        (WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase):
+        (WebCore::AccessibilityRenderObject::addImageMapChildren):
+        * accessibility/AccessibilityRenderObject.h:
+        (AccessibilityRenderObject):
+        * accessibility/AccessibilityScrollbar.h:
+        (AccessibilityScrollbar):
+        * accessibility/AccessibilitySlider.cpp:
+        (WebCore):
+        (WebCore::AccessibilitySliderThumb::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilitySlider.h:
+        (AccessibilitySlider):
+        * accessibility/AccessibilitySpinButton.h:
+        (WebCore::AccessibilitySpinButton::roleValue):
+        (AccessibilitySpinButtonPart):
+
 2013-03-15  Simon Fraser  <[email protected]>
 
         Reflected video elements hit assertion on Lion

Modified: trunk/Source/WebCore/accessibility/AccessibilityImageMapLink.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityImageMapLink.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityImageMapLink.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -74,7 +74,6 @@
     
     virtual void accessibilityText(Vector<AccessibilityText>&);
     virtual bool isImageMapLink() const { return true; }
-    virtual bool computeAccessibilityIsIgnored() const { return false; }
 };
     
 } // namespace WebCore

Modified: trunk/Source/WebCore/accessibility/AccessibilityList.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityList.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityList.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -55,13 +55,7 @@
 
 bool AccessibilityList::computeAccessibilityIsIgnored() const
 {
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
-    if (decision == IncludeObject)
-        return false;
-    if (decision == IgnoreObject)
-        return true;
-    
-    return false;
+    return accessibilityIsIgnoredByDefault();
 }
     
 bool AccessibilityList::isUnorderedList() const

Modified: trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -152,17 +152,6 @@
     return listBoxObject;
 }
     
-bool AccessibilityListBox::computeAccessibilityIsIgnored() const
-{
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
-    if (decision == IncludeObject)
-        return false;
-    if (decision == IgnoreObject)
-        return true;
-    
-    return false;
-}
-
 AccessibilityObject* AccessibilityListBox::elementAccessibilityHitTest(const IntPoint& point) const
 {
     // the internal HTMLSelectElement methods for returning a listbox option at a point

Modified: trunk/Source/WebCore/accessibility/AccessibilityListBox.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityListBox.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityListBox.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -54,7 +54,6 @@
 
 private:    
     AccessibilityObject* listBoxOptionAccessibilityObject(HTMLElement*) const;
-    virtual bool computeAccessibilityIsIgnored() const;
     virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
 };
     

Modified: trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -124,8 +124,8 @@
 {
     if (!m_optionElement)
         return true;
-    
-    if (equalIgnoringCase(getAttribute(aria_hiddenAttr), "true"))
+
+    if (accessibilityIsIgnoredByDefault())
         return true;
     
     return parentObject()->accessibilityIsIgnored();

Modified: trunk/Source/WebCore/accessibility/AccessibilityMediaControls.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMediaControls.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMediaControls.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -178,7 +178,7 @@
     if (!m_renderer || !m_renderer->style() || m_renderer->style()->visibility() != VISIBLE || controlType() == MediaTimelineContainer)
         return true;
 
-    return false;
+    return accessibilityIsIgnoredByDefault();
 }
 
 AccessibilityRole AccessibilityMediaControl::roleValue() const
@@ -256,6 +256,10 @@
     return audioElement;
 }
 
+bool AccessibilityMediaControlsContainer::computeAccessibilityIsIgnored() const
+{
+    return accessibilityIsIgnoredByDefault();
+}
 
 //
 // AccessibilityMediaTimeline
@@ -305,7 +309,10 @@
     if (!m_renderer || !m_renderer->style() || m_renderer->style()->visibility() != VISIBLE)
         return true;
 
-    return !m_renderer->style()->width().value();
+    if (!m_renderer->style()->width().value())
+        return true;
+    
+    return accessibilityIsIgnoredByDefault();
 }
 
 String AccessibilityMediaTimeDisplay::accessibilityDescription() const

Modified: trunk/Source/WebCore/accessibility/AccessibilityMediaControls.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMediaControls.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMediaControls.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -90,7 +90,7 @@
     explicit AccessibilityMediaControlsContainer(RenderObject*);
     bool controllingVideoElement() const;
     const String elementTypeName() const;
-    virtual bool computeAccessibilityIsIgnored() const { return false; }
+    virtual bool computeAccessibilityIsIgnored() const;
 };
 
 

Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -62,12 +62,12 @@
     if (!list)
         return;
 
-    if (list->accessibilityPlatformIncludesObject() == IgnoreObject) {
+    static_cast<AccessibilityMockObject*>(list)->setParent(this);
+    if (list->accessibilityIsIgnored()) {
         cache->remove(list->axObjectID());
         return;
     }
 
-    static_cast<AccessibilityMockObject*>(list)->setParent(this);
     m_children.append(list);
 
     list->addChildren();

Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -49,7 +49,6 @@
 
     virtual bool isMenuList() const { return true; }
     virtual AccessibilityRole roleValue() const { return PopUpButtonRole; }
-    virtual bool computeAccessibilityIsIgnored() const { return false; }
     virtual bool canSetFocusAttribute() const;
 
     virtual void addChildren();

Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuListOption.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMenuListOption.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuListOption.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -98,7 +98,7 @@
 
 bool AccessibilityMenuListOption::computeAccessibilityIsIgnored() const
 {
-    return accessibilityPlatformIncludesObject() != IncludeObject;
+    return accessibilityIsIgnoredByDefault();
 }
 
 LayoutRect AccessibilityMenuListOption::elementRect() const

Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -64,7 +64,7 @@
 
 bool AccessibilityMenuListPopup::computeAccessibilityIsIgnored() const
 {
-    return accessibilityPlatformIncludesObject() != IncludeObject;
+    return accessibilityIsIgnoredByDefault();
 }
 
 AccessibilityMenuListOption* AccessibilityMenuListPopup::menuListOptionAccessibilityObject(HTMLElement* element) const

Modified: trunk/Source/WebCore/accessibility/AccessibilityMockObject.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMockObject.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMockObject.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -37,4 +37,9 @@
 {
 }
     
+bool AccessibilityMockObject::computeAccessibilityIsIgnored() const
+{
+    return accessibilityIsIgnoredByDefault();
 }
+    
+}

Modified: trunk/Source/WebCore/accessibility/AccessibilityMockObject.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityMockObject.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityMockObject.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -47,6 +47,7 @@
 private:
     virtual bool isMockObject() const { return true; }
 
+    virtual bool computeAccessibilityIsIgnored() const;
     // Must be called when the parent object clears its children.
     virtual void detachFromParent() { m_parent = 0; }
 }; 

Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -1867,6 +1867,35 @@
     return role == ButtonRole || role == PopUpButtonRole || role == ToggleButtonRole;
 }
 
+bool AccessibilityObject::accessibilityIsIgnoredByDefault() const
+{
+    return defaultObjectInclusion() == IgnoreObject;
+}
+
+bool AccessibilityObject::ariaIsHidden() const
+{
+    if (equalIgnoringCase(getAttribute(aria_hiddenAttr), "true"))
+        return true;
+    
+    for (AccessibilityObject* object = parentObject(); object; object = object->parentObject()) {
+        if (equalIgnoringCase(object->getAttribute(aria_hiddenAttr), "true"))
+            return true;
+    }
+    
+    return false;
+}
+
+AccessibilityObjectInclusion AccessibilityObject::defaultObjectInclusion() const
+{
+    if (ariaIsHidden())
+        return IgnoreObject;
+    
+    if (isPresentationalChildOfAriaRole())
+        return IgnoreObject;
+    
+    return accessibilityPlatformIncludesObject();
+}
+    
 bool AccessibilityObject::accessibilityIsIgnored() const
 {
     AXComputedObjectAttributeCache* attributeCache = axObjectCache()->computedObjectAttributeCache();

Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityObject.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -486,7 +486,9 @@
     virtual Node* node() const { return 0; }
     virtual RenderObject* renderer() const { return 0; }
     virtual bool accessibilityIsIgnored() const;
-
+    virtual AccessibilityObjectInclusion defaultObjectInclusion() const;
+    bool accessibilityIsIgnoredByDefault() const;
+    
     int blockquoteLevel() const;
     virtual int headingLevel() const { return 0; }
     virtual int tableLevel() const { return 0; }
@@ -849,6 +851,7 @@
     static bool isAccessibilityTextSearchMatch(AccessibilityObject*, AccessibilitySearchCriteria*);
     static bool objectMatchesSearchCriteriaWithResultLimit(AccessibilityObject*, AccessibilitySearchCriteria*, AccessibilityChildrenVector&);
     virtual AccessibilityRole buttonRoleType() const;
+    bool ariaIsHidden() const;
 
 #if PLATFORM(GTK) || (PLATFORM(EFL) && HAVE(ACCESSIBILITY))
     bool allowsTextRanges() const;

Modified: trunk/Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -44,7 +44,7 @@
 
 bool AccessibilityProgressIndicator::computeAccessibilityIsIgnored() const
 {
-    return accessibilityIsIgnoredBase() == IgnoreObject;
+    return accessibilityIsIgnoredByDefault();
 }
     
 float AccessibilityProgressIndicator::valueForRange() const

Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -1051,22 +1051,6 @@
     return 0;   
 }
     
-bool AccessibilityRenderObject::ariaIsHidden() const
-{
-    if (equalIgnoringCase(getAttribute(aria_hiddenAttr), "true"))
-        return true;
-    
-    // aria-hidden hides this object and any children
-    AccessibilityObject* object = parentObject();
-    while (object) {
-        if (equalIgnoringCase(object->getAttribute(aria_hiddenAttr), "true"))
-            return true;
-        object = object->parentObject();
-    }
-
-    return false;
-}
-
 bool AccessibilityRenderObject::isAllowedChildOfTree() const
 {
     // Determine if this is in a tree. If so, we apply special behavior to make it work like an AXOutline.
@@ -1089,7 +1073,7 @@
     return true;
 }
     
-AccessibilityObjectInclusion AccessibilityRenderObject::accessibilityIsIgnoredBase() const
+AccessibilityObjectInclusion AccessibilityRenderObject::defaultObjectInclusion() const
 {
     // The following cases can apply to any element that's a subclass of AccessibilityRenderObject.
     
@@ -1103,24 +1087,9 @@
         
         return IgnoreObject;
     }
-    
-    // Anything marked as aria-hidden or a child of something aria-hidden must be hidden.
-    if (ariaIsHidden())
-        return IgnoreObject;
-    
-    // Anything that is a presentational role must be hidden.
-    if (isPresentationalChildOfAriaRole())
-        return IgnoreObject;
 
-    // Allow the platform to make a decision.
-    AccessibilityObjectInclusion decision = accessibilityPlatformIncludesObject();
-    if (decision == IncludeObject)
-        return IncludeObject;
-    if (decision == IgnoreObject)
-        return IgnoreObject;
-        
-    return DefaultBehavior;
-}  
+    return AccessibilityObject::defaultObjectInclusion();
+}
 
 bool AccessibilityRenderObject::computeAccessibilityIsIgnored() const
 {
@@ -1131,7 +1100,7 @@
     // Check first if any of the common reasons cause this element to be ignored.
     // Then process other use cases that need to be applied to all the various roles
     // that AccessibilityRenderObjects take on.
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
+    AccessibilityObjectInclusion decision = defaultObjectInclusion();
     if (decision == IncludeObject)
         return false;
     if (decision == IgnoreObject)
@@ -2733,8 +2702,10 @@
             areaObject->setHTMLAreaElement(static_cast<HTMLAreaElement*>(current));
             areaObject->setHTMLMapElement(map);
             areaObject->setParent(this);
-            
-            m_children.append(areaObject);
+            if (!areaObject->accessibilityIsIgnored())
+                m_children.append(areaObject);
+            else
+                axObjectCache()->remove(areaObject->axObjectID());
         }
     }
 }

Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -93,7 +93,7 @@
     virtual void setAccessibleName(const AtomicString&);
     
     // Provides common logic used by all elements when determining isIgnored.
-    AccessibilityObjectInclusion accessibilityIsIgnoredBase() const;
+    virtual AccessibilityObjectInclusion defaultObjectInclusion() const;
     
     virtual int layoutCount() const;
     virtual double estimatedLoadingProgress() const;
@@ -228,7 +228,6 @@
 private:
     void ariaListboxSelectedChildren(AccessibilityChildrenVector&);
     void ariaListboxVisibleChildren(AccessibilityChildrenVector&);
-    bool ariaIsHidden() const;
     bool isAllowedChildOfTree() const;
     bool hasTextAlternative() const;
     String positionalDescriptionForMSAA() const;

Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollbar.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityScrollbar.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollbar.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -44,7 +44,6 @@
 private:
     explicit AccessibilityScrollbar(Scrollbar*);
 
-    virtual bool computeAccessibilityIsIgnored() const { return false; }
     virtual bool canSetValueAttribute() const { return true; }
     virtual bool canSetNumericValue() const { return true; }
 

Modified: trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -113,17 +113,6 @@
     return axObjectCache()->getOrCreate(m_renderer);
 }
 
-bool AccessibilitySlider::computeAccessibilityIsIgnored() const
-{
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
-    if (decision == IncludeObject)
-        return false;
-    if (decision == IgnoreObject)
-        return true;
-    
-    return false;
-}
-    
 float AccessibilitySlider::valueForRange() const
 {
     return element()->value().toFloat();
@@ -180,13 +169,7 @@
 
 bool AccessibilitySliderThumb::computeAccessibilityIsIgnored() const
 {
-    AccessibilityObjectInclusion decision = accessibilityPlatformIncludesObject();
-    if (decision == IncludeObject)
-        return false;
-    if (decision == IgnoreObject)
-        return true;
-
-    return false;
+    return accessibilityIsIgnoredByDefault();
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/accessibility/AccessibilitySlider.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilitySlider.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilitySlider.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -47,7 +47,6 @@
 
 private:
     HTMLInputElement* element() const;
-    virtual bool computeAccessibilityIsIgnored() const;
     virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
 
     virtual AccessibilityRole roleValue() const { return SliderRole; }    

Modified: trunk/Source/WebCore/accessibility/AccessibilitySpinButton.h (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilitySpinButton.h	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilitySpinButton.h	2013-03-16 08:51:52 UTC (rev 145988)
@@ -48,7 +48,6 @@
     AccessibilitySpinButton();
 
     virtual AccessibilityRole roleValue() const { return SpinButtonRole; }
-    virtual bool computeAccessibilityIsIgnored() const { return false; }
     virtual bool isSpinButton() const { return true; }
     virtual void addChildren();
     virtual LayoutRect elementRect() const;
@@ -72,7 +71,6 @@
     virtual AccessibilityRole roleValue() const { return ButtonRole; }
     virtual bool isSpinButtonPart() const { return true; }
     virtual LayoutRect elementRect() const;
-    virtual bool computeAccessibilityIsIgnored() const { return false; }
 };
     
 inline AccessibilitySpinButton* toAccessibilitySpinButton(AccessibilityObject* object)

Modified: trunk/Source/WebCore/accessibility/AccessibilityTable.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityTable.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityTable.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -541,7 +541,7 @@
     
 bool AccessibilityTable::computeAccessibilityIsIgnored() const
 {
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
+    AccessibilityObjectInclusion decision = defaultObjectInclusion();
     if (decision == IncludeObject)
         return false;
     if (decision == IgnoreObject)

Modified: trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableCell.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -56,7 +56,7 @@
 
 bool AccessibilityTableCell::computeAccessibilityIsIgnored() const
 {
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
+    AccessibilityObjectInclusion decision = defaultObjectInclusion();
     if (decision == IncludeObject)
         return false;
     if (decision == IgnoreObject)

Modified: trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp (145987 => 145988)


--- trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp	2013-03-16 07:43:38 UTC (rev 145987)
+++ trunk/Source/WebCore/accessibility/AccessibilityTableRow.cpp	2013-03-16 08:51:52 UTC (rev 145988)
@@ -88,7 +88,7 @@
     
 bool AccessibilityTableRow::computeAccessibilityIsIgnored() const
 {    
-    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
+    AccessibilityObjectInclusion decision = defaultObjectInclusion();
     if (decision == IncludeObject)
         return false;
     if (decision == IgnoreObject)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to