2011-06-23 Sheriff Bot <webkit.review.bot@gmail.com>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Jun 2011 20:24:55 +0000 (20:24 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Jun 2011 20:24:55 +0000 (20:24 +0000)
        Unreviewed, rolling out r89591 and r89593.
        http://trac.webkit.org/changeset/89591
        http://trac.webkit.org/changeset/89593
        https://bugs.webkit.org/show_bug.cgi?id=63279

        Caused test crashes in SL and Chromium (Requested by dimich_
        on #webkit).

        * platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt: Removed.
        * platform/mac/accessibility/aria-liveregion-without-element-access.html: Removed.
2011-06-23  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r89591 and r89593.
        http://trac.webkit.org/changeset/89591
        http://trac.webkit.org/changeset/89593
        https://bugs.webkit.org/show_bug.cgi?id=63279

        Caused test crashes in SL and Chromium (Requested by dimich_
        on #webkit).

        * accessibility/AXObjectCache.cpp:
        (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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@89609 268f45cc-cd09-0410-ab3c-d52691b4dbfc

13 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt [deleted file]
LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access.html [deleted file]
Source/WebCore/ChangeLog
Source/WebCore/accessibility/AXObjectCache.cpp
Source/WebCore/accessibility/AXObjectCache.h
Source/WebCore/accessibility/AccessibilityMenuList.cpp
Source/WebCore/accessibility/AccessibilityMenuList.h
Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp
Source/WebCore/accessibility/AccessibilityMenuListPopup.h
Source/WebCore/accessibility/AccessibilityObject.h
Source/WebCore/accessibility/AccessibilityRenderObject.cpp
Source/WebCore/accessibility/AccessibilityRenderObject.h

index 6a7af4c..1c34961 100644 (file)
@@ -1,3 +1,16 @@
+2011-06-23  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r89591 and r89593.
+        http://trac.webkit.org/changeset/89591
+        http://trac.webkit.org/changeset/89593
+        https://bugs.webkit.org/show_bug.cgi?id=63279
+
+        Caused test crashes in SL and Chromium (Requested by dimich_
+        on #webkit).
+
+        * platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt: Removed.
+        * platform/mac/accessibility/aria-liveregion-without-element-access.html: Removed.
+
 2011-06-23  Eric Carlson  <eric.carlson@apple.com>
 
         Reviewed by Darin Adler.
diff --git a/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt b/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access-expected.txt
deleted file mode 100644 (file)
index fc160f7..0000000
+++ /dev/null
@@ -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
-
diff --git a/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access.html b/LayoutTests/platform/mac/accessibility/aria-liveregion-without-element-access.html
deleted file mode 100644 (file)
index 0c55caf..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<!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">
-
-<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="../../../fast/js/resources/js-test-post.js"></script>
-</body>
-</html>
index 0ca98c6..495d829 100644 (file)
@@ -1,3 +1,32 @@
+2011-06-23  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r89591 and r89593.
+        http://trac.webkit.org/changeset/89591
+        http://trac.webkit.org/changeset/89593
+        https://bugs.webkit.org/show_bug.cgi?id=63279
+
+        Caused test crashes in SL and Chromium (Requested by dimich_
+        on #webkit).
+
+        * accessibility/AXObjectCache.cpp:
+        (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:
+
 2011-06-23  Andreas Kling  <kling@webkit.org>
 
         Reviewed by Benjamin Poulain.
index a5d2a45..1c9b46a 100644 (file)
@@ -82,7 +82,6 @@ bool AXObjectCache::gAccessibilityEnhancedUserInterfaceEnabled = false;
 
 AXObjectCache::AXObjectCache(const Document* doc)
     : m_notificationPostTimer(this, &AXObjectCache::notificationPostTimerFired)
-    , m_childrenUpdateTimer(this, &AXObjectCache::childrenUpdateTimerFired)
 {
     m_document = const_cast<Document*>(doc);
 }
@@ -368,7 +367,6 @@ void AXObjectCache::remove(RenderObject* renderer)
     AXID axID = m_renderObjectMapping.get(renderer);
     remove(axID);
     m_renderObjectMapping.remove(renderer);
-    m_childrenToUpdate.remove(renderer);
 }
 
 void AXObjectCache::remove(Widget* view)
@@ -438,24 +436,6 @@ void AXObjectCache::contentChanged(RenderObject* renderer)
         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)
 {
@@ -463,16 +443,12 @@ void AXObjectCache::childrenChanged(RenderObject* renderer)
         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>*)
index 8816f39..95cc7f3 100644 (file)
@@ -166,11 +166,7 @@ private:
     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*);
index e8cfe8b..e0c03c3 100644 (file)
@@ -68,13 +68,13 @@ void AccessibilityMenuList::addChildren()
     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
index 8d16c8f..cdb3ac2 100644 (file)
@@ -51,7 +51,7 @@ private:
     virtual bool canSetFocusAttribute() const { return true; }
 
     virtual void addChildren();
-    virtual void childrenChanged(ChildrenChangeOptions);
+    virtual void childrenChanged();
 };
 
 } // namespace WebCore
index d3b8342..9e2ed6b 100644 (file)
@@ -105,7 +105,7 @@ void AccessibilityMenuListPopup::addChildren()
     }
 }
 
-void AccessibilityMenuListPopup::childrenChanged(ChildrenChangeOptions)
+void AccessibilityMenuListPopup::childrenChanged()
 {
     for (size_t i = m_children.size(); i > 0 ; --i) {
         AccessibilityObject* child = m_children[i - 1].get();
index 005b9d3..88fbf7c 100644 (file)
@@ -56,7 +56,7 @@ private:
     virtual AccessibilityObject* parentObject() const;
     virtual bool press() const;
     virtual void addChildren();
-    virtual void childrenChanged(ChildrenChangeOptions);
+    virtual void childrenChanged();
 
     AccessibilityMenuListOption* menuListOptionAccessibilityObject(HTMLElement*) const;
 
index 0d5fd22..e003153 100644 (file)
@@ -464,8 +464,7 @@ public:
     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() { }
index 6ccd931..4d4d7c0 100644 (file)
@@ -222,7 +222,7 @@ AccessibilityObject* AccessibilityRenderObject::lastChild() const
 
 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
@@ -3030,7 +3030,7 @@ void AccessibilityRenderObject::updateAccessibilityRole()
     
     // 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()
@@ -3307,7 +3307,7 @@ void AccessibilityRenderObject::contentChanged()
     }
 }
     
-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)
@@ -3319,7 +3319,7 @@ void AccessibilityRenderObject::childrenChanged(ChildrenChangeOptions options)
     // 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;
         
index 2a45fd2..d136b8a 100644 (file)
@@ -207,7 +207,7 @@ public:
     virtual void decrement();
     
     virtual void detach();
-    virtual void childrenChanged(ChildrenChangeOptions);
+    virtual void childrenChanged();
     virtual void contentChanged();
     virtual void addChildren();
     virtual bool canHaveChildren() const;