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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutObject.h

Issue 1768493002: Fix SubtreeLayoutScope not to schedule relayout (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: Created 4 years, 9 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) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) 3 * (C) 2000 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 LayoutObject* containerCrossingFrameBoundaries() const; 791 LayoutObject* containerCrossingFrameBoundaries() const;
792 // Finds the container as if this object is fixed-position. 792 // Finds the container as if this object is fixed-position.
793 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* ancestor = nullptr, bool* ancestorSkipped = nullptr) const; 793 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* ancestor = nullptr, bool* ancestorSkipped = nullptr) const;
794 // Finds the containing block as if this object is absolute-position. 794 // Finds the containing block as if this object is absolute-position.
795 LayoutBlock* containingBlockForAbsolutePosition() const; 795 LayoutBlock* containingBlockForAbsolutePosition() const;
796 796
797 virtual LayoutObject* hoverAncestor() const { return parent(); } 797 virtual LayoutObject* hoverAncestor() const { return parent(); }
798 798
799 Element* offsetParent() const; 799 Element* offsetParent() const;
800 800
801 void markContainerChainForLayout(bool scheduleRelayout = true, SubtreeLayout Scope* = nullptr); 801 void markContainerChainForLayout(bool scheduleRelayout = true);
802 void markContainerChainForLayout(SubtreeLayoutScope*);
802 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma rkContainerChain, SubtreeLayoutScope* = nullptr); 803 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma rkContainerChain, SubtreeLayoutScope* = nullptr);
803 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = nullptr); 804 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = nullptr);
804 void clearNeedsLayout(); 805 void clearNeedsLayout();
805 void setChildNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayout Scope* = nullptr); 806 void setChildNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayout Scope* = nullptr);
806 void setNeedsPositionedMovementLayout(); 807 void setNeedsPositionedMovementLayout();
807 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainerChain); 808 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainerChain);
808 void clearPreferredLogicalWidthsDirty(); 809 void clearPreferredLogicalWidthsDirty();
809 810
810 void setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReasonForTracing re ason) 811 void setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReasonForTracing re ason)
811 { 812 {
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 1554
1554 void updateImage(StyleImage*, StyleImage*); 1555 void updateImage(StyleImage*, StyleImage*);
1555 1556
1556 void scheduleRelayout(); 1557 void scheduleRelayout();
1557 1558
1558 void updateShapeImage(const ShapeValue*, const ShapeValue*); 1559 void updateShapeImage(const ShapeValue*, const ShapeValue*);
1559 void updateFillImages(const FillLayer* oldLayers, const FillLayer& newLayers ); 1560 void updateFillImages(const FillLayer* oldLayers, const FillLayer& newLayers );
1560 1561
1561 void setNeedsOverflowRecalcAfterStyleChange(); 1562 void setNeedsOverflowRecalcAfterStyleChange();
1562 1563
1564 void markContainerChainForLayout(bool scheduleRelayout, SubtreeLayoutScope*) ;
1565
1563 // FIXME: This should be 'markContaingBoxChainForOverflowRecalc when we make LayoutBox 1566 // FIXME: This should be 'markContaingBoxChainForOverflowRecalc when we make LayoutBox
1564 // recomputeOverflow-capable. crbug.com/437012 and crbug.com/434700. 1567 // recomputeOverflow-capable. crbug.com/437012 and crbug.com/434700.
1565 inline void markContainingBlocksForOverflowRecalc(); 1568 inline void markContainingBlocksForOverflowRecalc();
1566 1569
1567 inline void markContainerChainForPaintInvalidation(); 1570 inline void markContainerChainForPaintInvalidation();
1568 1571
1569 inline void invalidateSelectionIfNeeded(const LayoutBoxModelObject& paintInv alidationContainer, const PaintInvalidationState&, PaintInvalidationReason); 1572 inline void invalidateSelectionIfNeeded(const LayoutBoxModelObject& paintInv alidationContainer, const PaintInvalidationState&, PaintInvalidationReason);
1570 1573
1571 inline void invalidateContainerPreferredLogicalWidths(); 1574 inline void invalidateContainerPreferredLogicalWidths();
1572 1575
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1960 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout(); 1963 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout();
1961 setSelfNeedsLayout(true); 1964 setSelfNeedsLayout(true);
1962 if (!alreadyNeededLayout) { 1965 if (!alreadyNeededLayout) {
1963 TRACE_EVENT_INSTANT1( 1966 TRACE_EVENT_INSTANT1(
1964 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), 1967 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"),
1965 "LayoutInvalidationTracking", 1968 "LayoutInvalidationTracking",
1966 TRACE_EVENT_SCOPE_THREAD, 1969 TRACE_EVENT_SCOPE_THREAD,
1967 "data", 1970 "data",
1968 InspectorLayoutInvalidationTrackingEvent::data(this, reason)); 1971 InspectorLayoutInvalidationTrackingEvent::data(this, reason));
1969 if (markParents == MarkContainerChain && (!layouter || layouter->root() != this)) 1972 if (markParents == MarkContainerChain && (!layouter || layouter->root() != this))
1970 markContainerChainForLayout(true, layouter); 1973 markContainerChainForLayout(layouter);
1971 } 1974 }
1972 } 1975 }
1973 1976
1974 inline void LayoutObject::setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidat ionReasonForTracing reason, MarkingBehavior markParents, SubtreeLayoutScope* lay outer) 1977 inline void LayoutObject::setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidat ionReasonForTracing reason, MarkingBehavior markParents, SubtreeLayoutScope* lay outer)
1975 { 1978 {
1976 setNeedsLayout(reason, markParents, layouter); 1979 setNeedsLayout(reason, markParents, layouter);
1977 setShouldDoFullPaintInvalidation(); 1980 setShouldDoFullPaintInvalidation();
1978 } 1981 }
1979 1982
1980 inline void LayoutObject::clearNeedsLayout() 1983 inline void LayoutObject::clearNeedsLayout()
(...skipping 16 matching lines...) Expand all
1997 #endif 2000 #endif
1998 } 2001 }
1999 2002
2000 inline void LayoutObject::setChildNeedsLayout(MarkingBehavior markParents, Subtr eeLayoutScope* layouter) 2003 inline void LayoutObject::setChildNeedsLayout(MarkingBehavior markParents, Subtr eeLayoutScope* layouter)
2001 { 2004 {
2002 ASSERT(!isSetNeedsLayoutForbidden()); 2005 ASSERT(!isSetNeedsLayoutForbidden());
2003 bool alreadyNeededLayout = normalChildNeedsLayout(); 2006 bool alreadyNeededLayout = normalChildNeedsLayout();
2004 setNormalChildNeedsLayout(true); 2007 setNormalChildNeedsLayout(true);
2005 // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and rem ove the MarkingBehavior argument entirely. 2008 // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and rem ove the MarkingBehavior argument entirely.
2006 if (!alreadyNeededLayout && markParents == MarkContainerChain && (!layouter || layouter->root() != this)) 2009 if (!alreadyNeededLayout && markParents == MarkContainerChain && (!layouter || layouter->root() != this))
2007 markContainerChainForLayout(true, layouter); 2010 markContainerChainForLayout(layouter);
2008 } 2011 }
2009 2012
2010 inline void LayoutObject::setNeedsPositionedMovementLayout() 2013 inline void LayoutObject::setNeedsPositionedMovementLayout()
2011 { 2014 {
2012 bool alreadyNeededLayout = needsPositionedMovementLayout(); 2015 bool alreadyNeededLayout = needsPositionedMovementLayout();
2013 setNeedsPositionedMovementLayout(true); 2016 setNeedsPositionedMovementLayout(true);
2014 ASSERT(!isSetNeedsLayoutForbidden()); 2017 ASSERT(!isSetNeedsLayoutForbidden());
2015 if (!alreadyNeededLayout) 2018 if (!alreadyNeededLayout)
2016 markContainerChainForLayout(); 2019 markContainerChainForLayout();
2017 } 2020 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2124 void showTree(const blink::LayoutObject*); 2127 void showTree(const blink::LayoutObject*);
2125 void showLineTree(const blink::LayoutObject*); 2128 void showLineTree(const blink::LayoutObject*);
2126 void showLayoutTree(const blink::LayoutObject* object1); 2129 void showLayoutTree(const blink::LayoutObject* object1);
2127 // We don't make object2 an optional parameter so that showLayoutTree 2130 // We don't make object2 an optional parameter so that showLayoutTree
2128 // can be called from gdb easily. 2131 // can be called from gdb easily.
2129 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec t* object2); 2132 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec t* object2);
2130 2133
2131 #endif 2134 #endif
2132 2135
2133 #endif // LayoutObject_h 2136 #endif // LayoutObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698