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

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

Issue 1933153002: Move self-collapse checking to LayoutBlockFlow and cache it completely. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: The winbots had a point. How do you like this, then, winbots? bool bitfields would probably look ev… Created 4 years, 7 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/LayoutBlock.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r ights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r ights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 void makeChildrenNonInline(LayoutObject* insertionPoint = nullptr); 398 void makeChildrenNonInline(LayoutObject* insertionPoint = nullptr);
399 399
400 virtual void removeLeftoverAnonymousBlock(LayoutBlock* child); 400 virtual void removeLeftoverAnonymousBlock(LayoutBlock* child);
401 401
402 void makeChildrenInlineIfPossible(); 402 void makeChildrenInlineIfPossible();
403 403
404 void dirtyLinesFromChangedChild(LayoutObject* child) final { m_lineBoxes.dir tyLinesFromChangedChild(LineLayoutItem(this), LineLayoutItem(child)); } 404 void dirtyLinesFromChangedChild(LayoutObject* child) final { m_lineBoxes.dir tyLinesFromChangedChild(LineLayoutItem(this), LineLayoutItem(child)); }
405 405
406 void addChildIgnoringContinuation(LayoutObject* newChild, LayoutObject* befo reChild) override; 406 void addChildIgnoringContinuation(LayoutObject* newChild, LayoutObject* befo reChild) override;
407 407
408 bool isSelfCollapsingBlock() const override;
409
410 TrackedLayoutBoxListHashSet* positionedObjectsInternal() const; 408 TrackedLayoutBoxListHashSet* positionedObjectsInternal() const;
411 TrackedLayoutBoxListHashSet* percentHeightDescendantsInternal() const; 409 TrackedLayoutBoxListHashSet* percentHeightDescendantsInternal() const;
412 410
413 Node* nodeForHitTest() const; 411 Node* nodeForHitTest() const;
414 412
415 // Returns true if the positioned movement-only layout succeeded. 413 // Returns true if the positioned movement-only layout succeeded.
416 bool tryLayoutDoingPositionedMovementOnly(); 414 bool tryLayoutDoingPositionedMovementOnly();
417 415
418 bool avoidsFloats() const override { return true; } 416 bool avoidsFloats() const override { return true; }
419 417
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 494
497 LayoutObjectChildList m_children; 495 LayoutObjectChildList m_children;
498 LineBoxList m_lineBoxes; // All of the root line boxes created for this bloc k flow. For example, <div>Hello<br>world.</div> will have two total lines for t he <div>. 496 LineBoxList m_lineBoxes; // All of the root line boxes created for this bloc k flow. For example, <div>Hello<br>world.</div> will have two total lines for t he <div>.
499 497
500 unsigned m_hasMarginBeforeQuirk : 1; // Note these quirk values can't be put in LayoutBlockRareData since they are set too frequently. 498 unsigned m_hasMarginBeforeQuirk : 1; // Note these quirk values can't be put in LayoutBlockRareData since they are set too frequently.
501 unsigned m_hasMarginAfterQuirk : 1; 499 unsigned m_hasMarginAfterQuirk : 1;
502 unsigned m_beingDestroyed : 1; 500 unsigned m_beingDestroyed : 1;
503 unsigned m_hasMarkupTruncation : 1; 501 unsigned m_hasMarkupTruncation : 1;
504 unsigned m_widthAvailableToChildrenChanged : 1; 502 unsigned m_widthAvailableToChildrenChanged : 1;
505 unsigned m_heightAvailableToChildrenChanged : 1; 503 unsigned m_heightAvailableToChildrenChanged : 1;
506 mutable unsigned m_hasOnlySelfCollapsingChildren : 1; 504 unsigned m_isSelfCollapsing : 1; // True if margin-before and margin-after a re adjoining.
507 mutable unsigned m_descendantsWithFloatsMarkedForLayout : 1; 505 mutable unsigned m_descendantsWithFloatsMarkedForLayout : 1;
508 506
509 unsigned m_hasPositionedObjects : 1; 507 unsigned m_hasPositionedObjects : 1;
510 unsigned m_hasPercentHeightDescendants : 1; 508 unsigned m_hasPercentHeightDescendants : 1;
511 509
512 // LayoutRubyBase objects need to be able to split and merge, moving their c hildren around 510 // LayoutRubyBase objects need to be able to split and merge, moving their c hildren around
513 // (calling moveChildTo, moveAllChildrenTo, and makeChildrenNonInline). 511 // (calling moveChildTo, moveAllChildrenTo, and makeChildrenNonInline).
514 friend class LayoutRubyBase; 512 friend class LayoutRubyBase;
515 // FIXME-BLOCKFLOW: Remove this when the line layout stuff has all moved out of LayoutBlock 513 // FIXME-BLOCKFLOW: Remove this when the line layout stuff has all moved out of LayoutBlock
516 friend class LineBreaker; 514 friend class LineBreaker;
517 515
518 // FIXME: This is temporary as we move code that accesses block flow 516 // FIXME: This is temporary as we move code that accesses block flow
519 // member variables out of LayoutBlock and into LayoutBlockFlow. 517 // member variables out of LayoutBlock and into LayoutBlockFlow.
520 friend class LayoutBlockFlow; 518 friend class LayoutBlockFlow;
521 }; 519 };
522 520
523 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutBlock, isLayoutBlock()); 521 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutBlock, isLayoutBlock());
524 522
525 } // namespace blink 523 } // namespace blink
526 524
527 #endif // LayoutBlock_h 525 #endif // LayoutBlock_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/LayoutBlock.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698