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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.h

Issue 1308273010: Adapt and reland old position sticky implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Force main thread scrolling, set experimental status, and address review comments. Created 5 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. 3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 LayoutRect rect() const { return LayoutRect(location(), LayoutSize(size())); } 212 LayoutRect rect() const { return LayoutRect(location(), LayoutSize(size())); }
213 213
214 bool isRootLayer() const { return m_isRootLayer; } 214 bool isRootLayer() const { return m_isRootLayer; }
215 215
216 PaintLayerCompositor* compositor() const; 216 PaintLayerCompositor* compositor() const;
217 217
218 // Notification from the layoutObject that its content changed (e.g. current frame of image changed). 218 // Notification from the layoutObject that its content changed (e.g. current frame of image changed).
219 // Allows updates of layer content without invalidating paint. 219 // Allows updates of layer content without invalidating paint.
220 void contentChanged(ContentChangeType); 220 void contentChanged(ContentChangeType);
221 221
222 // Returns true if the position changed.
223 bool updateLayerPosition();
chrishtr 2015/12/11 02:06:12 It appears no one cares about the return value of
flackr 2016/01/19 15:40:48 Done.
224
222 void updateLayerPositionsAfterLayout(); 225 void updateLayerPositionsAfterLayout();
223 void updateLayerPositionsAfterOverflowScroll(const DoubleSize& scrollDelta); 226 void updateLayerPositionsAfterOverflowScroll(const DoubleSize& scrollDelta);
224 227
225 PaintLayer* enclosingPaginationLayer() const { return m_enclosingPaginationL ayer; } 228 PaintLayer* enclosingPaginationLayer() const { return m_enclosingPaginationL ayer; }
226 229
227 void updateTransformationMatrix(); 230 void updateTransformationMatrix();
228 PaintLayer* renderingContextRoot(); 231 PaintLayer* renderingContextRoot();
229 232
230 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow Position; } 233 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow Position; }
231 234
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 // While we're updating the compositing inputs, these values may differ. 536 // While we're updating the compositing inputs, these values may differ.
534 // We should never be asking for this value when that is the case. 537 // We should never be asking for this value when that is the case.
535 ASSERT(m_needsDescendantDependentCompositingInputsUpdate == m_needsAnces torDependentCompositingInputsUpdate); 538 ASSERT(m_needsDescendantDependentCompositingInputsUpdate == m_needsAnces torDependentCompositingInputsUpdate);
536 return m_needsDescendantDependentCompositingInputsUpdate; 539 return m_needsDescendantDependentCompositingInputsUpdate;
537 } 540 }
538 541
539 void updateAncestorDependentCompositingInputs(const AncestorDependentComposi tingInputs&); 542 void updateAncestorDependentCompositingInputs(const AncestorDependentComposi tingInputs&);
540 void updateDescendantDependentCompositingInputs(const DescendantDependentCom positingInputs&); 543 void updateDescendantDependentCompositingInputs(const DescendantDependentCom positingInputs&);
541 void didUpdateCompositingInputs(); 544 void didUpdateCompositingInputs();
542 545
543 const AncestorDependentCompositingInputs& ancestorDependentCompositingInputs () const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_an cestorDependentCompositingInputs; } 546 const AncestorDependentCompositingInputs& ancestorDependentCompositingInputs () const
547 {
548 // TODO(flackr): When we process scroll updates after compositing update s we won't be querying ancestor
549 // dependent compositing inputs while they're still needed: http://crbug .com/420741.
550 ASSERT(isAllowedToQueryCompositingState() || !m_needsAncestorDependentCo mpositingInputsUpdate);
551 return m_ancestorDependentCompositingInputs;
552 }
544 const DescendantDependentCompositingInputs& descendantDependentCompositingIn puts() const { ASSERT(!m_needsDescendantDependentCompositingInputsUpdate); retur n m_descendantDependentCompositingInputs; } 553 const DescendantDependentCompositingInputs& descendantDependentCompositingIn puts() const { ASSERT(!m_needsDescendantDependentCompositingInputsUpdate); retur n m_descendantDependentCompositingInputs; }
545 554
546 IntRect clippedAbsoluteBoundingBox() const { return ancestorDependentComposi tingInputs().clippedAbsoluteBoundingBox; } 555 IntRect clippedAbsoluteBoundingBox() const { return ancestorDependentComposi tingInputs().clippedAbsoluteBoundingBox; }
547 const PaintLayer* opacityAncestor() const { return ancestorDependentComposit ingInputs().opacityAncestor; } 556 const PaintLayer* opacityAncestor() const { return ancestorDependentComposit ingInputs().opacityAncestor; }
548 const PaintLayer* transformAncestor() const { return ancestorDependentCompos itingInputs().transformAncestor; } 557 const PaintLayer* transformAncestor() const { return ancestorDependentCompos itingInputs().transformAncestor; }
549 const PaintLayer* filterAncestor() const { return ancestorDependentCompositi ngInputs().filterAncestor; } 558 const PaintLayer* filterAncestor() const { return ancestorDependentCompositi ngInputs().filterAncestor; }
550 const LayoutObject* clippingContainer() const { return ancestorDependentComp ositingInputs().clippingContainer; } 559 const LayoutObject* clippingContainer() const { return ancestorDependentComp ositingInputs().clippingContainer; }
551 const PaintLayer* ancestorScrollingLayer() const { return ancestorDependentC ompositingInputs().ancestorScrollingLayer; } 560 const PaintLayer* ancestorScrollingLayer() const { return ancestorDependentC ompositingInputs().ancestorScrollingLayer; }
552 const PaintLayer* nearestFixedPositionLayer() const { return ancestorDepende ntCompositingInputs().nearestFixedPositionLayer; } 561 const PaintLayer* nearestFixedPositionLayer() const { return ancestorDepende ntCompositingInputs().nearestFixedPositionLayer; }
553 PaintLayer* scrollParent() const { return const_cast<PaintLayer*>(ancestorDe pendentCompositingInputs().scrollParent); } 562 PaintLayer* scrollParent() const { return const_cast<PaintLayer*>(ancestorDe pendentCompositingInputs().scrollParent); }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 PaintTiming* paintTiming(); 630 PaintTiming* paintTiming();
622 631
623 private: 632 private:
624 // Bounding box in the coordinates of this layer. 633 // Bounding box in the coordinates of this layer.
625 LayoutRect logicalBoundingBox() const; 634 LayoutRect logicalBoundingBox() const;
626 635
627 bool hasOverflowControls() const; 636 bool hasOverflowControls() const;
628 637
629 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); 638 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus();
630 639
631 // Returns true if the position changed.
632 bool updateLayerPosition();
633
634 void updateLayerPositionRecursive(); 640 void updateLayerPositionRecursive();
635 void updateLayerPositionsAfterScrollRecursive(const DoubleSize& scrollDelta, bool paintInvalidationContainerWasScrolled); 641 void updateLayerPositionsAfterScrollRecursive(const DoubleSize& scrollDelta, bool paintInvalidationContainerWasScrolled);
636 642
637 void setNextSibling(PaintLayer* next) { m_next = next; } 643 void setNextSibling(PaintLayer* next) { m_next = next; }
638 void setPreviousSibling(PaintLayer* prev) { m_previous = prev; } 644 void setPreviousSibling(PaintLayer* prev) { m_previous = prev; }
639 void setFirstChild(PaintLayer* first) { m_first = first; } 645 void setFirstChild(PaintLayer* first) { m_first = first; }
640 void setLastChild(PaintLayer* last) { m_last = last; } 646 void setLastChild(PaintLayer* last) { m_last = last; }
641 647
642 void updateHasSelfPaintingLayerDescendant() const; 648 void updateHasSelfPaintingLayerDescendant() const;
643 PaintLayer* hitTestLayer(PaintLayer* rootLayer, PaintLayer* containerLayer, HitTestResult&, 649 PaintLayer* hitTestLayer(PaintLayer* rootLayer, PaintLayer* containerLayer, HitTestResult&,
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 819
814 } // namespace blink 820 } // namespace blink
815 821
816 #ifndef NDEBUG 822 #ifndef NDEBUG
817 // Outside the WebCore namespace for ease of invocation from gdb. 823 // Outside the WebCore namespace for ease of invocation from gdb.
818 void showLayerTree(const blink::PaintLayer*); 824 void showLayerTree(const blink::PaintLayer*);
819 void showLayerTree(const blink::LayoutObject*); 825 void showLayerTree(const blink::LayoutObject*);
820 #endif 826 #endif
821 827
822 #endif // Layer_h 828 #endif // Layer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698