Chromium Code Reviews| Index: Source/core/layout/LayoutImage.cpp |
| diff --git a/Source/core/layout/LayoutImage.cpp b/Source/core/layout/LayoutImage.cpp |
| index 047eb6b8a95183bb4146c7c6b91b1f001c26e477..92e92d2ae409206b6c09447c5227012af0f99493 100644 |
| --- a/Source/core/layout/LayoutImage.cpp |
| +++ b/Source/core/layout/LayoutImage.cpp |
| @@ -40,6 +40,7 @@ |
| #include "core/html/HTMLMapElement.h" |
| #include "core/layout/HitTestResult.h" |
| #include "core/layout/Layer.h" |
| +#include "core/layout/LayoutPart.h" |
| #include "core/layout/LayoutView.h" |
| #include "core/layout/PaintInfo.h" |
| #include "core/layout/TextRunConstructor.h" |
| @@ -176,6 +177,30 @@ void LayoutImage::invalidatePaintAndMarkForLayoutIfNeeded() |
| contentChanged(ImageChanged); |
| } |
| +bool LayoutImage::rectIntersectsVisibleViewport(const LayoutRect& localRect) |
| +{ |
| + LayoutRect rect = localRect; |
| + LayoutView* layoutView = view(); |
| + while (layoutView->frame()->ownerLayoutObject()) |
| + layoutView = layoutView->frame()->ownerLayoutObject()->view(); |
| + mapRectToPaintInvalidationBacking(layoutView, rect, 0); |
| + return rect.intersects(LayoutRect(layoutView->frameView()->visualViewportRect())); |
| +} |
| + |
| +PaintInvalidationReason LayoutImage::invalidatePaintIfNeeded(const PaintInvalidationState& paintInvalidationState, const LayoutBoxModelObject& paintInvalidationContainer) |
| +{ |
| + if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) |
| + return LayoutReplaced::invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationContainer); |
| + |
| + if (!imageResource() || !imageResource()->image() || !imageResource()->image()->maybeAnimated() |
| + || rectIntersectsVisibleViewport(visualOverflowRect())) { |
| + return LayoutReplaced::invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationContainer); |
| + } |
| + |
| + return PaintInvalidationDelayedFull; |
|
chrishtr
2015/03/16 23:07:41
Since this method overrides invalidatePaintIfNeede
chrishtr
2015/03/17 23:55:56
Correct. That is the intention of the CL.
|
| +} |
| + |
| + |
| void LayoutImage::notifyFinished(Resource* newImage) |
| { |
| if (!m_imageResource) |