Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Unified Diff: third_party/WebKit/Source/core/paint/PaintLayer.h

Issue 1870663002: Reland main thread position sticky implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix crash resulting from PaintLayer::removeOnlyThisLayer Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/paint/PaintLayer.h
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.h b/third_party/WebKit/Source/core/paint/PaintLayer.h
index 42981f29158d71e337b3ca41ac79525877ea5ebe..f9063fd1b9f93a1868512895e0876a4acd07d7ef 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayer.h
+++ b/third_party/WebKit/Source/core/paint/PaintLayer.h
@@ -271,6 +271,8 @@ public:
// Allows updates of layer content without invalidating paint.
void contentChanged(ContentChangeType);
+ void updateLayerPosition();
+
void updateLayerPositionsAfterLayout();
void updateLayerPositionsAfterOverflowScroll(const DoubleSize& scrollDelta);
@@ -534,6 +536,10 @@ public:
const PaintLayer* opacityAncestor;
const PaintLayer* transformAncestor;
const PaintLayer* filterAncestor;
+
+ // The fist ancestor which can scroll. This is a subset of the
+ // ancestorOverflowLayer chain where the scrolling layer is visible and
+ // has a larger scroll content than its bounds.
const PaintLayer* ancestorScrollingLayer;
const PaintLayer* nearestFixedPositionLayer;
@@ -563,6 +569,7 @@ public:
return m_needsDescendantDependentCompositingInputsUpdate;
}
+ void updateAncestorOverflowLayer(const PaintLayer* ancestorOverflowLayer) { m_ancestorOverflowLayer = ancestorOverflowLayer; }
void updateAncestorDependentCompositingInputs(const AncestorDependentCompositingInputs&, const RareAncestorDependentCompositingInputs&, bool hasAncestorWithClipPath);
void updateDescendantDependentCompositingInputs(bool hasDescendantWithClipPath, bool hasNonIsolatedDescendantWithBlendMode);
void didUpdateCompositingInputs();
@@ -572,6 +579,7 @@ public:
const PaintLayer* transformAncestor() const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_rareAncestorDependentCompositingInputs ? m_rareAncestorDependentCompositingInputs->transformAncestor : nullptr; }
const PaintLayer* filterAncestor() const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_rareAncestorDependentCompositingInputs ? m_rareAncestorDependentCompositingInputs->filterAncestor : nullptr; }
const LayoutObject* clippingContainer() const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_ancestorDependentCompositingInputs.clippingContainer; }
+ const PaintLayer* ancestorOverflowLayer() const { return m_ancestorOverflowLayer; }
const PaintLayer* ancestorScrollingLayer() const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_rareAncestorDependentCompositingInputs ? m_rareAncestorDependentCompositingInputs->ancestorScrollingLayer : nullptr; }
const PaintLayer* nearestFixedPositionLayer() const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_rareAncestorDependentCompositingInputs ? m_rareAncestorDependentCompositingInputs->nearestFixedPositionLayer : nullptr; }
const PaintLayer* scrollParent() const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_rareAncestorDependentCompositingInputs ? m_rareAncestorDependentCompositingInputs->scrollParent : nullptr; }
@@ -689,9 +697,6 @@ private:
void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus();
- // Returns true if the position changed.
- bool updateLayerPosition();
-
void updateLayerPositionRecursive();
void updateLayerPositionsAfterScrollRecursive(const DoubleSize& scrollDelta, bool paintInvalidationContainerWasScrolled);
@@ -748,6 +753,8 @@ private:
// Both updates the status, and returns true if descendants of this have 3d.
bool update3DTransformedDescendantStatus();
+ void removeAncestorOverflowLayer(const PaintLayer* removedLayer);
+
void updateOrRemoveFilterClients();
void updatePaginationRecursive(bool needsPaginationUpdate = false);
@@ -845,6 +852,9 @@ private:
LayoutUnit m_staticInlinePosition;
LayoutUnit m_staticBlockPosition;
+ // The first ancestor having a non visible overflow.
+ const PaintLayer* m_ancestorOverflowLayer;
+
AncestorDependentCompositingInputs m_ancestorDependentCompositingInputs;
OwnPtr<RareAncestorDependentCompositingInputs> m_rareAncestorDependentCompositingInputs;

Powered by Google App Engine
This is Rietveld 408576698