Title: [119626] branches/chromium/1132

Diff

Copied: branches/chromium/1132/LayoutTests/accessibility/content-changed-notification-causes-crash-expected.txt (from rev 118213, trunk/LayoutTests/accessibility/content-changed-notification-causes-crash-expected.txt) (0 => 119626)


--- branches/chromium/1132/LayoutTests/accessibility/content-changed-notification-causes-crash-expected.txt	                        (rev 0)
+++ branches/chromium/1132/LayoutTests/accessibility/content-changed-notification-causes-crash-expected.txt	2012-06-06 22:38:25 UTC (rev 119626)
@@ -0,0 +1,11 @@
+>>
+Ensures that this snippet does not lead to a crash. Bug 86029.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS. WebKit did not crash.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Copied: branches/chromium/1132/LayoutTests/accessibility/content-changed-notification-causes-crash.html (from rev 118213, trunk/LayoutTests/accessibility/content-changed-notification-causes-crash.html) (0 => 119626)


--- branches/chromium/1132/LayoutTests/accessibility/content-changed-notification-causes-crash.html	                        (rev 0)
+++ branches/chromium/1132/LayoutTests/accessibility/content-changed-notification-causes-crash.html	2012-06-06 22:38:25 UTC (rev 119626)
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> 
+<html>
+<head>
+<script src=""
+</head>
+<body>
+
+<div id="group" tabindex="0">
+
+<ul role=textbox style='-webkit-transition: -webkit-transform linear 1117401740208157342s; content: counters(c, ".", disc); '>><keygen autofocus="">><body style='outline-style: ridge; font: normal normal 29266em/9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 Ahem, serif; '>
+ 
+</div>
+
+<p id="description"></p>
+<div id="console"></div>
+ 
+<script>
+    description("Ensures that this snippet does not lead to a crash. Bug 86029.");
+
+    function walkAccessibilityTree(accessibilityObject) {
+        var count = accessibilityObject.childrenCount;
+        for (var i = 0; i < count; ++i)
+            accessibilityObject.childAtIndex(i);
+    }
+
+    if (window.accessibilityController) {
+
+        document.getElementById("group").focus();
+        var focusedElement = accessibilityController.focusedElement;
+        walkAccessibilityTree(focusedElement);
+
+        document.getElementById('console').innerHTML += "PASS. WebKit did not crash.<br>";
+    }
+</script>
+
+<script src=""
+</body>
+</html>

Modified: branches/chromium/1132/Source/WebCore/accessibility/AccessibilityObject.h (119625 => 119626)


--- branches/chromium/1132/Source/WebCore/accessibility/AccessibilityObject.h	2012-06-06 22:30:26 UTC (rev 119625)
+++ branches/chromium/1132/Source/WebCore/accessibility/AccessibilityObject.h	2012-06-06 22:38:25 UTC (rev 119626)
@@ -313,7 +313,8 @@
 public:
     virtual ~AccessibilityObject();
     virtual void detach();
-        
+    virtual bool isDetached() const { return true; }
+
     typedef Vector<RefPtr<AccessibilityObject> > AccessibilityChildrenVector;
     
     virtual bool isAccessibilityRenderObject() const { return false; }
@@ -707,7 +708,6 @@
     virtual ScrollableArea* getScrollableAreaIfScrollable() const { return 0; }
     virtual void scrollTo(const IntPoint&) const { }
 
-    virtual bool isDetached() const { return true; }
     static bool isAccessibilityObjectSearchMatch(AccessibilityObject*, AccessibilitySearchCriteria*);
     static bool isAccessibilityTextSearchMatch(AccessibilityObject*, AccessibilitySearchCriteria*);
     static bool objectMatchesSearchCriteriaWithResultLimit(AccessibilityObject*, AccessibilitySearchCriteria*, AccessibilityChildrenVector&);

Modified: branches/chromium/1132/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (119625 => 119626)


--- branches/chromium/1132/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2012-06-06 22:30:26 UTC (rev 119625)
+++ branches/chromium/1132/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2012-06-06 22:38:25 UTC (rev 119626)
@@ -3428,8 +3428,14 @@
         if (parent->supportsARIALiveRegion())
             cache->postNotification(renderParent, AXObjectCache::AXLiveRegionChanged, true);
 
-        if (parent->isARIATextControl() && !parent->isNativeTextControl() && !parent->node()->isContentEditable())
+        if (parent->isARIATextControl() && !parent->isNativeTextControl() && !parent->node()->isContentEditable()) {
+            // isContentEditable() might trigger a layout update and invalidate the parent.
+            ASSERT(!parent->renderer() || parent->renderer() == renderParent);
+            if (parent->isDetached())
+                break;
+            
             cache->postNotification(renderParent, AXObjectCache::AXValueChanged, true);
+        }
     }
 }
     
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to