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

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: Merge with master and skip anonymous containing blocks for sticky container. Created 4 years, 10 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 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 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 LayoutRect rect() const { return LayoutRect(location(), LayoutSize(size())); } 215 LayoutRect rect() const { return LayoutRect(location(), LayoutSize(size())); }
216 216
217 bool isRootLayer() const { return m_isRootLayer; } 217 bool isRootLayer() const { return m_isRootLayer; }
218 218
219 PaintLayerCompositor* compositor() const; 219 PaintLayerCompositor* compositor() const;
220 220
221 // Notification from the layoutObject that its content changed (e.g. current frame of image changed). 221 // Notification from the layoutObject that its content changed (e.g. current frame of image changed).
222 // Allows updates of layer content without invalidating paint. 222 // Allows updates of layer content without invalidating paint.
223 void contentChanged(ContentChangeType); 223 void contentChanged(ContentChangeType);
224 224
225 void updateLayerPosition();
226
225 void updateLayerPositionsAfterLayout(); 227 void updateLayerPositionsAfterLayout();
226 void updateLayerPositionsAfterOverflowScroll(const DoubleSize& scrollDelta); 228 void updateLayerPositionsAfterOverflowScroll(const DoubleSize& scrollDelta);
227 229
228 PaintLayer* enclosingPaginationLayer() const { return m_enclosingPaginationL ayer; } 230 PaintLayer* enclosingPaginationLayer() const { return m_enclosingPaginationL ayer; }
229 231
230 void updateTransformationMatrix(); 232 void updateTransformationMatrix();
231 PaintLayer* renderingContextRoot(); 233 PaintLayer* renderingContextRoot();
232 234
233 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow Position; } 235 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow Position; }
234 236
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 // While we're updating the compositing inputs, these values may differ. 528 // While we're updating the compositing inputs, these values may differ.
527 // We should never be asking for this value when that is the case. 529 // We should never be asking for this value when that is the case.
528 ASSERT(m_needsDescendantDependentCompositingInputsUpdate == m_needsAnces torDependentCompositingInputsUpdate); 530 ASSERT(m_needsDescendantDependentCompositingInputsUpdate == m_needsAnces torDependentCompositingInputsUpdate);
529 return m_needsDescendantDependentCompositingInputsUpdate; 531 return m_needsDescendantDependentCompositingInputsUpdate;
530 } 532 }
531 533
532 void updateAncestorDependentCompositingInputs(const AncestorDependentComposi tingInputs&); 534 void updateAncestorDependentCompositingInputs(const AncestorDependentComposi tingInputs&);
533 void updateDescendantDependentCompositingInputs(const DescendantDependentCom positingInputs&); 535 void updateDescendantDependentCompositingInputs(const DescendantDependentCom positingInputs&);
534 void didUpdateCompositingInputs(); 536 void didUpdateCompositingInputs();
535 537
536 const AncestorDependentCompositingInputs& ancestorDependentCompositingInputs () const { ASSERT(!m_needsAncestorDependentCompositingInputsUpdate); return m_an cestorDependentCompositingInputs; } 538 const AncestorDependentCompositingInputs& ancestorDependentCompositingInputs () const
539 {
540 // TODO(flackr): When we process scroll updates after compositing update s we won't be querying ancestor
541 // dependent compositing inputs while they're still needed: http://crbug .com/420741.
542 ASSERT(isAllowedToQueryCompositingState() || !m_needsAncestorDependentCo mpositingInputsUpdate);
543 return m_ancestorDependentCompositingInputs;
544 }
537 const DescendantDependentCompositingInputs& descendantDependentCompositingIn puts() const { ASSERT(!m_needsDescendantDependentCompositingInputsUpdate); retur n m_descendantDependentCompositingInputs; } 545 const DescendantDependentCompositingInputs& descendantDependentCompositingIn puts() const { ASSERT(!m_needsDescendantDependentCompositingInputsUpdate); retur n m_descendantDependentCompositingInputs; }
538 546
539 IntRect clippedAbsoluteBoundingBox() const { return ancestorDependentComposi tingInputs().clippedAbsoluteBoundingBox; } 547 IntRect clippedAbsoluteBoundingBox() const { return ancestorDependentComposi tingInputs().clippedAbsoluteBoundingBox; }
540 const PaintLayer* opacityAncestor() const { return ancestorDependentComposit ingInputs().opacityAncestor; } 548 const PaintLayer* opacityAncestor() const { return ancestorDependentComposit ingInputs().opacityAncestor; }
541 const PaintLayer* transformAncestor() const { return ancestorDependentCompos itingInputs().transformAncestor; } 549 const PaintLayer* transformAncestor() const { return ancestorDependentCompos itingInputs().transformAncestor; }
542 const PaintLayer* filterAncestor() const { return ancestorDependentCompositi ngInputs().filterAncestor; } 550 const PaintLayer* filterAncestor() const { return ancestorDependentCompositi ngInputs().filterAncestor; }
543 const LayoutObject* clippingContainer() const { return ancestorDependentComp ositingInputs().clippingContainer; } 551 const LayoutObject* clippingContainer() const { return ancestorDependentComp ositingInputs().clippingContainer; }
544 const PaintLayer* ancestorScrollingLayer() const { return ancestorDependentC ompositingInputs().ancestorScrollingLayer; } 552 const PaintLayer* ancestorScrollingLayer() const { return ancestorDependentC ompositingInputs().ancestorScrollingLayer; }
545 const PaintLayer* nearestFixedPositionLayer() const { return ancestorDepende ntCompositingInputs().nearestFixedPositionLayer; } 553 const PaintLayer* nearestFixedPositionLayer() const { return ancestorDepende ntCompositingInputs().nearestFixedPositionLayer; }
546 PaintLayer* scrollParent() const { return const_cast<PaintLayer*>(ancestorDe pendentCompositingInputs().scrollParent); } 554 PaintLayer* scrollParent() const { return const_cast<PaintLayer*>(ancestorDe pendentCompositingInputs().scrollParent); }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 PaintTiming* paintTiming(); 637 PaintTiming* paintTiming();
630 638
631 private: 639 private:
632 // Bounding box in the coordinates of this layer. 640 // Bounding box in the coordinates of this layer.
633 LayoutRect logicalBoundingBox() const; 641 LayoutRect logicalBoundingBox() const;
634 642
635 bool hasOverflowControls() const; 643 bool hasOverflowControls() const;
636 644
637 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); 645 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus();
638 646
639 // Returns true if the position changed.
640 bool updateLayerPosition();
641
642 void updateLayerPositionRecursive(); 647 void updateLayerPositionRecursive();
643 void updateLayerPositionsAfterScrollRecursive(const DoubleSize& scrollDelta, bool paintInvalidationContainerWasScrolled); 648 void updateLayerPositionsAfterScrollRecursive(const DoubleSize& scrollDelta, bool paintInvalidationContainerWasScrolled);
644 649
645 void setNextSibling(PaintLayer* next) { m_next = next; } 650 void setNextSibling(PaintLayer* next) { m_next = next; }
646 void setPreviousSibling(PaintLayer* prev) { m_previous = prev; } 651 void setPreviousSibling(PaintLayer* prev) { m_previous = prev; }
647 void setFirstChild(PaintLayer* first) { m_first = first; } 652 void setFirstChild(PaintLayer* first) { m_first = first; }
648 void setLastChild(PaintLayer* last) { m_last = last; } 653 void setLastChild(PaintLayer* last) { m_last = last; }
649 654
650 void updateHasSelfPaintingLayerDescendant() const; 655 void updateHasSelfPaintingLayerDescendant() const;
651 PaintLayer* hitTestLayer(PaintLayer* rootLayer, PaintLayer* containerLayer, HitTestResult&, 656 PaintLayer* hitTestLayer(PaintLayer* rootLayer, PaintLayer* containerLayer, HitTestResult&,
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 831
827 } // namespace blink 832 } // namespace blink
828 833
829 #ifndef NDEBUG 834 #ifndef NDEBUG
830 // Outside the WebCore namespace for ease of invocation from gdb. 835 // Outside the WebCore namespace for ease of invocation from gdb.
831 void showLayerTree(const blink::PaintLayer*); 836 void showLayerTree(const blink::PaintLayer*);
832 void showLayerTree(const blink::LayoutObject*); 837 void showLayerTree(const blink::LayoutObject*);
833 #endif 838 #endif
834 839
835 #endif // Layer_h 840 #endif // Layer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698