Title: [97303] trunk/Source/WebCore
Revision
97303
Author
[email protected]
Date
2011-10-12 14:25:34 -0700 (Wed, 12 Oct 2011)

Log Message

AX: CrashTracer: [USER] 296 crashes in WebProcess at com.apple.WebCore: WebCore::AccessibilityScrollbar::document const + 29
https://bugs.webkit.org/show_bug.cgi?id=69936

AX Scrollbars have a weak pointer to their parent. They need to become AccessibilityMockObjects, so that they can
participate in the detachFromParent() methods that happens when those parents go away.
Could not reproduce the crash, but the backtrace is unequivocal.

Reviewed by Darin Adler.

* accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::removeChildScrollbar):
* accessibility/AccessibilityScrollbar.cpp:
(WebCore::AccessibilityScrollbar::AccessibilityScrollbar):
* accessibility/AccessibilityScrollbar.h:
(WebCore::AccessibilityScrollbar::scrollbar):
(WebCore::AccessibilityScrollbar::isAccessibilityScrollbar):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (97302 => 97303)


--- trunk/Source/WebCore/ChangeLog	2011-10-12 21:21:51 UTC (rev 97302)
+++ trunk/Source/WebCore/ChangeLog	2011-10-12 21:25:34 UTC (rev 97303)
@@ -1,3 +1,22 @@
+2011-10-12  Chris Fleizach  <[email protected]>
+
+        AX: CrashTracer: [USER] 296 crashes in WebProcess at com.apple.WebCore: WebCore::AccessibilityScrollbar::document const + 29
+        https://bugs.webkit.org/show_bug.cgi?id=69936
+
+        AX Scrollbars have a weak pointer to their parent. They need to become AccessibilityMockObjects, so that they can
+        participate in the detachFromParent() methods that happens when those parents go away.
+        Could not reproduce the crash, but the backtrace is unequivocal.
+
+        Reviewed by Darin Adler.
+
+        * accessibility/AccessibilityScrollView.cpp:
+        (WebCore::AccessibilityScrollView::removeChildScrollbar):
+        * accessibility/AccessibilityScrollbar.cpp:
+        (WebCore::AccessibilityScrollbar::AccessibilityScrollbar):
+        * accessibility/AccessibilityScrollbar.h:
+        (WebCore::AccessibilityScrollbar::scrollbar):
+        (WebCore::AccessibilityScrollbar::isAccessibilityScrollbar):
+
 2011-10-12  David Hyatt  <[email protected]>
 
         https://bugs.webkit.org/show_bug.cgi?id=69950

Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp (97302 => 97303)


--- trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp	2011-10-12 21:21:51 UTC (rev 97302)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp	2011-10-12 21:25:34 UTC (rev 97303)
@@ -99,8 +99,10 @@
 void AccessibilityScrollView::removeChildScrollbar(AccessibilityObject* scrollbar)
 {
     size_t pos = m_children.find(scrollbar);
-    if (pos != WTF::notFound)
+    if (pos != WTF::notFound) {
+        m_children[pos]->detachFromParent();
         m_children.remove(pos);
+    }
 }
     
 AccessibilityScrollbar* AccessibilityScrollView::addChildScrollbar(Scrollbar* scrollbar)

Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp (97302 => 97303)


--- trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp	2011-10-12 21:21:51 UTC (rev 97302)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp	2011-10-12 21:25:34 UTC (rev 97303)
@@ -38,7 +38,6 @@
 
 AccessibilityScrollbar::AccessibilityScrollbar(Scrollbar* scrollbar)
     : m_scrollbar(scrollbar)
-    , m_parent(0)
 {
     ASSERT(scrollbar);
 }

Modified: trunk/Source/WebCore/accessibility/AccessibilityScrollbar.h (97302 => 97303)


--- trunk/Source/WebCore/accessibility/AccessibilityScrollbar.h	2011-10-12 21:21:51 UTC (rev 97302)
+++ trunk/Source/WebCore/accessibility/AccessibilityScrollbar.h	2011-10-12 21:25:34 UTC (rev 97303)
@@ -29,18 +29,17 @@
 #ifndef AccessibilityScrollbar_h
 #define AccessibilityScrollbar_h
 
-#include "AccessibilityObject.h"
+#include "AccessibilityMockObject.h"
 
 namespace WebCore {
 
 class Scrollbar;
 
-class AccessibilityScrollbar : public AccessibilityObject {
+class AccessibilityScrollbar : public AccessibilityMockObject {
 public:
     static PassRefPtr<AccessibilityScrollbar> create(Scrollbar*);
 
     Scrollbar* scrollbar() const { return m_scrollbar.get(); }
-    void setParent(AccessibilityObject* parent) { m_parent = parent; }
     
 private:
     AccessibilityScrollbar(Scrollbar*);
@@ -50,7 +49,6 @@
     virtual bool canSetNumericValue() const { return true; }
 
     virtual bool isAccessibilityScrollbar() const { return true; }
-    virtual AccessibilityObject* parentObject() const { return m_parent; }
     virtual LayoutRect elementRect() const;
     
     virtual AccessibilityRole roleValue() const { return ScrollBarRole; }
@@ -64,7 +62,6 @@
 
     RefPtr<Scrollbar> m_scrollbar;
     AccessibilityOrientation m_orientation;
-    AccessibilityObject* m_parent;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to