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

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

Issue 1025213002: Begin tracking why layout is invalidated (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 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 | Annotate | Revision Log
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 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 { 434 {
435 ASSERT(isLayoutInline()); 435 ASSERT(isLayoutInline());
436 m_bitfields.setAlwaysCreateLineBoxesForLayoutInline(alwaysCreateLineBoxe s); 436 m_bitfields.setAlwaysCreateLineBoxesForLayoutInline(alwaysCreateLineBoxe s);
437 } 437 }
438 438
439 bool ancestorLineBoxDirty() const { return m_bitfields.ancestorLineBoxDirty( ); } 439 bool ancestorLineBoxDirty() const { return m_bitfields.ancestorLineBoxDirty( ); }
440 void setAncestorLineBoxDirty(bool value = true) 440 void setAncestorLineBoxDirty(bool value = true)
441 { 441 {
442 m_bitfields.setAncestorLineBoxDirty(value); 442 m_bitfields.setAncestorLineBoxDirty(value);
443 if (value) 443 if (value)
444 setNeedsLayoutAndFullPaintInvalidation(); 444 setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::Lin eBoxesChanged);
445 } 445 }
446 446
447 enum FlowThreadState { 447 enum FlowThreadState {
448 NotInsideFlowThread = 0, 448 NotInsideFlowThread = 0,
449 InsideOutOfFlowThread = 1, 449 InsideOutOfFlowThread = 1,
450 InsideInFlowThread = 2, 450 InsideInFlowThread = 2,
451 }; 451 };
452 452
453 void setFlowThreadStateIncludingDescendants(FlowThreadState); 453 void setFlowThreadStateIncludingDescendants(FlowThreadState);
454 454
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 // If paintInvalidationContainer and paintInvalidationContainerSkipped are n ot null, on return *paintInvalidationContainerSkipped 653 // If paintInvalidationContainer and paintInvalidationContainerSkipped are n ot null, on return *paintInvalidationContainerSkipped
654 // is true if the renderer returned is an ancestor of paintInvalidationConta iner. 654 // is true if the renderer returned is an ancestor of paintInvalidationConta iner.
655 LayoutObject* container(const LayoutBoxModelObject* paintInvalidationContain er = 0, bool* paintInvalidationContainerSkipped = 0) const; 655 LayoutObject* container(const LayoutBoxModelObject* paintInvalidationContain er = 0, bool* paintInvalidationContainerSkipped = 0) const;
656 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* paintInva lidationContainer = 0, bool* paintInvalidationContainerSkipped = 0) const; 656 LayoutBlock* containerForFixedPosition(const LayoutBoxModelObject* paintInva lidationContainer = 0, bool* paintInvalidationContainerSkipped = 0) const;
657 657
658 virtual LayoutObject* hoverAncestor() const { return parent(); } 658 virtual LayoutObject* hoverAncestor() const { return parent(); }
659 659
660 Element* offsetParent() const; 660 Element* offsetParent() const;
661 661
662 void markContainerChainForLayout(bool scheduleRelayout = true, LayoutObject* newRoot = 0, SubtreeLayoutScope* = 0); 662 void markContainerChainForLayout(bool scheduleRelayout = true, LayoutObject* newRoot = 0, SubtreeLayoutScope* = 0);
663 void setNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayoutScope * = 0); 663 void setNeedsLayout(LayoutInvalidationReasonForTracing, MarkingBehavior = Ma rkContainerChain, SubtreeLayoutScope* = 0);
664 void setNeedsLayoutAndFullPaintInvalidation(MarkingBehavior = MarkContainerC hain, SubtreeLayoutScope* = 0); 664 void setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReasonForTraci ng, MarkingBehavior = MarkContainerChain, SubtreeLayoutScope* = 0);
665 void clearNeedsLayout(); 665 void clearNeedsLayout();
666 void setChildNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayout Scope* = 0); 666 void setChildNeedsLayout(MarkingBehavior = MarkContainerChain, SubtreeLayout Scope* = 0);
667 void setNeedsPositionedMovementLayout(); 667 void setNeedsPositionedMovementLayout();
668 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainerChain); 668 void setPreferredLogicalWidthsDirty(MarkingBehavior = MarkContainerChain);
669 void clearPreferredLogicalWidthsDirty(); 669 void clearPreferredLogicalWidthsDirty();
670 void invalidateContainerPreferredLogicalWidths(); 670 void invalidateContainerPreferredLogicalWidths();
671 671
672 void setNeedsLayoutAndPrefWidthsRecalc() 672 void setNeedsLayoutAndPrefWidthsRecalc(LayoutInvalidationReasonForTracing re ason)
673 { 673 {
674 setNeedsLayout(); 674 setNeedsLayout(reason);
675 setPreferredLogicalWidthsDirty(); 675 setPreferredLogicalWidthsDirty();
676 } 676 }
677 void setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation() 677 void setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation(LayoutInvalid ationReasonForTracing reason)
678 { 678 {
679 setNeedsLayoutAndFullPaintInvalidation(); 679 setNeedsLayoutAndFullPaintInvalidation(reason);
680 setPreferredLogicalWidthsDirty(); 680 setPreferredLogicalWidthsDirty();
681 } 681 }
682 682
683 void setPositionState(EPosition position) 683 void setPositionState(EPosition position)
684 { 684 {
685 ASSERT((position != AbsolutePosition && position != FixedPosition) || is Box()); 685 ASSERT((position != AbsolutePosition && position != FixedPosition) || is Box());
686 m_bitfields.setPositionedState(position); 686 m_bitfields.setPositionedState(position);
687 } 687 }
688 void clearPositionedState() { m_bitfields.clearPositionedState(); } 688 void clearPositionedState() { m_bitfields.clearPositionedState(); }
689 689
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
1489 return true; 1489 return true;
1490 } 1490 }
1491 1491
1492 inline bool LayoutObject::isBeforeOrAfterContent() const 1492 inline bool LayoutObject::isBeforeOrAfterContent() const
1493 { 1493 {
1494 return isBeforeContent() || isAfterContent(); 1494 return isBeforeContent() || isAfterContent();
1495 } 1495 }
1496 1496
1497 // setNeedsLayout() won't cause full paint invalidations as 1497 // setNeedsLayout() won't cause full paint invalidations as
1498 // setNeedsLayoutAndFullPaintInvalidation() does. Otherwise the two methods are identical. 1498 // setNeedsLayoutAndFullPaintInvalidation() does. Otherwise the two methods are identical.
1499 inline void LayoutObject::setNeedsLayout(MarkingBehavior markParents, SubtreeLay outScope* layouter) 1499 inline void LayoutObject::setNeedsLayout(LayoutInvalidationReasonForTracing reas on, MarkingBehavior markParents, SubtreeLayoutScope* layouter)
1500 { 1500 {
1501 TRACE_EVENT_INSTANT1( 1501 TRACE_EVENT_INSTANT1(
1502 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), 1502 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"),
1503 "LayoutInvalidationTracking", 1503 "LayoutInvalidationTracking",
1504 "data", 1504 "data",
1505 InspectorLayoutInvalidationTrackingEvent::data(this)); 1505 InspectorLayoutInvalidationTrackingEvent::data(this, reason));
1506 ASSERT(!isSetNeedsLayoutForbidden()); 1506 ASSERT(!isSetNeedsLayoutForbidden());
1507 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout(); 1507 bool alreadyNeededLayout = m_bitfields.selfNeedsLayout();
1508 setSelfNeedsLayout(true); 1508 setSelfNeedsLayout(true);
1509 if (!alreadyNeededLayout) { 1509 if (!alreadyNeededLayout) {
1510 if (markParents == MarkContainerChain && (!layouter || layouter->root() != this)) 1510 if (markParents == MarkContainerChain && (!layouter || layouter->root() != this))
1511 markContainerChainForLayout(true, 0, layouter); 1511 markContainerChainForLayout(true, 0, layouter);
1512 } 1512 }
1513 } 1513 }
1514 1514
1515 inline void LayoutObject::setNeedsLayoutAndFullPaintInvalidation(MarkingBehavior markParents, SubtreeLayoutScope* layouter) 1515 inline void LayoutObject::setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidat ionReasonForTracing reason, MarkingBehavior markParents, SubtreeLayoutScope* lay outer)
1516 { 1516 {
1517 setNeedsLayout(markParents, layouter); 1517 setNeedsLayout(reason, markParents, layouter);
1518 setShouldDoFullPaintInvalidation(); 1518 setShouldDoFullPaintInvalidation();
1519 } 1519 }
1520 1520
1521 inline void LayoutObject::clearNeedsLayout() 1521 inline void LayoutObject::clearNeedsLayout()
1522 { 1522 {
1523 setNeededLayoutBecauseOfChildren(needsLayoutBecauseOfChildren()); 1523 setNeededLayoutBecauseOfChildren(needsLayoutBecauseOfChildren());
1524 setLayoutDidGetCalledSinceLastFrame(); 1524 setLayoutDidGetCalledSinceLastFrame();
1525 setSelfNeedsLayout(false); 1525 setSelfNeedsLayout(false);
1526 setEverHadLayout(true); 1526 setEverHadLayout(true);
1527 setPosChildNeedsLayout(false); 1527 setPosChildNeedsLayout(false);
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 void showTree(const blink::LayoutObject*); 1661 void showTree(const blink::LayoutObject*);
1662 void showLineTree(const blink::LayoutObject*); 1662 void showLineTree(const blink::LayoutObject*);
1663 void showLayoutTree(const blink::LayoutObject* object1); 1663 void showLayoutTree(const blink::LayoutObject* object1);
1664 // We don't make object2 an optional parameter so that showLayoutTree 1664 // We don't make object2 an optional parameter so that showLayoutTree
1665 // can be called from gdb easily. 1665 // can be called from gdb easily.
1666 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec t* object2); 1666 void showLayoutTree(const blink::LayoutObject* object1, const blink::LayoutObjec t* object2);
1667 1667
1668 #endif 1668 #endif
1669 1669
1670 #endif // LayoutObject_h 1670 #endif // LayoutObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698