Index: Source/core/frame/FrameView.cpp |
diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
index d9edbb76623d1463cc760542d39dca5bbfa64672..97686329c933412b536f4ee0042ec6f6c60ffc79 100644 |
--- a/Source/core/frame/FrameView.cpp |
+++ b/Source/core/frame/FrameView.cpp |
@@ -165,9 +165,7 @@ PassRefPtrWillBeRawPtr<FrameView> FrameView::create(LocalFrame* frame, const Int |
FrameView::~FrameView() |
{ |
-#if ENABLE(ASSERT) |
ASSERT(m_hasBeenDisposed); |
-#endif |
#if !ENABLE(OILPAN) |
// Verify that the LocalFrame has a different FrameView or |
// that it is being detached and destructed. |
@@ -181,12 +179,16 @@ DEFINE_TRACE(FrameView) |
visitor->trace(m_frame); |
visitor->trace(m_nodeToDraw); |
visitor->trace(m_maintainScrollPositionAnchor); |
+ visitor->trace(m_scrollableAreas); |
+ visitor->trace(m_animatingScrollableAreas); |
visitor->trace(m_autoSizeInfo); |
visitor->trace(m_horizontalScrollbar); |
visitor->trace(m_verticalScrollbar); |
visitor->trace(m_children); |
+ visitor->trace(m_viewportScrollableArea); |
#endif |
Widget::trace(visitor); |
+ ScrollableArea::trace(visitor); |
} |
void FrameView::reset() |
@@ -1874,7 +1876,7 @@ void FrameView::scrollToAnchor() |
LayoutRect rect; |
if (anchorNode != m_frame->document()) { |
rect = anchorNode->boundingBox(); |
- } else if (m_frame->settings()->rootLayerScrolls()) { |
+ } else if (m_frame->settings() && m_frame->settings()->rootLayerScrolls()) { |
if (Element* documentElement = m_frame->document()->documentElement()) |
rect = documentElement->boundingBox(); |
} |
@@ -2866,7 +2868,7 @@ void FrameView::addScrollableArea(ScrollableArea* scrollableArea) |
{ |
ASSERT(scrollableArea); |
if (!m_scrollableAreas) |
- m_scrollableAreas = adoptPtr(new ScrollableAreaSet); |
+ m_scrollableAreas = adoptPtrWillBeNoop(new ScrollableAreaSet); |
m_scrollableAreas->add(scrollableArea); |
if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator()) |
@@ -2887,7 +2889,7 @@ void FrameView::addAnimatingScrollableArea(ScrollableArea* scrollableArea) |
{ |
ASSERT(scrollableArea); |
if (!m_animatingScrollableAreas) |
- m_animatingScrollableAreas = adoptPtr(new ScrollableAreaSet); |
+ m_animatingScrollableAreas = adoptPtrWillBeNoop(new ScrollableAreaSet); |
m_animatingScrollableAreas->add(scrollableArea); |
} |
@@ -3063,6 +3065,7 @@ void FrameView::setHasHorizontalScrollbar(bool hasBar) |
if (m_horizontalScrollbar->overlapsResizer()) |
adjustScrollbarsAvoidingResizerCount(-1); |
removeChild(m_horizontalScrollbar.get()); |
+ m_horizontalScrollbar->disconnectFromScrollableArea(); |
m_horizontalScrollbar = nullptr; |
if (AXObjectCache* cache = axObjectCache()) |
cache->handleScrollbarUpdate(this); |
@@ -3091,6 +3094,7 @@ void FrameView::setHasVerticalScrollbar(bool hasBar) |
if (m_verticalScrollbar->overlapsResizer()) |
adjustScrollbarsAvoidingResizerCount(-1); |
removeChild(m_verticalScrollbar.get()); |
+ m_verticalScrollbar->disconnectFromScrollableArea(); |
m_verticalScrollbar = nullptr; |
if (AXObjectCache* cache = axObjectCache()) |
cache->handleScrollbarUpdate(this); |