Title: [95432] branches/chromium/874/Source/WebCore/accessibility
- Revision
- 95432
- Author
- infe...@chromium.org
- Date
- 2011-09-19 10:07:18 -0700 (Mon, 19 Sep 2011)
Log Message
Merge 94716
BUG=84160
Review URL: http://codereview.chromium.org/7944004
Modified Paths
Diff
Modified: branches/chromium/874/Source/WebCore/accessibility/AccessibilityObject.h (95431 => 95432)
--- branches/chromium/874/Source/WebCore/accessibility/AccessibilityObject.h 2011-09-19 17:05:26 UTC (rev 95431)
+++ branches/chromium/874/Source/WebCore/accessibility/AccessibilityObject.h 2011-09-19 17:07:18 UTC (rev 95432)
@@ -550,6 +550,8 @@
virtual bool canHaveChildren() const { return true; }
virtual bool hasChildren() const { return m_haveChildren; }
virtual void updateChildrenIfNecessary();
+ virtual void clearChildren();
+
virtual void selectedChildren(AccessibilityChildrenVector&) { }
virtual void visibleChildren(AccessibilityChildrenVector&) { }
virtual void tabChildren(AccessibilityChildrenVector&) { }
@@ -670,7 +672,6 @@
mutable bool m_haveChildren;
AccessibilityRole m_role;
- virtual void clearChildren();
virtual bool isDetached() const { return true; }
#if PLATFORM(GTK)
Modified: branches/chromium/874/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (95431 => 95432)
--- branches/chromium/874/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2011-09-19 17:05:26 UTC (rev 95431)
+++ branches/chromium/874/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2011-09-19 17:07:18 UTC (rev 95432)
@@ -1710,7 +1710,7 @@
// aria-hidden hides this object and any children
AccessibilityObject* object = parentObject();
while (object) {
- if (object->isAccessibilityRenderObject() && equalIgnoringCase(static_cast<AccessibilityRenderObject*>(object)->getAttribute(aria_hiddenAttr), "true"))
+ if (equalIgnoringCase(object->getAttribute(aria_hiddenAttr), "true"))
return true;
object = object->parentObject();
}
@@ -3382,7 +3382,7 @@
if (!parent->isAccessibilityRenderObject())
continue;
- AccessibilityRenderObject* axParent = static_cast<AccessibilityRenderObject*>(parent);
+ AccessibilityRenderObject* axParent = toAccessibilityRenderObject(parent);
// Send the children changed notification on the first accessibility render object ancestor.
if (!sentChildrenChanged) {
@@ -3464,7 +3464,12 @@
// add all unignored acc children
for (RefPtr<AccessibilityObject> obj = firstChild(); obj; obj = obj->nextSibling()) {
if (obj->accessibilityIsIgnored()) {
- obj->updateChildrenIfNecessary();
+
+ // If the parent is asking for this child's children, then either it's the first time (and clearing is a no-op),
+ // or its visibility has changed. In the latter case, this child may have a stale child cached.
+ // This can prevent aria-hidden changes from working correctly. Hence, whenever a parent is getting children, ensure data is not stale.
+ obj->clearChildren();
+
AccessibilityChildrenVector children = obj->children();
unsigned length = children.size();
for (unsigned i = 0; i < length; ++i)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes