Index: Source/core/paint/DeprecatedPaintLayer.h |
diff --git a/Source/core/paint/DeprecatedPaintLayer.h b/Source/core/paint/DeprecatedPaintLayer.h |
index 6e2d0a5ffcccb55359ba015658bb685d08319a7a..b2271f56112bd974c76dba04ab93a0873895fca2 100644 |
--- a/Source/core/paint/DeprecatedPaintLayer.h |
+++ b/Source/core/paint/DeprecatedPaintLayer.h |
@@ -152,7 +152,15 @@ public: |
return curr; |
} |
- const LayoutPoint& location() const { ASSERT(!m_needsPositionUpdate); return m_location; } |
+ enum LocationQueryBehavior { |
+ IncludeScroll, |
+ ExcludeScroll |
+ }; |
+ LayoutPoint location(LocationQueryBehavior behavior = IncludeScroll) const { ASSERT(!m_needsPositionUpdate); return behavior == IncludeScroll ? m_location : locationExcludingOverflowScroll(); } |
+ // Note: This function is only needed during the transition period to SPv2. |
+ // Once we have eliminated layer-based hit testing and clipping, |
+ // we can cache the unscrolled location instead. |
+ LayoutPoint locationExcludingOverflowScroll() const; |
// FIXME: size() should ASSERT(!m_needsPositionUpdate) as well, but that fails in some tests, |
// for example, fast/repaint/clipped-relative.html. |
const IntSize& size() const { return m_size; } |
@@ -237,7 +245,7 @@ public: |
return !layoutObject()->hasTransformRelatedProperty() && !layoutObject()->isSVGRoot(); |
} |
- void convertToLayerCoords(const DeprecatedPaintLayer* ancestorLayer, LayoutPoint&) const; |
+ void convertToLayerCoords(const DeprecatedPaintLayer* ancestorLayer, LayoutPoint&, LocationQueryBehavior = IncludeScroll) const; |
void convertToLayerCoords(const DeprecatedPaintLayer* ancestorLayer, LayoutRect&) const; |
// Does the same as convertToLayerCoords() when not in multicol. For multicol, however, |