[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

cfleizach at apple.com cfleizach at apple.com
Thu Apr 8 02:19:10 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 6f3a569e3883381f84825818a990d5648b7ce2a5
Author: cfleizach at apple.com <cfleizach at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Mar 11 00:36:02 2010 +0000

    VoiceOver can navigate to hidden content in widget (WAI-ARIA)
    https://bugs.webkit.org/show_bug.cgi?id=35986
    
    Reviewed by Beth Dakin.
    
    WebCore:
    
    Elements that are subclassers of AXRenderObject have not been respecting
    aria-hidden and other cases that would make them ignored. This applies
    to tables, rows, cells, select boxes, sliders, and lists. Select boxes
    also need to make sure their option elements respect aria-hidden as well.
    
    Test: accessibility/aria-hidden-with-elements.html
    
    * accessibility/AccessibilityList.cpp:
    (WebCore::AccessibilityList::accessibilityIsIgnored):
    * accessibility/AccessibilityListBox.cpp:
    (WebCore::AccessibilityListBox::addChildren):
    (WebCore::AccessibilityListBox::accessibilityIsIgnored):
    (WebCore::AccessibilityListBox::doAccessibilityHitTest):
    * accessibility/AccessibilityListBox.h:
    * accessibility/AccessibilityListBoxOption.cpp:
    (WebCore::AccessibilityListBoxOption::accessibilityIsIgnored):
    * accessibility/AccessibilityListBoxOption.h:
    * accessibility/AccessibilityRenderObject.cpp:
    (WebCore::AccessibilityRenderObject::accessibilityIsIgnoredCommon):
    (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
    (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
    * accessibility/AccessibilityRenderObject.h:
    * accessibility/AccessibilitySlider.cpp:
    (WebCore::AccessibilitySlider::accessibilityIsIgnored):
    * accessibility/AccessibilitySlider.h:
    (WebCore::AccessibilitySlider::roleValue):
    (WebCore::AccessibilitySliderThumb::roleValue):
    (WebCore::AccessibilitySliderThumb::accessibilityIsIgnored):
    * accessibility/AccessibilityTable.cpp:
    (WebCore::AccessibilityTable::accessibilityIsIgnored):
    * accessibility/AccessibilityTableCell.cpp:
    (WebCore::AccessibilityTableCell::accessibilityIsIgnored):
    * accessibility/AccessibilityTableColumn.cpp:
    (WebCore::AccessibilityTableColumn::accessibilityIsIgnored):
    * accessibility/AccessibilityTableColumn.h:
    (WebCore::AccessibilityTableColumn::roleValue):
    * accessibility/AccessibilityTableHeaderContainer.cpp:
    (WebCore::AccessibilityTableHeaderContainer::accessibilityIsIgnored):
    * accessibility/AccessibilityTableHeaderContainer.h:
    * accessibility/AccessibilityTableRow.cpp:
    (WebCore::AccessibilityTableRow::accessibilityIsIgnored):
    
    LayoutTests:
    
    * accessibility/aria-hidden-with-elements-expected.txt: Added.
    * accessibility/aria-hidden-with-elements.html: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55818 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 8dda756..ae890ad 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
+2010-03-10  Chris Fleizach  <cfleizach at apple.com>
+
+        Reviewed by Beth Dakin.
+
+        VoiceOver can navigate to hidden content in widget (WAI-ARIA)
+        https://bugs.webkit.org/show_bug.cgi?id=35986
+
+        * accessibility/aria-hidden-with-elements-expected.txt: Added.
+        * accessibility/aria-hidden-with-elements.html: Added.
+
 2010-03-10  Dmitry Titov  <dimich at chromium.org>
 
         Reviewed by Darin Adler.
diff --git a/LayoutTests/accessibility/aria-hidden-with-elements-expected.txt b/LayoutTests/accessibility/aria-hidden-with-elements-expected.txt
new file mode 100644
index 0000000..7bfa004
--- /dev/null
+++ b/LayoutTests/accessibility/aria-hidden-with-elements-expected.txt
@@ -0,0 +1,20 @@
+cell	cell	cell
+cell	cell	cell
+cell
+test
+test
+
+heading
+
+This tests that aria-hidden works as expected on elements that are subclasses of AccessibilityRenderObject
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS child.childrenCount is 0
+PASS child.childrenCount is 0
+PASS child.role is 'AXRole: AXHeading'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/accessibility/aria-hidden-with-elements.html b/LayoutTests/accessibility/aria-hidden-with-elements.html
new file mode 100644
index 0000000..7e2624e
--- /dev/null
+++ b/LayoutTests/accessibility/aria-hidden-with-elements.html
@@ -0,0 +1,61 @@
+<!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">
+
+<table border=1 summary="test" aria-hidden="true">
+<tr><td>cell</td><td>cell</td><td>cell</td></tr>
+<tr><td>cell</td><td>cell</td><td>cell</td></tr>
+</table>
+
+<div role="grid" aria-hidden="true">
+<div role="row"><div role="gridcell">cell</div></div>
+</div>
+
+<ul aria-hidden="true">
+<li>test
+<li>test
+</ul>
+
+<select size=10 aria-hidden="true">
+<option>option
+<option>option
+</select>
+
+<h1>heading</h1>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("This tests that aria-hidden works as expected on elements that are subclasses of AccessibilityRenderObject");
+
+    if (window.accessibilityController) {
+       var root = accessibilityController.rootElement;
+
+       // first child is an AXGroup that has no children
+       var child = root.childAtIndex(0).childAtIndex(0);
+       shouldBe("child.childrenCount", "0");
+
+       // second child is an AXGroup that has no children
+       child = root.childAtIndex(0).childAtIndex(1);
+       shouldBe("child.childrenCount", "0");
+
+       // the next child we ask for from the web area should be the heading, and we should have skipped over everything else.
+       child = root.childAtIndex(0).childAtIndex(2);
+       shouldBe("child.role", "'AXRole: AXHeading'");
+    }
+
+    successfullyParsed = true;
+</script>
+
+<script src="../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a9614fd..7d0eb87 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,52 @@
+2010-03-10  Chris Fleizach  <cfleizach at apple.com>
+
+        Reviewed by Beth Dakin.
+
+        VoiceOver can navigate to hidden content in widget (WAI-ARIA)
+        https://bugs.webkit.org/show_bug.cgi?id=35986
+
+        Elements that are subclassers of AXRenderObject have not been respecting
+        aria-hidden and other cases that would make them ignored. This applies
+        to tables, rows, cells, select boxes, sliders, and lists. Select boxes
+        also need to make sure their option elements respect aria-hidden as well.
+
+        Test: accessibility/aria-hidden-with-elements.html
+
+        * accessibility/AccessibilityList.cpp:
+        (WebCore::AccessibilityList::accessibilityIsIgnored):
+        * accessibility/AccessibilityListBox.cpp:
+        (WebCore::AccessibilityListBox::addChildren):
+        (WebCore::AccessibilityListBox::accessibilityIsIgnored):
+        (WebCore::AccessibilityListBox::doAccessibilityHitTest):
+        * accessibility/AccessibilityListBox.h:
+        * accessibility/AccessibilityListBoxOption.cpp:
+        (WebCore::AccessibilityListBoxOption::accessibilityIsIgnored):
+        * accessibility/AccessibilityListBoxOption.h:
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::accessibilityIsIgnoredCommon):
+        (WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
+        (WebCore::AccessibilityRenderObject::doAccessibilityHitTest):
+        * accessibility/AccessibilityRenderObject.h:
+        * accessibility/AccessibilitySlider.cpp:
+        (WebCore::AccessibilitySlider::accessibilityIsIgnored):
+        * accessibility/AccessibilitySlider.h:
+        (WebCore::AccessibilitySlider::roleValue):
+        (WebCore::AccessibilitySliderThumb::roleValue):
+        (WebCore::AccessibilitySliderThumb::accessibilityIsIgnored):
+        * accessibility/AccessibilityTable.cpp:
+        (WebCore::AccessibilityTable::accessibilityIsIgnored):
+        * accessibility/AccessibilityTableCell.cpp:
+        (WebCore::AccessibilityTableCell::accessibilityIsIgnored):
+        * accessibility/AccessibilityTableColumn.cpp:
+        (WebCore::AccessibilityTableColumn::accessibilityIsIgnored):
+        * accessibility/AccessibilityTableColumn.h:
+        (WebCore::AccessibilityTableColumn::roleValue):
+        * accessibility/AccessibilityTableHeaderContainer.cpp:
+        (WebCore::AccessibilityTableHeaderContainer::accessibilityIsIgnored):
+        * accessibility/AccessibilityTableHeaderContainer.h:
+        * accessibility/AccessibilityTableRow.cpp:
+        (WebCore::AccessibilityTableRow::accessibilityIsIgnored):
+
 2010-03-10  Dmitry Titov  <dimich at chromium.org>
 
         Reviewed by Darin Adler.
diff --git a/WebCore/accessibility/AccessibilityList.cpp b/WebCore/accessibility/AccessibilityList.cpp
index feceee5..6317826 100644
--- a/WebCore/accessibility/AccessibilityList.cpp
+++ b/WebCore/accessibility/AccessibilityList.cpp
@@ -55,8 +55,7 @@ PassRefPtr<AccessibilityList> AccessibilityList::create(RenderObject* renderer)
 
 bool AccessibilityList::accessibilityIsIgnored() const
 {
-    // Is the platform interested in the object?
-    if (accessibilityPlatformIncludesObject() == IgnoreObject)
+    if (accessibilityIsIgnoredBase())
         return true;
     
     // lists don't appear on tiger/leopard on the mac
diff --git a/WebCore/accessibility/AccessibilityListBox.cpp b/WebCore/accessibility/AccessibilityListBox.cpp
index 2c267c1..50b2514 100644
--- a/WebCore/accessibility/AccessibilityListBox.cpp
+++ b/WebCore/accessibility/AccessibilityListBox.cpp
@@ -80,7 +80,7 @@ void AccessibilityListBox::addChildren()
         // The cast to HTMLElement below is safe because the only other possible listItem type
         // would be a WMLElement, but WML builds don't use accessibility features at all.
         AccessibilityObject* listOption = listBoxOptionAccessibilityObject(static_cast<HTMLElement*>(listItems[i]));
-        if (listOption)
+        if (listOption && !listOption->accessibilityIsIgnored())
             m_children.append(listOption);
     }
 }
@@ -151,6 +151,14 @@ AccessibilityObject* AccessibilityListBox::listBoxOptionAccessibilityObject(HTML
     
     return listBoxObject;
 }
+    
+bool AccessibilityListBox::accessibilityIsIgnored() const
+{
+    if (accessibilityIsIgnoredBase())
+        return true;
+    
+    return false;
+}
 
 AccessibilityObject* AccessibilityListBox::doAccessibilityHitTest(const IntPoint& point) const
 {
@@ -165,16 +173,21 @@ AccessibilityObject* AccessibilityListBox::doAccessibilityHitTest(const IntPoint
     
     IntRect parentRect = boundingBoxRect();
     
-    const Vector<Element*>& listItems = static_cast<HTMLSelectElement*>(node)->listItems();
-    unsigned length = listItems.size();
+    AccessibilityObject* listBoxOption = 0;
+    unsigned length = m_children.size();
     for (unsigned i = 0; i < length; i++) {
         IntRect rect = toRenderListBox(m_renderer)->itemBoundingBoxRect(parentRect.x(), parentRect.y(), i);
         // The cast to HTMLElement below is safe because the only other possible listItem type
         // would be a WMLElement, but WML builds don't use accessibility features at all.
-        if (rect.contains(point))
-            return listBoxOptionAccessibilityObject(static_cast<HTMLElement*>(listItems[i]));
+        if (rect.contains(point)) {
+            listBoxOption = m_children[i].get();
+            break;
+        }
     }
     
+    if (listBoxOption && !listBoxOption->accessibilityIsIgnored())
+        return listBoxOption;
+    
     return axObjectCache()->getOrCreate(m_renderer);
 }
 
diff --git a/WebCore/accessibility/AccessibilityListBox.h b/WebCore/accessibility/AccessibilityListBox.h
index ce1abe0..72ce82f 100644
--- a/WebCore/accessibility/AccessibilityListBox.h
+++ b/WebCore/accessibility/AccessibilityListBox.h
@@ -49,9 +49,7 @@ public:
     virtual bool canSetSelectedChildrenAttribute() const;
     void setSelectedChildren(AccessibilityChildrenVector&);
     virtual AccessibilityRole roleValue() const { return ListBoxRole; }
-    
-    virtual bool accessibilityIsIgnored() const { return false; }
-    
+        
     virtual void selectedChildren(AccessibilityChildrenVector&);
     virtual void visibleChildren(AccessibilityChildrenVector&);
     
@@ -59,6 +57,7 @@ public:
 
 private:    
     AccessibilityObject* listBoxOptionAccessibilityObject(HTMLElement*) const;
+    virtual bool accessibilityIsIgnored() const;
 };
     
 } // namespace WebCore
diff --git a/WebCore/accessibility/AccessibilityListBoxOption.cpp b/WebCore/accessibility/AccessibilityListBoxOption.cpp
index 9bf5a4d..685ea13 100644
--- a/WebCore/accessibility/AccessibilityListBoxOption.cpp
+++ b/WebCore/accessibility/AccessibilityListBoxOption.cpp
@@ -105,6 +105,17 @@ IntRect AccessibilityListBoxOption::elementRect() const
     return rect;
 }
 
+bool AccessibilityListBoxOption::accessibilityIsIgnored() const
+{
+    if (!m_optionElement)
+        return true;
+    
+    if (equalIgnoringCase(getAttribute(m_optionElement, aria_hiddenAttr), "true"))
+        return true;
+    
+    return parentObject()->accessibilityIsIgnored();
+}
+
 bool AccessibilityListBoxOption::canSetSelectedAttribute() const
 {
     if (!m_optionElement)
diff --git a/WebCore/accessibility/AccessibilityListBoxOption.h b/WebCore/accessibility/AccessibilityListBoxOption.h
index f8fd5f0..6b293e1 100644
--- a/WebCore/accessibility/AccessibilityListBoxOption.h
+++ b/WebCore/accessibility/AccessibilityListBoxOption.h
@@ -51,7 +51,7 @@ public:
     void setHTMLElement(HTMLElement* element) { m_optionElement = element; }
     
     virtual AccessibilityRole roleValue() const { return ListBoxOptionRole; }
-    virtual bool accessibilityIsIgnored() const { return false; }
+    virtual bool accessibilityIsIgnored() const;
     virtual bool isSelected() const;
     virtual bool isEnabled() const;
     virtual String stringValue() const;
diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
index 4c12b91..4cd08f3 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -1458,8 +1458,10 @@ bool AccessibilityRenderObject::isAllowedChildOfTree() const
     return true;
 }
     
-bool AccessibilityRenderObject::accessibilityIsIgnored() const
+bool AccessibilityRenderObject::accessibilityIsIgnoredBase() const
 {
+    // The following cases can apply to any element that's a subclass of AccessibilityRenderObject.
+    
     // Is the platform interested in this object?
     AccessibilityObjectPlatformInclusion decision = accessibilityPlatformIncludesObject();
     if (decision == IncludeObject)
@@ -1477,7 +1479,18 @@ bool AccessibilityRenderObject::accessibilityIsIgnored() const
     
     if (isPresentationalChildOfAriaRole())
         return true;
-        
+    
+    return false;
+}  
+ 
+bool AccessibilityRenderObject::accessibilityIsIgnored() const
+{
+    // 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.
+    if (accessibilityIsIgnoredBase())
+        return true;
+    
     // If this element is within a parent that cannot have children, it should not be exposed.
     if (isDescendantOfBarrenParent())
         return true;    
@@ -2494,8 +2507,12 @@ AccessibilityObject* AccessibilityRenderObject::doAccessibilityHitTest(const Int
     
     AccessibilityObject* result = obj->document()->axObjectCache()->getOrCreate(obj);
 
-    if (obj->isListBox())
-        return static_cast<AccessibilityListBox*>(result)->doAccessibilityHitTest(point);
+    if (obj->isListBox()) {
+        // Make sure the children are initialized so that hit testing finds the right element.
+        AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(result);
+        listBox->updateChildrenIfNecessary();
+        return listBox->doAccessibilityHitTest(point);
+    }
         
     if (result->accessibilityIsIgnored()) {
         // If this element is the label of a control, a hit test should return the control.
diff --git a/WebCore/accessibility/AccessibilityRenderObject.h b/WebCore/accessibility/AccessibilityRenderObject.h
index a6e4c8a..cf6f932 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.h
+++ b/WebCore/accessibility/AccessibilityRenderObject.h
@@ -114,6 +114,8 @@ public:
 
     virtual bool hasIntValue() const;
     
+    // Provides common logic used by all elements when determining isIgnored.
+    bool accessibilityIsIgnoredBase() const;
     virtual bool accessibilityIsIgnored() const;
     
     virtual int headingLevel() const;
diff --git a/WebCore/accessibility/AccessibilitySlider.cpp b/WebCore/accessibility/AccessibilitySlider.cpp
index 77f4dcc..b36e7c5 100644
--- a/WebCore/accessibility/AccessibilitySlider.cpp
+++ b/WebCore/accessibility/AccessibilitySlider.cpp
@@ -99,6 +99,14 @@ const AtomicString& AccessibilitySlider::getAttribute(const QualifiedName& attri
     return element()->getAttribute(attribute);
 }
 
+bool AccessibilitySlider::accessibilityIsIgnored() const
+{
+    if (accessibilityIsIgnoredBase())
+        return true;
+
+    return false;
+}
+    
 float AccessibilitySlider::valueForRange() const
 {
     return element()->value().toFloat();
diff --git a/WebCore/accessibility/AccessibilitySlider.h b/WebCore/accessibility/AccessibilitySlider.h
index e1e3812..461f62b 100644
--- a/WebCore/accessibility/AccessibilitySlider.h
+++ b/WebCore/accessibility/AccessibilitySlider.h
@@ -42,7 +42,6 @@ public:
     virtual ~AccessibilitySlider() { }
 
     virtual AccessibilityRole roleValue() const { return SliderRole; }
-    virtual bool accessibilityIsIgnored() const { return false; }
 
     virtual bool isSlider() const { return true; }
 
@@ -63,6 +62,7 @@ protected:
 
 private:
     HTMLInputElement* element() const;
+    virtual bool accessibilityIsIgnored() const;
 };
 
 class AccessibilitySliderThumb : public AccessibilityObject {
@@ -72,7 +72,6 @@ public:
     virtual ~AccessibilitySliderThumb() { }
 
     virtual AccessibilityRole roleValue() const { return SliderThumbRole; }
-    virtual bool accessibilityIsIgnored() const { return false; }
 
     void setParentObject(AccessibilitySlider* slider) { m_parentSlider = slider; }
     virtual AccessibilityObject* parentObject() const { return m_parentSlider; }
@@ -82,6 +81,7 @@ public:
 
 private:
     AccessibilitySliderThumb();
+    virtual bool accessibilityIsIgnored() const { return false; }
 
     AccessibilitySlider* m_parentSlider;
 };
diff --git a/WebCore/accessibility/AccessibilityTable.cpp b/WebCore/accessibility/AccessibilityTable.cpp
index d5c229a..1f9c0c8 100644
--- a/WebCore/accessibility/AccessibilityTable.cpp
+++ b/WebCore/accessibility/AccessibilityTable.cpp
@@ -445,9 +445,12 @@ AccessibilityRole AccessibilityTable::roleValue() const
     
 bool AccessibilityTable::accessibilityIsIgnored() const
 {
+    if (accessibilityIsIgnoredBase())
+        return true;
+
     if (!isDataTable())
         return AccessibilityRenderObject::accessibilityIsIgnored();
-    
+        
     return false;
 }
     
diff --git a/WebCore/accessibility/AccessibilityTableCell.cpp b/WebCore/accessibility/AccessibilityTableCell.cpp
index 7674cb8..7422f39 100644
--- a/WebCore/accessibility/AccessibilityTableCell.cpp
+++ b/WebCore/accessibility/AccessibilityTableCell.cpp
@@ -56,6 +56,9 @@ PassRefPtr<AccessibilityTableCell> AccessibilityTableCell::create(RenderObject*
 
 bool AccessibilityTableCell::accessibilityIsIgnored() const
 {
+    if (accessibilityIsIgnoredBase())
+        return true;
+
     if (!isTableCell())
         return AccessibilityRenderObject::accessibilityIsIgnored();
     
diff --git a/WebCore/accessibility/AccessibilityTableColumn.cpp b/WebCore/accessibility/AccessibilityTableColumn.cpp
index ee8531e..5872706 100644
--- a/WebCore/accessibility/AccessibilityTableColumn.cpp
+++ b/WebCore/accessibility/AccessibilityTableColumn.cpp
@@ -158,6 +158,18 @@ AccessibilityObject* AccessibilityTableColumn::headerObjectForSection(RenderTabl
     return m_parentTable->axObjectCache()->getOrCreate(cell);
 }
     
+bool AccessibilityTableColumn::accessibilityIsIgnored() const
+{
+    if (!m_parentTable)
+        return true;
+    
+#if PLATFORM(GTK)
+    return true;
+#endif
+    
+    return m_parentTable->accessibilityIsIgnored();
+}
+    
 void AccessibilityTableColumn::addChildren()
 {
     ASSERT(!m_haveChildren); 
diff --git a/WebCore/accessibility/AccessibilityTableColumn.h b/WebCore/accessibility/AccessibilityTableColumn.h
index 34be815..15d300c 100644
--- a/WebCore/accessibility/AccessibilityTableColumn.h
+++ b/WebCore/accessibility/AccessibilityTableColumn.h
@@ -49,12 +49,8 @@ public:
     virtual AccessibilityObject* parentObject() const { return m_parentTable; }
     AccessibilityObject* headerObject();
         
+    virtual bool accessibilityIsIgnored() const;
     virtual AccessibilityRole roleValue() const { return ColumnRole; }
-#if PLATFORM(GTK)
-    virtual bool accessibilityIsIgnored() const { return true; }
-#else
-    virtual bool accessibilityIsIgnored() const { return false; }
-#endif
     virtual bool isTableColumn() const { return true; }
     
     void setColumnIndex(int columnIndex) { m_columnIndex = columnIndex; }
diff --git a/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp b/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
index 3a2a241..e2da83c 100644
--- a/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
+++ b/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
@@ -68,6 +68,18 @@ IntSize AccessibilityTableHeaderContainer::size() const
     return elementRect().size();
 }
     
+bool AccessibilityTableHeaderContainer::accessibilityIsIgnored() const
+{
+    if (!m_parentTable)
+        return true;
+    
+#if PLATFORM(GTK)
+    return true;
+#endif
+
+    return m_parentTable->accessibilityIsIgnored();
+}
+
 void AccessibilityTableHeaderContainer::addChildren()
 {
     ASSERT(!m_haveChildren); 
diff --git a/WebCore/accessibility/AccessibilityTableHeaderContainer.h b/WebCore/accessibility/AccessibilityTableHeaderContainer.h
index 46c47bc..79521c0 100644
--- a/WebCore/accessibility/AccessibilityTableHeaderContainer.h
+++ b/WebCore/accessibility/AccessibilityTableHeaderContainer.h
@@ -48,12 +48,6 @@ public:
     void setParentTable(AccessibilityTable* table) { m_parentTable = table; }
     virtual AccessibilityObject* parentObject() const { return m_parentTable; }
     
-#if PLATFORM(GTK)
-    virtual bool accessibilityIsIgnored() const { return true; }
-#else
-    virtual bool accessibilityIsIgnored() const { return false; }
-#endif
-    
     virtual const AccessibilityChildrenVector& children();
     virtual void addChildren();
     
@@ -64,6 +58,7 @@ private:
     AccessibilityTable* m_parentTable;
     IntRect m_headerRect;
     
+    virtual bool accessibilityIsIgnored() const;
 }; 
     
 } // namespace WebCore 
diff --git a/WebCore/accessibility/AccessibilityTableRow.cpp b/WebCore/accessibility/AccessibilityTableRow.cpp
index 1250358..7ad7ab3 100644
--- a/WebCore/accessibility/AccessibilityTableRow.cpp
+++ b/WebCore/accessibility/AccessibilityTableRow.cpp
@@ -77,10 +77,13 @@ bool AccessibilityTableRow::isTableRow() const
 bool AccessibilityTableRow::accessibilityIsIgnored() const
 {    
 #if PLATFORM(GTK)
-    if (true)
-#else
-    if (!isTableRow())
+    return true;
 #endif
+
+    if (accessibilityIsIgnoredBase())
+        return true;
+    
+    if (!isTableRow())
         return AccessibilityRenderObject::accessibilityIsIgnored();
 
     return false;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list