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):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@97303
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-10-12 Chris Fleizach <cfleizach@apple.com>
+
+ 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 <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=69950
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)
AccessibilityScrollbar::AccessibilityScrollbar(Scrollbar* scrollbar)
: m_scrollbar(scrollbar)
- , m_parent(0)
{
ASSERT(scrollbar);
}
#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*);
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; }
RefPtr<Scrollbar> m_scrollbar;
AccessibilityOrientation m_orientation;
- AccessibilityObject* m_parent;
};
} // namespace WebCore