Index: Source/core/rendering/RenderView.h |
diff --git a/Source/core/rendering/RenderView.h b/Source/core/rendering/RenderView.h |
index fa092aaac7850054477389005e09dddbf249f771..45dd83bf858376b8ef62226559cb3e8c2eb07149 100644 |
--- a/Source/core/rendering/RenderView.h |
+++ b/Source/core/rendering/RenderView.h |
@@ -24,6 +24,7 @@ |
#include "core/frame/FrameView.h" |
#include "core/rendering/LayoutState.h" |
+#include "core/rendering/PaintInvalidationState.h" |
#include "core/rendering/RenderBlockFlow.h" |
#include "platform/PODFreeListArena.h" |
#include "platform/scroll/ScrollableArea.h" |
@@ -78,7 +79,7 @@ public: |
FrameView* frameView() const { return m_frameView; } |
- virtual void mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect&, bool fixed = false) const OVERRIDE; |
+ virtual void mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect&, bool fixed = false, const PaintInvalidationState* = 0) const OVERRIDE; |
void repaintViewRectangle(const LayoutRect&) const; |
void repaintViewAndCompositedLayers(); |
@@ -104,16 +105,8 @@ public: |
bool shouldDoFullRepaintForNextLayout() const; |
bool doingFullRepaint() const { return m_frameView->needsFullPaintInvalidation(); } |
- // Returns true if layoutState should be used for its cached offset and clip. |
- bool layoutStateCachedOffsetsEnabled() const { return m_layoutState && m_layoutState->cachedOffsetsEnabled(); } |
LayoutState* layoutState() const { return m_layoutState; } |
- bool canMapUsingLayoutStateForContainer(const RenderObject* repaintContainer) const |
- { |
- // FIXME: LayoutState should be enabled for other repaint containers than the RenderView. crbug.com/363834 |
- return layoutStateCachedOffsetsEnabled() && (repaintContainer == this); |
- } |
- |
virtual void updateHitTestResult(HitTestResult&, const LayoutPoint&) OVERRIDE; |
LayoutUnit pageLogicalHeight() const { return m_pageLogicalHeight; } |
@@ -164,12 +157,12 @@ public: |
void popLayoutState(); |
private: |
- virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0) const OVERRIDE; |
+ virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0, const PaintInvalidationState* = 0) const OVERRIDE; |
virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE; |
virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const OVERRIDE; |
virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOffset) const OVERRIDE; |
- virtual void invalidateTreeAfterLayout(const RenderLayerModelObject& paintInvalidationContainer) OVERRIDE FINAL; |
+ virtual void invalidateTreeAfterLayout(const PaintInvalidationState&) OVERRIDE FINAL; |
bool shouldRepaint(const LayoutRect&) const; |
@@ -220,29 +213,22 @@ DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderView, isRenderView()); |
class ForceHorriblySlowRectMapping { |
WTF_MAKE_NONCOPYABLE(ForceHorriblySlowRectMapping); |
public: |
- ForceHorriblySlowRectMapping(const RenderObject& root) |
- : m_view(*root.view()) |
- , m_didDisable(m_view.layoutState() && m_view.layoutState()->cachedOffsetsEnabled()) |
+ ForceHorriblySlowRectMapping(const PaintInvalidationState* paintInvalidationState) |
+ : m_paintInvalidationState(paintInvalidationState) |
+ , m_didDisable(m_paintInvalidationState && m_paintInvalidationState->cachedOffsetsEnabled()) |
{ |
- if (m_view.layoutState()) |
- m_view.layoutState()->m_cachedOffsetsEnabled = false; |
-#if ASSERT_ENABLED |
- m_layoutState = m_view.layoutState(); |
-#endif |
+ if (m_paintInvalidationState) |
+ m_paintInvalidationState->m_cachedOffsetsEnabled = false; |
} |
~ForceHorriblySlowRectMapping() |
{ |
- ASSERT(m_view.layoutState() == m_layoutState); |
if (m_didDisable) |
- m_view.layoutState()->m_cachedOffsetsEnabled = true; |
+ m_paintInvalidationState->m_cachedOffsetsEnabled = true; |
} |
private: |
- RenderView& m_view; |
+ const PaintInvalidationState* m_paintInvalidationState; |
bool m_didDisable; |
-#if ASSERT_ENABLED |
- LayoutState* m_layoutState; |
-#endif |
}; |
} // namespace WebCore |