| 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); | 
|  |