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

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

Issue 1763343002: Fix SubtreeLayoutScope not to schedule relayout (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2623
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 770 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 LayoutObject* containerCrossingFrameBoundaries() const; 781 LayoutObject* containerCrossingFrameBoundaries() const;
782 // Finds the container as if this object is fixed-position. 782 // Finds the container as if this object is fixed-position.
783 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* ancestor = nullptr, bool* ancestorSkipped = nullptr) const; 783 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* ancestor = nullptr, bool* ancestorSkipped = nullptr) const;
784 // Finds the containing block as if this object is absolute-position. 784 // Finds the containing block as if this object is absolute-position.
785 LayoutBlock* containingBlockForAbsolutePosition() const; 785 LayoutBlock* containingBlockForAbsolutePosition() const;
786 786
787 virtual LayoutObject* hoverAncestor() const { return parent(); } 787 virtual LayoutObject* hoverAncestor() const { return parent(); }
788 788
789 Element* offsetParent() const; 789 Element* offsetParent() const;
790 790
791 void markContainerChainForLayout(bool scheduleRelayout = true, SubtreeLayout Scope* = nullptr); 791 void markContainerChainForLayout(bool scheduleRelayout = true);
792 void markContainerChainForLayout(SubtreeLayoutScope*);
792 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma rkContainerChain, SubtreeLayoutScope* = nullptr); 793 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma rkContainerChain, SubtreeLayoutScope* = nullptr);
793 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = nullptr); 794 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = nullptr);
794 void clearNeedsLayout(); 795 void clearNeedsLayout();
795 void setChildNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayout Scope* = nullptr); 796 void setChildNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayout Scope* = nullptr);
796 void setNeedsPositionedMovementLayout(); 797 void setNeedsPositionedMovementLayout();
797 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainerChain); 798 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainerChain);
798 void clearPreferredLogicalWidthsDirty(); 799 void clearPreferredLogicalWidthsDirty();
799 800
800 void setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReasonForTracing re ason) 801 void setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReasonForTracing re ason)
801 { 802 {
(...skipping 723 matching lines...) Expand 10 before | Expand all | Expand 10 after
1525 1526
1526 void updateImage(StyleImage*, StyleImage*); 1527 void updateImage(StyleImage*, StyleImage*);
1527 1528
1528 void scheduleRelayout(); 1529 void scheduleRelayout();
1529 1530
1530 void updateShapeImage(const ShapeValue*, const ShapeValue*); 1531 void updateShapeImage(const ShapeValue*, const ShapeValue*);
1531 void updateFillImages(const FillLayer* oldLayers, const FillLayer& newLayers ); 1532 void updateFillImages(const FillLayer* oldLayers, const FillLayer& newLayers );
1532 1533
1533 void setNeedsOverflowRecalcAfterStyleChange(); 1534 void setNeedsOverflowRecalcAfterStyleChange();
1534 1535
1536 void markContainerChainForLayout(bool scheduleRelayout, SubtreeLayoutScope*) ;
1537
1535 // FIXME: This should be 'markContaingBoxChainForOverflowRecalc when we make LayoutBox 1538 // FIXME: This should be 'markContaingBoxChainForOverflowRecalc when we make LayoutBox
1536 // recomputeOverflow-capable. crbug.com/437012 and crbug.com/434700. 1539 // recomputeOverflow-capable. crbug.com/437012 and crbug.com/434700.
1537 inline void markContainingBlocksForOverflowRecalc(); 1540 inline void markContainingBlocksForOverflowRecalc();
1538 1541
1539 inline void markContainerChainForPaintInvalidation(); 1542 inline void markContainerChainForPaintInvalidation();
1540 1543
1541 inline void invalidateSelectionIfNeeded(const LayoutBoxModelObject&, PaintIn validationReason); 1544 inline void invalidateSelectionIfNeeded(const LayoutBoxModelObject&, PaintIn validationReason);
1542 1545
1543 inline void invalidateContainerPreferredLogicalWidths(); 1546 inline void invalidateContainerPreferredLogicalWidths();
1544 1547
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1928 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout(); 1931 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout();
1929 setSelfNeedsLayout(true); 1932 setSelfNeedsLayout(true);
1930 if (!alreadyNeededLayout) { 1933 if (!alreadyNeededLayout) {
1931 TRACE_EVENT_INSTANT1( 1934 TRACE_EVENT_INSTANT1(
1932 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), 1935 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"),
1933 "LayoutInvalidationTracking", 1936 "LayoutInvalidationTracking",
1934 TRACE_EVENT_SCOPE_THREAD, 1937 TRACE_EVENT_SCOPE_THREAD,
1935 "data", 1938 "data",
1936 InspectorLayoutInvalidationTrackingEvent::data(this, reason)); 1939 InspectorLayoutInvalidationTrackingEvent::data(this, reason));
1937 if (markParents == MarkContainerChain && (!layouter || layouter->root() != this)) 1940 if (markParents == MarkContainerChain && (!layouter || layouter->root() != this))
1938 markContainerChainForLayout(true, layouter); 1941 markContainerChainForLayout(layouter);
1939 } 1942 }
1940 } 1943 }
1941 1944
1942 inline void LayoutObject::setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidat ionReasonForTracing reason, MarkingBehavior markParents, SubtreeLayoutScope* lay outer) 1945 inline void LayoutObject::setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidat ionReasonForTracing reason, MarkingBehavior markParents, SubtreeLayoutScope* lay outer)
1943 { 1946 {
1944 setNeedsLayout(reason, markParents, layouter); 1947 setNeedsLayout(reason, markParents, layouter);
1945 setShouldDoFullPaintInvalidation(); 1948 setShouldDoFullPaintInvalidation();
1946 } 1949 }
1947 1950
1948 inline void LayoutObject::clearNeedsLayout() 1951 inline void LayoutObject::clearNeedsLayout()
(...skipping 16 matching lines...) Expand all
1965 #endif 1968 #endif
1966 } 1969 }
1967 1970
1968 inline void LayoutObject::setChildNeedsLayout(MarkingBehavior markParents, Subtr eeLayoutScope* layouter) 1971 inline void LayoutObject::setChildNeedsLayout(MarkingBehavior markParents, Subtr eeLayoutScope* layouter)
1969 { 1972 {
1970 ASSERT(!isSetNeedsLayoutForbidden()); 1973 ASSERT(!isSetNeedsLayoutForbidden());
1971 bool alreadyNeededLayout = normalChildNeedsLayout(); 1974 bool alreadyNeededLayout = normalChildNeedsLayout();
1972 setNormalChildNeedsLayout(true); 1975 setNormalChildNeedsLayout(true);
1973 // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and rem ove the MarkingBehavior argument entirely. 1976 // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and rem ove the MarkingBehavior argument entirely.
1974 if (!alreadyNeededLayout && markParents == MarkContainerChain && (!layouter || layouter->root() != this)) 1977 if (!alreadyNeededLayout && markParents == MarkContainerChain && (!layouter || layouter->root() != this))
1975 markContainerChainForLayout(true, layouter); 1978 markContainerChainForLayout(layouter);
1976 } 1979 }
1977 1980
1978 inline void LayoutObject::setNeedsPositionedMovementLayout() 1981 inline void LayoutObject::setNeedsPositionedMovementLayout()
1979 { 1982 {
1980 bool alreadyNeededLayout = needsPositionedMovementLayout(); 1983 bool alreadyNeededLayout = needsPositionedMovementLayout();
1981 setNeedsPositionedMovementLayout(true); 1984 setNeedsPositionedMovementLayout(true);
1982 ASSERT(!isSetNeedsLayoutForbidden()); 1985 ASSERT(!isSetNeedsLayoutForbidden());
1983 if (!alreadyNeededLayout) 1986 if (!alreadyNeededLayout)
1984 markContainerChainForLayout(); 1987 markContainerChainForLayout();
1985 } 1988 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2092 void showTree(const blink::LayoutObject*); 2095 void showTree(const blink::LayoutObject*);
2093 void showLineTree(const blink::LayoutObject*); 2096 void showLineTree(const blink::LayoutObject*);
2094 void showLayoutTree(const blink::LayoutObject* object1); 2097 void showLayoutTree(const blink::LayoutObject* object1);
2095 // We don't make object2 an optional parameter so that showLayoutTree 2098 // We don't make object2 an optional parameter so that showLayoutTree
2096 // can be called from gdb easily. 2099 // can be called from gdb easily.
2097 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec t* object2); 2100 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec t* object2);
2098 2101
2099 #endif 2102 #endif
2100 2103
2101 #endif // LayoutObject_h 2104 #endif // LayoutObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698