| Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
 | 
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
 | 
| index d36b46bdf321ddeb49160399dbc4ad3b18f0d130..7c0d267cf88c6e542bd3a0bbfc8330870a179005 100644
 | 
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
 | 
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
 | 
| @@ -1416,7 +1416,8 @@ enum ApplyToGraphicsLayersModeFlags {
 | 
|      ApplyToMaskLayers = (1 << 4),
 | 
|      ApplyToContentLayers = (1 << 5),
 | 
|      ApplyToChildContainingLayers = (1 << 6), // layers between m_graphicsLayer and children
 | 
| -    ApplyToScrollingContentLayers = (1 << 7),
 | 
| +    ApplyToNonScrollingContentLayers = (1 << 7),
 | 
| +    ApplyToScrollingContentLayers = (1 << 8),
 | 
|      ApplyToAllGraphicsLayers = (ApplyToSquashingLayer | ApplyToScrollbarLayers | ApplyToBackgroundLayer | ApplyToMaskLayers | ApplyToLayersAffectedByPreserve3D | ApplyToContentLayers | ApplyToScrollingContentLayers)
 | 
|  };
 | 
|  typedef unsigned ApplyToGraphicsLayersMode;
 | 
| @@ -1428,7 +1429,7 @@ static void ApplyToGraphicsLayers(const CompositedLayerMapping* mapping, const F
 | 
|  
 | 
|      if ((mode & ApplyToLayersAffectedByPreserve3D) && mapping->childTransformLayer())
 | 
|          f(mapping->childTransformLayer());
 | 
| -    if (((mode & ApplyToLayersAffectedByPreserve3D) || (mode & ApplyToContentLayers)) && mapping->mainGraphicsLayer())
 | 
| +    if (((mode & ApplyToLayersAffectedByPreserve3D) || (mode & ApplyToContentLayers) || (mode & ApplyToNonScrollingContentLayers)) && mapping->mainGraphicsLayer())
 | 
|          f(mapping->mainGraphicsLayer());
 | 
|      if (((mode & ApplyToLayersAffectedByPreserve3D) || (mode & ApplyToChildContainingLayers)) && mapping->clippingLayer())
 | 
|          f(mapping->clippingLayer());
 | 
| @@ -1445,12 +1446,12 @@ static void ApplyToGraphicsLayers(const CompositedLayerMapping* mapping, const F
 | 
|      if ((mode & ApplyToSquashingLayer) && mapping->squashingLayer())
 | 
|          f(mapping->squashingLayer());
 | 
|  
 | 
| -    if (((mode & ApplyToMaskLayers) || (mode & ApplyToContentLayers)) && mapping->maskLayer())
 | 
| +    if (((mode & ApplyToMaskLayers) || (mode & ApplyToContentLayers) || (mode & ApplyToNonScrollingContentLayers)) && mapping->maskLayer())
 | 
|          f(mapping->maskLayer());
 | 
| -    if (((mode & ApplyToMaskLayers) || (mode & ApplyToContentLayers)) && mapping->childClippingMaskLayer())
 | 
| +    if (((mode & ApplyToMaskLayers) || (mode & ApplyToContentLayers) || (mode & ApplyToNonScrollingContentLayers)) && mapping->childClippingMaskLayer())
 | 
|          f(mapping->childClippingMaskLayer());
 | 
|  
 | 
| -    if (((mode & ApplyToBackgroundLayer) || (mode & ApplyToContentLayers)) && mapping->backgroundLayer())
 | 
| +    if (((mode & ApplyToBackgroundLayer) || (mode & ApplyToContentLayers) || (mode & ApplyToNonScrollingContentLayers)) && mapping->backgroundLayer())
 | 
|          f(mapping->backgroundLayer());
 | 
|  
 | 
|      if ((mode & ApplyToScrollbarLayers) && mapping->layerForHorizontalScrollbar())
 | 
| @@ -2096,9 +2097,9 @@ struct SetContentsNeedsDisplayInRectFunctor {
 | 
|      const DisplayItemClient& client;
 | 
|  };
 | 
|  
 | 
| -// r is in the coordinate space of the layer's layout object
 | 
|  void CompositedLayerMapping::setContentsNeedDisplayInRect(const LayoutRect& r, PaintInvalidationReason invalidationReason, const DisplayItemClient& client)
 | 
|  {
 | 
| +    DCHECK(!m_owningLayer.layoutObject()->usesCompositedScrolling());
 | 
|      // TODO(wangxianzhu): Enable the following assert after paint invalidation for spv2 is ready.
 | 
|      // ASSERT(!RuntimeEnabledFeatures::slimmingPaintV2Enabled());
 | 
|  
 | 
| @@ -2110,8 +2111,23 @@ void CompositedLayerMapping::setContentsNeedDisplayInRect(const LayoutRect& r, P
 | 
|      ApplyToGraphicsLayers(this, functor, ApplyToContentLayers);
 | 
|  }
 | 
|  
 | 
| +void CompositedLayerMapping::setNonScrollingContentsNeedDisplayInRect(const LayoutRect& r, PaintInvalidationReason invalidationReason, const DisplayItemClient& client)
 | 
| +{
 | 
| +    DCHECK(m_owningLayer.layoutObject()->usesCompositedScrolling());
 | 
| +    // TODO(wangxianzhu): Enable the following assert after paint invalidation for spv2 is ready.
 | 
| +    // ASSERT(!RuntimeEnabledFeatures::slimmingPaintV2Enabled());
 | 
| +
 | 
| +    SetContentsNeedsDisplayInRectFunctor functor = {
 | 
| +        enclosingIntRect(LayoutRect(r.location() + m_owningLayer.subpixelAccumulation(), r.size())),
 | 
| +        invalidationReason,
 | 
| +        client
 | 
| +    };
 | 
| +    ApplyToGraphicsLayers(this, functor, ApplyToNonScrollingContentLayers);
 | 
| +}
 | 
| +
 | 
|  void CompositedLayerMapping::setScrollingContentsNeedDisplayInRect(const LayoutRect& r, PaintInvalidationReason invalidationReason, const DisplayItemClient& client)
 | 
|  {
 | 
| +    DCHECK(m_owningLayer.layoutObject()->usesCompositedScrolling());
 | 
|      // TODO(wangxianzhu): Enable the following assert after paint invalidation for spv2 is ready.
 | 
|      // ASSERT(!RuntimeEnabledFeatures::slimmingPaintV2Enabled());
 | 
|  
 | 
| 
 |