| Index: third_party/WebKit/Source/core/layout/LayoutView.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/layout/LayoutView.cpp b/third_party/WebKit/Source/core/layout/LayoutView.cpp
 | 
| index f71ba49861bffea331c43cadc52bd15a0879e6ca..a7defe62442d95a8acd772bed76ca37ba1ae9b30 100644
 | 
| --- a/third_party/WebKit/Source/core/layout/LayoutView.cpp
 | 
| +++ b/third_party/WebKit/Source/core/layout/LayoutView.cpp
 | 
| @@ -196,44 +196,18 @@ void LayoutView::checkLayoutState()
 | 
|  }
 | 
|  #endif
 | 
|  
 | 
| -bool LayoutView::shouldDoFullPaintInvalidationForNextLayout() const
 | 
| -{
 | 
| -    // It's hard to predict here which of full paint invalidation or per-descendant paint invalidation costs less.
 | 
| -    // For vertical writing mode or width change it's more likely that per-descendant paint invalidation
 | 
| -    // eventually turns out to be full paint invalidation but with the cost to handle more layout states
 | 
| -    // and discrete paint invalidation rects, so marking full paint invalidation here is more likely to cost less.
 | 
| -    // Otherwise, per-descendant paint invalidation is more likely to avoid unnecessary full paint invalidation.
 | 
| -
 | 
| -    if (shouldUsePrintingLayout())
 | 
| -        return true;
 | 
| -
 | 
| -    if (!style()->isHorizontalWritingMode())
 | 
| -        return true;
 | 
| -
 | 
| -    // The width/height checks below assume horizontal writing mode.
 | 
| -    ASSERT(style()->isHorizontalWritingMode());
 | 
| -
 | 
| -    if (size().width() != viewLogicalWidthForBoxSizing())
 | 
| -        return true;
 | 
| -
 | 
| -    if (size().height() != viewLogicalHeightForBoxSizing()) {
 | 
| -        // When background-attachment is 'fixed', we treat the viewport (instead of the 'root'
 | 
| -        // i.e. html or body) as the background positioning area, and we should full paint invalidation
 | 
| -        // viewport resize if the background image is not composited and needs full paint invalidation on
 | 
| -        // background positioning area resize.
 | 
| -        if (!m_compositor || !m_compositor->needsFixedRootBackgroundLayer(layer())) {
 | 
| -            if (style()->hasFixedBackgroundImage()
 | 
| -                && mustInvalidateFillLayersPaintOnHeightChange(style()->backgroundLayers()))
 | 
| -                return true;
 | 
| -        }
 | 
| +void LayoutView::setShouldDoFullPaintInvalidationOnResizeIfNeeded()
 | 
| +{
 | 
| +    // When background-attachment is 'fixed', we treat the viewport (instead of the 'root'
 | 
| +    // i.e. html or body) as the background positioning area, and we should fully invalidate
 | 
| +    // on viewport resize if the background image is not composited and needs full paint
 | 
| +    // invalidation on background positioning area resize.
 | 
| +    if (style()->hasFixedBackgroundImage() && (!m_compositor || !m_compositor->needsFixedRootBackgroundLayer(layer()))) {
 | 
| +        IncludeScrollbarsInRect includeScrollbars = document().settings() && document().settings()->rootLayerScrolls() ? IncludeScrollbars : ExcludeScrollbars;
 | 
| +        if ((offsetWidth() != viewWidth(includeScrollbars) && mustInvalidateFillLayersPaintOnWidthChange(style()->backgroundLayers()))
 | 
| +            || (offsetHeight() != viewHeight(includeScrollbars) && mustInvalidateFillLayersPaintOnHeightChange(style()->backgroundLayers())))
 | 
| +            setShouldDoFullPaintInvalidation(PaintInvalidationBoundsChange);
 | 
|      }
 | 
| -
 | 
| -    return false;
 | 
| -}
 | 
| -
 | 
| -bool LayoutView::doingFullPaintInvalidation() const
 | 
| -{
 | 
| -    return m_frameView->needsFullPaintInvalidation();
 | 
|  }
 | 
|  
 | 
|  void LayoutView::layout()
 | 
| @@ -241,6 +215,8 @@ void LayoutView::layout()
 | 
|      if (!document().paginated())
 | 
|          setPageLogicalHeight(LayoutUnit());
 | 
|  
 | 
| +    setShouldDoFullPaintInvalidationOnResizeIfNeeded();
 | 
| +
 | 
|      if (pageLogicalHeight() && shouldUsePrintingLayout()) {
 | 
|          m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth();
 | 
|          if (!m_fragmentationContext)
 | 
| @@ -441,22 +417,6 @@ void LayoutView::paintBoxDecorationBackground(const PaintInfo& paintInfo, const
 | 
|      ViewPainter(*this).paintBoxDecorationBackground(paintInfo);
 | 
|  }
 | 
|  
 | 
| -void LayoutView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInvalidationState)
 | 
| -{
 | 
| -    ASSERT(!needsLayout());
 | 
| -
 | 
| -    // We specifically need to issue paint invalidations for the viewRect since other layoutObjects
 | 
| -    // short-circuit on full-paint invalidation.
 | 
| -    LayoutRect dirtyRect = viewRect();
 | 
| -    if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) {
 | 
| -        const LayoutBoxModelObject& paintInvalidationContainer = paintInvalidationState.paintInvalidationContainer();
 | 
| -        paintInvalidationState.mapLocalRectToPaintInvalidationBacking(dirtyRect);
 | 
| -        invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, PaintInvalidationFull);
 | 
| -        invalidateDisplayItemClientsWithPaintInvalidationState(paintInvalidationState, PaintInvalidationFull);
 | 
| -    }
 | 
| -    LayoutBlock::invalidateTreeIfNeeded(paintInvalidationState);
 | 
| -}
 | 
| -
 | 
|  static void setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(LayoutObject* object)
 | 
|  {
 | 
|      object->setShouldDoFullPaintInvalidation();
 | 
| 
 |