Diff
Modified: trunk/LayoutTests/ChangeLog (96342 => 96343)
--- trunk/LayoutTests/ChangeLog 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/LayoutTests/ChangeLog 2011-09-29 19:03:40 UTC (rev 96343)
@@ -1,3 +1,15 @@
+2011-09-29 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r96340.
+ http://trac.webkit.org/changeset/96340
+ https://bugs.webkit.org/show_bug.cgi?id=69098
+
+ Caused 10 tests to crash in Debug (Requested by
+ abarth|gardener on #webkit).
+
+ * platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt: Removed.
+ * platform/mac/accessibility/aria-liveregion-without-element-access.html: Removed.
+
2011-09-29 Adam Barth <[email protected]>
We should ignore the return value of GetRealNamedProperty
Deleted: trunk/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt (96342 => 96343)
--- trunk/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt 2011-09-29 19:03:40 UTC (rev 96343)
@@ -1,14 +0,0 @@
-ALERT: Successfully received AXLiveRegionChanged
-text
-
-added
-This tests that adding an element to a live region will trigger a notification even though the AX element was not created previously.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS addedNotification is true
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
Deleted: trunk/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access.html (96342 => 96343)
--- trunk/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access.html 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access.html 2011-09-29 19:03:40 UTC (rev 96343)
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<link rel="stylesheet" href=""
-<script>
-var successfullyParsed = false;
-</script>
-<script src=""
-</head>
-<body id="body">
-
-<div role="group" tabindex=0 id="liveregion" aria-live="polite" aria-relevant="additions">
-<h3 id="innerlive">text</h3>
-<div role="group">
- <div id="addregion"></div>
-</div>
-</div>
-
-<p id="description"></p>
-<div id="console"></div>
-
-<script>
-
- description("This tests that adding an element to a live region will trigger a notification even though the AX element was not created previously.");
-
- var liveRegion = 0;
- function ariaCallback(notification) {
- if (notification == "AXLiveRegionChanged") {
- alert("Successfully received " + notification);
- liveRegion.removeNotificationListener();
- window.layoutTestController.notifyDone();
- }
- }
-
- if (window.accessibilityController) {
- window.layoutTestController.waitUntilDone();
-
- document.getElementById("liveregion").focus();
- liveRegion = window.accessibilityController.focusedElement;
-
- // Trigger the live region callback for a new element. Add region has not been created
- // as an element, but this notification should still be sent for liveregion.
- document.getElementById("addregion").appendChild(document.createTextNode("added"));
-
- var addedNotification = liveRegion.addNotificationListener(ariaCallback);
- shouldBe("addedNotification", "true");
- }
-
- successfullyParsed = true;
-</script>
-
-<script src=""
-</body>
-</html>
Modified: trunk/Source/WebCore/ChangeLog (96342 => 96343)
--- trunk/Source/WebCore/ChangeLog 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/ChangeLog 2011-09-29 19:03:40 UTC (rev 96343)
@@ -1,3 +1,34 @@
+2011-09-29 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r96340.
+ http://trac.webkit.org/changeset/96340
+ https://bugs.webkit.org/show_bug.cgi?id=69098
+
+ Caused 10 tests to crash in Debug (Requested by
+ abarth|gardener on #webkit).
+
+ * accessibility/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::AXObjectCache):
+ (WebCore::AXObjectCache::~AXObjectCache):
+ (WebCore::AXObjectCache::remove):
+ (WebCore::AXObjectCache::childrenChanged):
+ * accessibility/AXObjectCache.h:
+ * accessibility/AccessibilityMenuList.cpp:
+ (WebCore::AccessibilityMenuList::childrenChanged):
+ * accessibility/AccessibilityMenuList.h:
+ * accessibility/AccessibilityMenuListPopup.cpp:
+ (WebCore::AccessibilityMenuListPopup::childrenChanged):
+ * accessibility/AccessibilityMenuListPopup.h:
+ * accessibility/AccessibilityObject.h:
+ (WebCore::AccessibilityObject::childrenChanged):
+ * accessibility/AccessibilityRenderObject.cpp:
+ (WebCore::startOfContinuations):
+ (WebCore::AccessibilityRenderObject::updateAccessibilityRole):
+ (WebCore::AccessibilityRenderObject::childrenChanged):
+ * accessibility/AccessibilityRenderObject.h:
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::willBeDestroyed):
+
2011-09-29 Andreas Kling <[email protected]>
Shrink FontFallbackList.
Modified: trunk/Source/WebCore/accessibility/AXObjectCache.cpp (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AXObjectCache.cpp 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.cpp 2011-09-29 19:03:40 UTC (rev 96343)
@@ -82,16 +82,12 @@
AXObjectCache::AXObjectCache(const Document* doc)
: m_notificationPostTimer(this, &AXObjectCache::notificationPostTimerFired)
- , m_childrenUpdateTimer(this, &AXObjectCache::childrenUpdateTimerFired)
{
m_document = const_cast<Document*>(doc);
}
AXObjectCache::~AXObjectCache()
{
- m_childrenUpdateTimer.stop();
- m_notificationPostTimer.stop();
-
HashMap<AXID, RefPtr<AccessibilityObject> >::iterator end = m_objects.end();
for (HashMap<AXID, RefPtr<AccessibilityObject> >::iterator it = m_objects.begin(); it != end; ++it) {
AccessibilityObject* obj = (*it).second.get();
@@ -371,7 +367,6 @@
AXID axID = m_renderObjectMapping.get(renderer);
remove(axID);
m_renderObjectMapping.remove(renderer);
- m_childrenToUpdate.remove(renderer);
}
void AXObjectCache::remove(Widget* view)
@@ -441,24 +436,6 @@
object->contentChanged();
}
#endif
-
-void AXObjectCache::childrenUpdateTimerFired(Timer<AXObjectCache>*)
-{
- if (m_childrenToUpdate.isEmpty())
- return;
-
- // Make a local copy in case childrenChanged() alters m_childrenToUpdate
- // (which might happen if the client asks to update the render tree).
- HashSet<RenderObject*> updateChildren;
- m_childrenToUpdate.swap(updateChildren);
- m_childrenToUpdate.clear();
-
- HashSet<RenderObject*>::iterator end = updateChildren.end();
- for (HashSet<RenderObject*>::iterator it = updateChildren.begin(); it != end; ++it) {
- if (AccessibilityObject* object = getOrCreate(*it))
- object->childrenChanged(AccessibilityObject::CreateParentObjects);
- }
-}
void AXObjectCache::childrenChanged(RenderObject* renderer)
{
@@ -466,18 +443,12 @@
return;
AXID axID = m_renderObjectMapping.get(renderer);
- if (!axID) {
- // If there's no AX object, creating one right now can be dangerous (because we're in the middle of adding/destroying a tree).
- // Instead the update should be postponed and updated later.
- m_childrenToUpdate.add(renderer);
-
- if (!m_childrenUpdateTimer.isActive())
- m_childrenUpdateTimer.startOneShot(0);
- } else {
- if (AccessibilityObject* object = m_objects.get(axID).get())
- object->childrenChanged(AccessibilityObject::DoNotCreateParentObjects);
- }
-
+ if (!axID)
+ return;
+
+ AccessibilityObject* obj = m_objects.get(axID).get();
+ if (obj)
+ obj->childrenChanged();
}
void AXObjectCache::notificationPostTimerFired(Timer<AXObjectCache>*)
Modified: trunk/Source/WebCore/accessibility/AXObjectCache.h (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AXObjectCache.h 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.h 2011-09-29 19:03:40 UTC (rev 96343)
@@ -167,11 +167,7 @@
Timer<AXObjectCache> m_notificationPostTimer;
Vector<pair<RefPtr<AccessibilityObject>, AXNotification> > m_notificationsToPost;
void notificationPostTimerFired(Timer<AXObjectCache>*);
-
- Timer<AXObjectCache> m_childrenUpdateTimer;
- HashSet<RenderObject*> m_childrenToUpdate;
- void childrenUpdateTimerFired(Timer<AXObjectCache>*);
-
+
static AccessibilityObject* focusedImageMapUIElement(HTMLAreaElement*);
AXID getAXID(AccessibilityObject*);
Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp 2011-09-29 19:03:40 UTC (rev 96343)
@@ -68,13 +68,13 @@
list->addChildren();
}
-void AccessibilityMenuList::childrenChanged(ChildrenChangeOptions options)
+void AccessibilityMenuList::childrenChanged()
{
if (m_children.isEmpty())
return;
ASSERT(m_children.size() == 1);
- m_children[0]->childrenChanged(options);
+ m_children[0]->childrenChanged();
}
bool AccessibilityMenuList::isCollapsed() const
Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuList.h (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityMenuList.h 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuList.h 2011-09-29 19:03:40 UTC (rev 96343)
@@ -53,7 +53,7 @@
virtual bool canSetFocusAttribute() const { return true; }
virtual void addChildren();
- virtual void childrenChanged(ChildrenChangeOptions);
+ virtual void childrenChanged();
};
} // namespace WebCore
Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp 2011-09-29 19:03:40 UTC (rev 96343)
@@ -103,7 +103,7 @@
}
}
-void AccessibilityMenuListPopup::childrenChanged(ChildrenChangeOptions)
+void AccessibilityMenuListPopup::childrenChanged()
{
for (size_t i = m_children.size(); i > 0 ; --i) {
AccessibilityObject* child = m_children[i - 1].get();
Modified: trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.h (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.h 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityMenuListPopup.h 2011-09-29 19:03:40 UTC (rev 96343)
@@ -59,7 +59,7 @@
virtual AccessibilityObject* parentObject() const;
virtual bool press() const;
virtual void addChildren();
- virtual void childrenChanged(ChildrenChangeOptions);
+ virtual void childrenChanged();
AccessibilityMenuListOption* menuListOptionAccessibilityObject(HTMLElement*) const;
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.h 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h 2011-09-29 19:03:40 UTC (rev 96343)
@@ -550,8 +550,7 @@
virtual void increment() { }
virtual void decrement() { }
- enum ChildrenChangeOptions { DoNotCreateParentObjects, CreateParentObjects };
- virtual void childrenChanged(ChildrenChangeOptions) { }
+ virtual void childrenChanged() { }
virtual void contentChanged() { }
virtual const AccessibilityChildrenVector& children() { return m_children; }
virtual void addChildren() { }
Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2011-09-29 19:03:40 UTC (rev 96343)
@@ -223,7 +223,7 @@
static inline RenderInline* startOfContinuations(RenderObject* r)
{
- if (r->isInlineElementContinuation() && r->node()->renderer() && r->isRenderInline())
+ if (r->isInlineElementContinuation())
return toRenderInline(r->node()->renderer());
// Blocks with a previous continuation always have a next continuation
@@ -3087,7 +3087,7 @@
// The AX hierarchy only needs to be updated if the ignored status of an element has changed.
if (ignoredStatus != accessibilityIsIgnored())
- childrenChanged(DoNotCreateParentObjects);
+ childrenChanged();
}
AccessibilityRole AccessibilityRenderObject::determineAccessibilityRole()
@@ -3370,7 +3370,7 @@
}
}
-void AccessibilityRenderObject::childrenChanged(ChildrenChangeOptions options)
+void AccessibilityRenderObject::childrenChanged()
{
// This method is meant as a quick way of marking a portion of the accessibility tree dirty.
if (!m_renderer)
@@ -3382,7 +3382,7 @@
// called during render layouts, minimal work should be done.
// If AX elements are created now, they could interrogate the render tree while it's in a funky state.
// At the same time, process ARIA live region changes.
- for (AccessibilityObject* parent = this; parent; parent = (options == CreateParentObjects) ? parent->parentObject() : parent->parentObjectIfExists()) {
+ for (AccessibilityObject* parent = this; parent; parent = parent->parentObjectIfExists()) {
if (!parent->isAccessibilityRenderObject())
continue;
Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h (96342 => 96343)
--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h 2011-09-29 19:03:40 UTC (rev 96343)
@@ -215,7 +215,7 @@
virtual void decrement();
virtual void detach();
- virtual void childrenChanged(ChildrenChangeOptions);
+ virtual void childrenChanged();
virtual void contentChanged();
virtual void addChildren();
virtual bool canHaveChildren() const;
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (96342 => 96343)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2011-09-29 18:04:21 UTC (rev 96342)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2011-09-29 19:03:40 UTC (rev 96343)
@@ -2176,6 +2176,10 @@
if (frame() && frame()->eventHandler()->autoscrollRenderer() == this)
frame()->eventHandler()->stopAutoscrollTimer(true);
+ if (AXObjectCache::accessibilityEnabled()) {
+ document()->axObjectCache()->childrenChanged(this->parent());
+ document()->axObjectCache()->remove(this);
+ }
animation()->cancelAnimations(this);
remove();
@@ -2194,13 +2198,6 @@
setHasLayer(false);
toRenderBoxModelObject(this)->destroyLayer();
}
-
- // Update accessibility at the end, so that all children nodes have been disassociated first.
- // This ordering allows us to call childrenChanged() on the parent without worrying that the parent has been destroyed.
- if (AXObjectCache::accessibilityEnabled()) {
- document()->axObjectCache()->childrenChanged(this->parent());
- document()->axObjectCache()->remove(this);
- }
}
void RenderObject::destroy()