Title: [96343] trunk
Revision
96343
Author
[email protected]
Date
2011-09-29 12:03:40 -0700 (Thu, 29 Sep 2011)

Log Message

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).

Patch by Sheriff Bot <[email protected]> on 2011-09-29

Source/WebCore: 

* 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):

LayoutTests: 

* platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt: Removed.
* platform/mac/accessibility/aria-liveregion-without-element-access.html: Removed.

Modified Paths

Removed Paths

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()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to